Reolink CX810 i Home Assistant — Nummerpladegenkendelse og TV-snapshots
Hvordan jeg fik et Reolink CX810 4K PoE kamera til at læse nummerplader med AI og sende et snapshot direkte til TV'et når nogen kører ind i indkørslen.
Vi har aldrig fået installeret en dørklokke med kamera. Reolink CX810 der peger ned mod indkørslen endte med at gøre mere end nogen dørklokke ville have gjort — uden abonnement, uden app, og med TV’et som notifikationsskærm i stedet for en telefon man måske ikke kigger på.
Kameraet
CX810 er et 4K 8MP PoE kamera. Det kører på et dedikeret VLAN, taler med HA over det lokale netværk, og dukker op som camera.sentinel_clear (fuld opløsning) og camera.sentinel_fluent (lavere opløsning, hurtigere). Kameraets eget AI-chip giver binære sensorer direkte:
binary_sensor.sentinel_vehicle
binary_sensor.sentinel_person
binary_sensor.sentinel_motion
Bil- og persondetektion fra kameraets eget chip er god nok til at filtrere de åbenlyse falske positiver fra — fugle, skygger, katten. Ikke perfekt, men det er det rette udgangspunkt.
Nummerpladegenkendelse
Når en bil udløser sensoren, venter automationen 2 sekunder — nok til at bilen kan køre ind og en nummerplade er synlig — tager derefter et snapshot og sender det til llmvision.image_analyzer med en meget kort, specifik prompt:
message: >
Look at this surveillance camera image. Read the vehicle license plate number.
Reply with ONLY the plate number in capital letters (example: 'AB12345').
If no plate is visible or readable, reply with only the word 'none'.
max_tokens: 15
temperature: 0.1
15 tokens. Lav temperatur. Ingen plads til snak. Enten returnerer den en nummerplade eller “none”.
Hvis første forsøg kommer tomt tilbage, venter automationen 3 sekunder mere og prøver igen med et nyt snapshot. To forsøg er nok — hvis pladen ikke kan læses efter to forsøg er det fordi vinklen er dårlig eller det er mørkt, ikke fordi modellen havde brug for mere tid.
Det bedste resultat fra ét af de to forsøg vinder. Det gemmes i input_text.last_5_plates som en rullende JSON-liste — en simpel log over de seneste fem plader der er kørt ind i indkørslen, med tidsstempler.
Hvad der lander på TV’et
Én app gør det muligt på TV-siden: Notifications for Android TV (gratis, Google Play). Den kører en lille HTTP-server på port 7676 som HA’s “Notifications for Android TV / Fire TV”-integration poster til. Ingen konto, ingen cloud — notifikationen går direkte fra HA til TV’et over det lokale netværk. Installer appen, notér TV’ets IP, tilføj integrationen i HA under Indstillinger → Enheder og tjenester, og du får en notify.android_tv_*-service.
notify.android_tv_fire_tv_192_168_1_40 sender direkte til TV’et:
action: notify.android_tv_fire_tv_192_168_1_40
data:
message: "🚗 Bil registreret! Nummerplade: {{ plate_text }}"
data:
image: "http://192.168.x.x:8123/local/sentinel_latest.jpg?t={{ now().timestamp() | int }}"
interrupt: 1
interrupt: 1 tvinger notifikationen til at dukke op selv om TV’et er i gang med noget. Billedet vises i hjørnet med pladeteksten nedenunder. Man ser en film, en bil kører ind, et miniaturebillede dukker op i hjørnet med nummerplade — man kaster et blik på det og ignorerer det enten eller griber telefonen. Ingen opsamling af telefonen for at tjekke, ingen åbning af en app.
Telefonerne får det samme snapshot via notify.alle_enheder, med et tidsstemplet URL så det ikke serverer et cachet billede fra det forrige besøg.
Persondetektion får en enklere version: intet ALPR-forsøg, bare en snapshot-notifikation. Det er nok til at se om det er postbudet eller nogen man ikke genkender.
Hvad jeg ikke tog med
Jeg prøvede en version der annoncerede nummerplade via tekst-til-tale på TV-højttaleren. Det virkede men føltes som en afgangstavle i lufthavnen. Den visuelle notifikation er mere diskret — man ser den hvis man kigger, overser den hvis man ikke gør, og TV’et afbryder ikke sig selv for at læse et nummer op.
Hvad der faktisk gik galt
Den første uge automationen kørte, holdt den op med at virke. Ikke synligt — automationen gennemførte, ingen fejl i trace’en, men TV’et viste kun tekst uden billede, og telefonerne fik slet ingenting.
Problemet var billedstørrelse. nfandroidtv-integrationen sender et snapshot til TV-appen via HTTP POST på port 7676. Jeg brugte camera.sentinel_clear — det fulde opløsnings-feed — som producerer frames på ca. 1,9 MB. TV-appen brugte mere end 5 sekunder på at behandle det. HA ramte en ReadTimeout, afbrød script-steget midt i kørslen, og telefon-notifikationerne blev aldrig afsendt.
Derudover var integrationen havnet i failed_unload-tilstand — sandsynligvis fra en HA-genstart under et af de timeouts. Symptomet: notify.android_tv forsvandt fra de tilgængelige services i perioder og kom så tilbage igen. Integrationen stod som indlæst, men HA havde ikke rent registreret dens services.
Tre rettelser i rækkefølge:
1. Slet og opret integrationen igen. Indstillinger → Enheder og tjenester → find “Notifications for Android TV / Fire TV” → slet → tilføj igen. Det rydder failed_unload-tilstanden og genregistrerer notify.android_tv rent.
2. Skift snapshot-kilde. Ændret begge snapshot-steps i automationen fra camera.sentinel_clear til camera.sentinel_fluent. Fluent-streamen producerer 50–200 KB frames i stedet for 1,9 MB — lille nok til at TV-appen behandler det på under et sekund. Billedkvaliteten er stadig mere end nok til at identificere en person eller læse en nummerplade i godt lys.
3. Tilføj continue_on_error: true på TV-notify-steget:
- action: notify.android_tv_fire_tv_192_168_1_40
continue_on_error: true
data:
message: "🚗 {{ plate_text }}"
data:
image: "http://192.168.x.x:8123/local/sentinel_latest.jpg?t={{ now().timestamp() | int }}"
interrupt: 1
Hvis TV’et timeouter eller integrationen falder ud igen, kommer telefon-notifikationerne stadig igennem. TV’et er rart at have. Telefonerne er ikke valgfrie.
De tre ting tilsammen løste det. TV’et viser nu snapshot’et inden for ca. et sekund, og i de tilfælde hvor TV’et er slukket eller integrationen fejler, får telefonerne altid notifikation uanset hvad.
Opdatering, maj 2026: Nummerpladegenkendelsen er taget ud. Nøjagtigheden om natten var ikke pålidelig nok — plader i dårlige vinkler eller ved kraftig regn returnerede “none” oftere end et egentligt resultat, og to LLM Vision-kald per køretøjshændelse tilføjede en latens der fik notifikationen til at føles langsom. Det nuværende setup springer ALPR helt over: bil- eller persondetektion → fluent snapshot → TV og telefoner. Den rullende pladeliste er væk. Kameraet, TV-integrationen og continue_on_error-tilgangen er bevaret. AI-laget er ikke.