Gå til indhold
← Alle indlæg

AI-kamera i Home Assistant: notifikationer, der faktisk giver mening

Sådan sender Sentinel-kameraet nyttige beskeder i stedet for 40 bevægelsesalarmer om dagen: én automation, en lydløs-kontakt og knapper i notifikationen.

7. februar 2025
AI-kamera i Home Assistant: notifikationer, der faktisk giver mening

De første par uger efter jeg satte Sentinel-kameraet op, havde jeg notifikationer for bevægelse slået til. Hver eneste sagde «Bevægelse registreret». Fugle, skygger, en plastikpose, der blæste forbi linsen klokken tre om natten. Jeg slog dem alle fra og lod kameraet hænge der uden at gøre meget nytte i endnu en måned.

Løsningen var enklere end ventet: reager kun på personer og køretøjer, ikke på al bevægelse, og giv notifikationen tre knapper, der faktisk gør noget.

Det, integrationen giver

Når kameraet er tilføjet, opretter HA en række binære sensorer ud fra kameraets egen genkendelse:

binary_sensor.sentinel_motion
binary_sensor.sentinel_person
binary_sensor.sentinel_animal
binary_sensor.sentinel_vehicle

Person og køretøj kommer fra kameraets egen AI-chip. Ret præcis, bedre end ren bevægelse, men ikke fejlfri. Dyresensoren har fanget rigtige ræve og også en stor plastikpose, der åbenbart bevægede sig som et levende væsen.

Én automation til begge udløsere

Hændelser med personer og køretøjer går gennem én automation i tilstanden single. Tilstanden forhindrer dubletter: slår sensoren til igen, mens automationen stadig kører (inklusive en pause på 60 sekunder til sidst), bliver den nye udløsning ignoreret uden besked.

alias: Sentinel — Kamera & Notifikation
mode: single
max_exceeded: silent
trigger:
  - platform: state
    entity_id: binary_sensor.sentinel_person
    from: "off"
    to: "on"
    id: person
  - platform: state
    entity_id: binary_sensor.sentinel_vehicle
    from: "off"
    to: "on"
    id: bil
condition:
  - condition: state
    entity_id: input_boolean.sentinel_notifikation_lydlos
    state: "off"
action:
  - variables:
      notif_title: "{{ '\U0001F697 Bil ved indkørslen' if trigger.id == 'bil' else '\U0001F464 Person ved indkørslen' }}"
      notif_message: "{{ 'Sentinel har registreret et køretøj' if trigger.id == 'bil' else 'Sentinel har registreret en person' }}"
  - action: camera.snapshot
    target:
      entity_id: camera.sentinel_fluent
    data:
      filename: /config/www/sentinel_latest.jpg
  - action: notify.alle_enheder
    data:
      title: "{{ notif_title }}"
      message: "{{ notif_message }}"
      data:
        ttl: 0
        priority: high
        channel: Overvågning
        tag: sentinel_alert
        entity_id: camera.sentinel_fluent
        camera_stream: true
        image: /api/camera_proxy/camera.sentinel_fluent
        actions:
          - action: URI
            title: Se Kamera
            uri: homeassistant://navigate/nyt-mobil/overvagning
          - action: sentinel_flood_on
            title: Tænd Flood
          - action: sentinel_mute_30
            title: Lydløs 30 min
        clickAction: /nyt-mobil/overvagning
  - delay:
      seconds: 60

camera.snapshot gemmer et nyt stillbillede i /local/sentinel_latest.jpg, før notifikationen sendes. Selve notifikationen indeholder kameraets live-billede (camera_stream: true). På Android med HA's Companion-app kan den foldes ud til live-video direkte i notifikationen.

Lydløs-kontakten

Den eneste betingelse er, at input_boolean.sentinel_notifikation_lydlos står på off. Det er den, der bestemmer. Den er enklere end en betingelse på armed_away: der skal ingen alarmcentral til, den virker, uanset om man er hjemme eller ude, og notifikationen kan selv slå den til via Lydløs-knappen.

En separat automation sætter den tilbage til off ved midnat hver nat, så jeg aldrig skal huske at slå den fra igen.

Knapperne i notifikationen

Notifikationen har tre knapper:

  • Se Kamera: direkte link til visningen Overvågning i HA's Companion-app
  • Tænd Flood: tænder light.sentinel_floodlight via en separat automation, der lytter efter handlingen sentinel_flood_on fra mobilen
  • Lydløs 30 min: slår lydløs-kontakten til i 30 minutter og nulstiller den derefter

Sådan håndteres lydløs-knappen:

alias: Sentinel — Lydløs 30 min
trigger:
  - platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: sentinel_mute_30
action:
  - action: input_boolean.turn_on
    target:
      entity_id: input_boolean.sentinel_notifikation_lydlos
  - delay:
      minutes: 30
  - action: input_boolean.turn_off
    target:
      entity_id: input_boolean.sentinel_notifikation_lydlos

Besked på Fire TV

Den samme automation sender også til TV'et i stuen:

  - action: notify.android_tv_fire_tv_192_168_1_40
    data:
      message: "{{ '\U0001F697 Bil registreret ved indkørslen' if trigger.id == 'bil' else '\U0001F464 Person registreret udenfor' }}"
      data:
        image: "http://192.168.1.171:8123/local/sentinel_latest.jpg?t={{ now().timestamp() | int }}"
        interrupt: 1

Parameteren ?t= tvinger et nyt billede frem. Uden den viser Fire TV et gammelt billede fra cachen fra den forrige hændelse. interrupt: 1 får det til at dukke op, også mens noget afspilles.

Dashboard

Visningen Overvågning viser statuskort og en logbog for de seneste 24 timer:

type: vertical-stack
cards:
  - type: custom:mushroom-chips-card
    chips:
      - type: entity
        entity: binary_sensor.sentinel_person
        icon: mdi:account
        icon_color: red
      - type: entity
        entity: binary_sensor.sentinel_vehicle
        icon: mdi:car
      - type: entity
        entity: input_boolean.sentinel_notifikation_lydlos
        icon: mdi:bell-off
        tap_action:
          action: toggle
  - type: logbook
    entities:
      - binary_sensor.sentinel_person
      - binary_sensor.sentinel_vehicle
    hours_to_show: 24

Logbogen er det, jeg bruger mest efter en rejse: rul gennem et døgns hændelser i ét hug i stedet for at gennemgå notifikationerne én ad gangen.

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