AI-kamera i Home Assistant — Notifikationer der rent faktisk giver mening

Sådan fik jeg Sentinel-kameraet til at sende nyttige beskeder i stedet for 40 bevægelsesbeskeder om dagen — én automatisering, en lydløs-kontakt og handlingsknapper.

#kamera #sikkerhed #home-assistant
7. februar 2025
AI-kamera i Home Assistant — Notifikationer der rent faktisk giver mening

De første par uger efter jeg installerede Sentinel-kameraet havde jeg bevægelsesnotifikationer slået til. Hver eneste notifikation 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 sidde der og ikke gøre ret meget nyttigt i endnu en måned.

Løsningen var enklere end forventet: trigger kun på person og køretøj — ikke rå bevægelse — og giv notifikationen tre knapper der rent faktisk gør noget.

Hvad integrationen giver

Efter kameraet er tilføjet opretter HA en række binære sensorer fra den indbyggede detektion:

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

Person og køretøj kommer fra kameraets eget AI-chip. Rimelig præcis — bedre end ren bevægelse, ikke fejlfri. Dyresensoren har fanget rigtige ræve og også en stor plastikpose der bevægede sig på en måde der åbenbart lignede et levende væsen.

Én automatisering for begge triggers

Person- og køretøjshændelser går gennem én enkelt automatisering i single-tilstand. Tilstanden håndterer deduplicering — hvis sensoren triggerer igen mens automatiseringen stadig kører (inkl. 60 sekunders cooldown-forsinkelse til sidst), kasseres triggeren lydløst.

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-kaldet gemmer et nyt stillbillede til /local/sentinel_latest.jpg inden notifikationen sendes. Selve notifikationen indeholder en live kamera-stream (camera_stream: true) — på Android med HA companion-appen udvides den til et live feed direkte i notifikationen.

Lydløs-kontakten

Den eneste betingelse er input_boolean.sentinel_notifikation_lydlos med tilstanden off. Det er portvogtoren. Den er enklere end en armed_away-betingelse — ingen alarmcentral nødvendig, fungerer uanset hjemme/væk-tilstand, og selve notifikationen kan slå den til via Lydløs-knappen.

En separat automatisering nulstiller den til off ved midnat hver nat, så jeg aldrig behøver huske at slå den fra igen.

Handlingsknapper

Notifikationen har tre knapper:

  • Se Kamera — dybde-link til Overvågning-visningen i HA companion-appen
  • Tænd Flood — tænder light.sentinel_floodlight via en separat automatisering der lytter efter sentinel_flood_on-mobilhandlingshændelsen
  • Lydløs 30 min — slår lydløs-kontakten til i 30 minutter og nulstiller den derefter

Håndtering af lydløs-handlingen:

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

Fire TV-notifikation

Den samme automatisering 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

?t=-parameteren tvinger et nyt billede til at blive hentet — uden den viser Fire TV et cachet stillbillede fra den forrige hændelse. interrupt: 1 får det til at dukke op selv under afspilning.

Dashboard

Overvågnings-visningen viser statuskort og en 24-timers logbog:

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 24 timers hændelser i ét sweep i stedet for at gengive push-notifikationer én ad gangen.