Gå til indhold
← Alle indlæg

En hændelsesliste med kun registreringer fra kameraer i Home Assistant

Logbogskortet viser både Detected og Cleared for kamerasensorer. Løsningen: en input_text som løbende log, en automation med trigger-id'er og et markdown-kort.

18. juli 2026 Verificeret på HA 2026.7
En hændelsesliste med kun registreringer fra kameraer i Home Assistant

Overvågningsvisningen i min Home Assistant har en liste over seneste hændelser under kameraet. Den bygger på de fire binære sensorer, mit AI-kamera stiller til rådighed: person, bevægelse, dyr og køretøj. Problemet er, at logbogskortet viser hver eneste ændring af tilstand. Hver «Person Detected» efterfølges af en «Person Cleared» tredive sekunder senere, så halvdelen af listen er støj, og historikken dækker kun halvt så lang tid.

Og nej, logbogskortet kan ikke filtrere på tilstand. Det tager en liste over entiteter og et tidsrum. Det er alt.

Mulighederne, og hvorfor jeg valgte dem fra

En trigger-baseret template-sensor med en liste som attribut er den «rigtige» løsning, men den kan ikke oprettes i brugerfladen og kræver YAML i configuration.yaml. En todo-liste kan bruges som log, men ser klodset ud og skal ryddes op af endnu en automation. Jeg ville have noget, der kunne bygges færdigt i brugerfladen eller via API'et på fem minutter og overlever en genstart.

Løsningen: en input_text som løbende log

En input_text-hjælper gemmes permanent, kan oprettes i brugerfladen og kan opdateres fra en automation. Grænsen på 255 tegn er reel, men med formatet HH:MM label og et skilletegn er det cirka de 10 seneste hændelser. Til en liste over seneste hændelser er det lige tilpas.

Automationen reagerer kun på on. «Cleared» rører den aldrig:

alias: Sentinel event log
mode: queued
triggers:
  - trigger: state
    entity_id: binary_sensor.sentinel_person
    to: "on"
    id: person
  - trigger: state
    entity_id: binary_sensor.sentinel_motion
    to: "on"
    id: motion
  - trigger: state
    entity_id: binary_sensor.sentinel_animal
    to: "on"
    id: animal
  - trigger: state
    entity_id: binary_sensor.sentinel_vehicle
    to: "on"
    id: vehicle
actions:
  - action: input_text.set_value
    target:
      entity_id: input_text.sentinel_event_log
    data:
      value: >-
        {% set m = {'person':'👤 Person','motion':'🏃 Motion',
                    'animal':'🐾 Animal','vehicle':'🚗 Vehicle'} %}
        {% set new = now().strftime('%H:%M') ~ ' ' ~ m[trigger.id] %}
        {% set old = states('input_text.sentinel_event_log') %}
        {% set items = ([new] + (old.split(' · ')
           if old not in ['unknown','unavailable',''] else []))[:10] %}
        {{ (items | join(' · '))[:255] }}

Tre detaljer bærer det hele. Trigger-id'er fungerer som etiketter via opslagstabellen, så én handling klarer alle fire sensorer. mode: queued sikrer, at to registreringer lige efter hinanden ikke overskriver hinanden. Og [:10] skærer listen til på hændelsesniveau, før den sættes sammen, så en linje aldrig bliver skåret over på midten.

Markdown-kortet

Kortet deler loggen op og viser én linje pr. hændelse med tidspunktet i fed:

type: markdown
content: >-
  {% set raw = states('input_text.sentinel_event_log') %}
  {% if raw in ['unknown','unavailable',''] %}*No detections logged yet*
  {% else %}{% for e in raw.split(' · ') if e %}**{{ e[:5] }}**  {{ e[6:] }}

  {% endfor %}{% endif %}

Resultatet er listen på billedet øverst: kun registreringer, dobbelt så lang historik på samme plads og ingen «Cleared»-linjer.

Begrænsningerne, ærligt talt

255 tegn er cirka 10 hændelser, og der er kun klokkeslæt, ingen dato. Ryger en hændelse ud af loggen, er den væk herfra (den fulde historik ligger stadig i logbogen og recorderen). Har du brug for længere historik med datoer, er en trigger-baseret template-sensor med en liste som attribut det rigtige værktøj. Prisen er YAML og en genstart.

Nye indlæg direkte i din RSS-læser: følg med via RSS I Google-søgning: vælg szimnau.dk som foretrukken kilde