Gå til indhold

Overvåg sensorernes helbred

Mellem Home Assistant

En dørkontakt, der er utilgængelig, kan gøre en ellers god automation tavs. Et lavt batteri kan give samme resultat et par dage senere. Denne guide laver ét roligt, dagligt helbredstjek af de sensorer, du selv vælger. Du får kun en besked, når listen indeholder et reelt problem.

Home Assistant skelner mellem unknown, hvor tilstanden endnu ikke er kendt, og unavailable, hvor entiteten ikke er tilgængelig. Det fremgår af den officielle sensordokumentation. Begge tilstande fortjener et eftersyn, men de beviser ikke alene, at hardwaren er defekt.

Undgå at gennemsøge hele Home Assistant automatisk. En systemdækkende søgning finder testentiteter, deaktiverede enheder og cloudtjenester, som ikke behøver en daglig alarm. Start med en kort liste:

  • kontakt-, lækage- og bevægelsessensorer, som indgår i vigtige automationer;
  • temperatur- eller frysesensorer, du faktisk reagerer på;
  • de numeriske batterisensorer, der hører til de samme enheder.

Find de præcise entitets-id’er under Indstillinger → Værktøjer (Tools) → Tilstande, eller åbn Tilstande direkte. Ældre versioner kalder siden Udviklerværktøjer. Batterisensorer med device_class: battery bruger normalt procent. Nogle enheder leverer i stedet en binær lav-batteri-sensor; eksemplet her er bevidst afgrænset til numeriske batteriprocenter. Home Assistants batterivejledning forklarer forskellen.

Kontrollér også, at en testbesked når din telefon. Eksemplet kræver en tilgængelig notify-entitet, som beskrevet i notifikationsdokumentationen. Har du kun en ældre notify.mobile_app_...-handling, skal du bruge den konkrete telefons handling i stedet for eksemplets sidste notify.send_message-handling. Guiden om mobilnotifikationer viser opsætning og test af de nyere modtagere.

Eksemplet kører kl. 09.00. En valgfri opstartstrigger er medtaget, men slået fra. Den venter fem minutter, hvis du aktiverer den, så integrationerne får tid til at starte. Home Assistant dokumenterer både den almindelige tidstrigger og den særlige Home Assistant-opstartstrigger.

  1. Opret en tom automation

    Gå til Indstillinger → Automationer og scener → Opret automation → Opret ny automation. Åbn menuen med tre prikker, og vælg Rediger i YAML.

  2. Indsæt hele eksemplet nedenfor

    Erstat entitets-id’erne i de to lister. notify.my_phone er kun et eksempel; vælg din egen notify-entitet eller notifikationsgruppe.

  3. Gem med et tydeligt navn

    Kør først den manuelle test nedenfor. Aktivér kun opstartstriggeren, hvis du også ønsker et tjek fem minutter efter en genstart.

Automationseditor – komplet automation
alias: "Sensorhelbred: dagligt tjek"
description: "Giver besked om udvalgte utilgængelige sensorer og lave batterier"
mode: single
triggers:
- trigger: time
at: "09:00:00"
id: daily
- trigger: homeassistant
event: start
id: startup
enabled: false
variables:
watched_entities:
- binary_sensor.hoveddoer_kontakt
- binary_sensor.bryggers_laekage
- sensor.fryser_temperatur
battery_entities:
- sensor.hoveddoer_batteri
- sensor.bryggers_laekage_batteri
battery_limit: 20
actions:
- if:
- condition: trigger
id: startup
then:
- delay: "00:05:00"
- variables:
health_report: >-
{% set ns = namespace(lines=[]) %}
{% for entity_id in watched_entities + battery_entities %}
{% set value = states(entity_id) %}
{% set name = state_attr(entity_id, 'friendly_name') or entity_id %}
{% if value in ['unknown', 'unavailable'] %}
{% set ns.lines = ns.lines + [name ~ ': ' ~ value] %}
{% endif %}
{% endfor %}
{% for entity_id in battery_entities %}
{% set value = states(entity_id) %}
{% set name = state_attr(entity_id, 'friendly_name') or entity_id %}
{% if is_number(value) and value | float < battery_limit %}
{% set ns.lines = ns.lines + [name ~ ': ' ~ value ~ '%'] %}
{% endif %}
{% endfor %}
{{ ns.lines | join('\n') }}
- condition: template
value_template: "{{ health_report | trim != '' }}"
- action: notify.send_message
target:
entity_id: notify.my_phone
data:
title: "Sensorer kræver opmærksomhed"
message: "{{ health_report | trim }}"

Hvis du vedligeholder automations.yaml manuelt, er destinationen filens liste af automationer: tilføj - foran alias, og indryk resten af blokken to mellemrum. Indsæt ikke den filvariant i editoren.

Hvorfor batteritjekket ikke bruger float(0)

Sektion kaldt “Hvorfor batteritjekket ikke bruger float(0)”

Alle entitetstilstande læses som tekst. unknown | float(0) bliver derfor 0 og kan udløse en falsk alarm om et tomt batteri. Eksemplet kræver først is_number(value) og sammenligner kun derefter tallet med grænsen. Det følger Home Assistants dokumentation om typer og konvertering og holder utilgængelighed adskilt fra lavt batteri. En batterisensor med unknown eller unavailable står derfor med den tilstand i beskeden, aldrig som 0 %.

En batteriværdi på præcis 20 % udløser ikke eksemplet; grænsen er “under 20”. Tilpas tallet efter batteritype og erfaring. Daglig kontrol giver som regel mere ro end en besked ved hver lille ændring.

Batteridrevne Zigbee-, Z-Wave- og Matter-sensorer kan sove mellem rapporter for at spare strøm. En gammel temperaturværdi er derfor ikke automatisk et udfald. Tjek enhedens normale rapporteringsmønster og integrationens egne diagnostiske oplysninger, før du kalder den død.

last_changed er heller ikke en universel “sidst set”-måling. Home Assistants state object opdaterer feltet, når selve tilstanden ændres, men ikke når kun attributter ændres. En dørsensor, der bliver ved med at være lukket, kan derfor have en meget gammel last_changed, selv om enheden har kommunikeret. last_reported afhænger desuden af, om integrationen skriver uændrede rapporter. Brug derfor ikke en vilkårlig 6-, 12- eller 24-timersgrænse på tværs af alle sensorer.

  1. Gem automationen, og vælg Kør handlinger. Hvis alt er sundt, stopper template-betingelsen uden at sende noget.
  2. Skift midlertidigt én watched_entities-post til et ikke-eksisterende test-id. Kør igen, og kontrollér at beskeden viser unknown.
  3. Hæv midlertidigt battery_limit over en kendt, numerisk batteriværdi. Kør igen, og kontrollér tekst og modtager.
  4. Gendan begge ændringer. Se automationens Spor for den seneste kørsel.
  5. Test derefter den rigtige telefon fysisk. En gennemført notify-handling er ikke bevis for, at telefonen viste beskeden.

Det afprøver skabelonen og notifikationen på dit eget anlæg. Eksemplet på denne side er kun statisk kontrolleret; det er ikke kørt mod din Home Assistant.


Kommentarer