Home Assistant-automatiseringer – sådan fungerer de, og sådan fejlsøger du dem
Automatiseringer gør det muligt for Home Assistant at reagere på det, der sker i hjemmet, uden at hver enkelt handling skal udføres manuelt. Systemet kan reagere på en ændring i en enheds tilstand, et bestemt tidspunkt, temperaturen, om nogen er hjemme, eller en anden hændelse og udføre handlinger, der er fastlagt på forhånd.
Antallet af automatiseringer siger dog ikke i sig selv noget om systemets kvalitet. Det er vigtigere, om deres logik er forståelig, forudsigelig og mulig at fejlfinde senere.
I denne guide forklarer jeg, hvad en Home Assistant-automatisering består af, hvordan udløsere, betingelser og handlinger adskiller sig fra hinanden, hvordan scripts og scener fungerer, og hvad man bør kontrollere, når en automatisering virker den ene gang, men ikke den næste.
Hvis du først er ved at lære hele systemet at kende, kan du fortsætte med guiden nedenfor.
Hvad er Home Assistant?Hvad er en automatisering i Home Assistant?
En automatisering beskriver, hvornår Home Assistant skal reagere, hvilke betingelser der på det tidspunkt skal være opfyldt, og hvad systemet skal gøre.
Et enkelt eksempel kan se sådan ud: En sensor registrerer bevægelse, Home Assistant kontrollerer, om det allerede er mørkt, og tænder derefter lyset.
I praksis kan automatiseringer være langt mere avancerede. Én regel kan omfatte flere udløsere, ekstra betingelser, forsinkelser, venten på en tilstandsændring og forskellige handlingsforløb afhængigt af situationen.
Det betyder dog ikke, at alle automatiseringer bør være komplicerede. Jo enklere og mere overskuelig den nødvendige logik er, desto lettere er det senere at forstå dens adfærd og finde årsagen til et eventuelt problem.
Udløser, betingelse og handling – hvad er forskellen?
Disse tre elementer har forskellige roller.
En udløser bestemmer, hvad der starter kontrollen af automatiseringen. Det kan for eksempel være registreret bevægelse, en temperaturændring, et bestemt tidspunkt eller en ændring i en enheds tilstand.
En betingelse starter ikke automatiseringen. Den kontrolleres, efter at udløseren er aktiveret, og afgør, om automatiseringen kan fortsætte.
En handling bestemmer, hvad Home Assistant skal gøre, hvis automatiseringen er startet, og de nødvendige betingelser er opfyldt.
Hvis et lys skal tænde, når der registreres bevægelse, men kun om aftenen, kan bevægelsen være udløseren, tidspunktet være betingelsen og det at tænde lyset være handlingen.
Det er også vigtigt at skelne mellem disse elementer ved fejlfinding. En automatisering kan undlade at udføre en handling, ikke fordi den “ikke virkede”, men fordi udløseren blev aktiveret korrekt, mens en af betingelserne ikke var opfyldt.
Hvad kan starte en automatisering?
En automatisering behøver ikke kun at reagere på et tryk på en knap eller en ændring i en sensors tilstand.
En udløser kan blandt andet være:
- en ændring i en entitets tilstand,
- overskridelse af en bestemt værdi,
- et bestemt tidspunkt,
- solopgang eller solnedgang,
- en hændelse i systemet,
- en webhook,
- en ændring knyttet til en enhed eller tjeneste.
Det gør det muligt at starte den samme logik ud fra forskellige oplysninger, der er tilgængelige i Home Assistant.
Det er dog vigtigt at huske, at en automatisering modtager oplysninger fra andre dele af systemet. Hvis en sensor holder op med at opdatere sin tilstand, eller en integration mister forbindelsen til en enhed, opstår den forventede udløser måske slet ikke.
I så fald behøver problemet ikke at ligge i automatiseringens logik.
En enkel automatisering med lys som eksempel
Antag, at lyset i gangen skal tænde, når der registreres bevægelse, men kun når det er mørkt.
Logikken kan beskrives enkelt:
Udløser: Bevægelsessensoren skifter til tilstanden registreret bevægelse.
Betingelse: Det er efter solnedgang, eller lysniveauet er under en fastlagt værdi.
Handling: Tænd lyset.
Derefter kan man tilføje en yderligere funktion, for eksempel at slukke lyset efter et bestemt tidsrum uden bevægelse.
Selv i dette enkle eksempel skal man beslutte, hvad der skal ske, hvis der registreres bevægelse igen, mens tiden tælles ned. Skal nedtællingen begynde forfra? Skal den tidligere kørsel stoppes? Skal den næste aktivering ignoreres?
Det er i sådanne situationer, at automatiseringens kørselstilstand får betydning.
Hvorfor bliver automatiseringer svære at vedligeholde?
Problemet viser sig ofte ikke ved de første få automatiseringer. Det bliver synligt, når systemet gradvist udbygges.
Lignende logik kan blive kopieret til flere forskellige steder, én automatisering begynder at afhænge af en anden, og navne, der blev oprettet flere måneder tidligere, fortæller ikke længere tydeligt, hvad de styrer.
Samtidig ændrer enheder, entiteter, tidsplaner og den måde, hjemmet bruges på, sig med tiden.
Resultatet kan være, at brugeren ved, at “noget et sted styrer lyset”, men ikke længere kan huske, hvilken automatisering der er ansvarlig for den konkrete reaktion.
I et større system er det derfor værd at bruge tydelige navne, bevare en logisk opdeling og undgå at kopiere den samme handlingssekvens flere steder, hvis den med fordel kan udskilles.
Automatisering, script og scene – hvornår bruger man hvad?
Disse elementer hænger sammen, men de har ikke helt den samme funktion.
En automatisering reagerer på en bestemt situation og starter handlinger i overensstemmelse med den fastlagte logik.
Et script er en sekvens af handlinger, som kan kaldes fra en automatisering, et betjeningspanel eller et andet sted i Home Assistant. Det er især nyttigt, når det samme sæt handlinger skal bruges flere gange.
I stedet for at definere en sekvens til at slukke lys, køre rullegardiner ned og indstille varmen separat i flere automatiseringer kan man for eksempel oprette et passende script og kalde det de steder, hvor det er nødvendigt.
En scene bruges til at indstille enheder til bestemte tilstande. Den kan for eksempel indstille flere lys til en valgt lysstyrke og farve eller forberede enheder til en bestemt brugstilstand.
Man behøver ikke vælge én af disse løsninger til hele systemet. Automatiseringer, scripts og scener kan arbejde sammen, og en fornuftig opdeling gør ofte den senere konfiguration enklere.
Hvad sker der, hvis en automatisering udløses igen, før den er færdig?
Ikke alle automatiseringer afsluttes med det samme. De kan indeholde en forsinkelse, vente på en tilstandsændring eller udføre en længere sekvens af handlinger.
Hvis udløseren aktiveres igen imens, skal Home Assistant vide, hvad der skal ske med den næste kørsel.
Det styres af kørselstilstandene:
- single – hvis automatiseringen allerede kører, starter en ny aktivering ikke endnu en kørsel,
- restart – den tidligere kørsel stoppes, og automatiseringen starter forfra,
- queued – efterfølgende kørsler placeres i en kø,
- parallel – flere kørsler kan køre samtidigt.
Standardtilstanden er single.
Der findes ikke én tilstand, der er bedst til alle automatiseringer. Valget afhænger af, hvordan den konkrete logik skal fungere i praksis.
Ved et bevægelsesstyret lys kan en ny registrering af tilstedeværelse for eksempel kræve, at nedtællingen starter forfra, mens en kø kan være mere passende ved udførelse af bestemte kommandoer til en enhed.
At ændre tilstanden uden at forstå logikken bør ikke betragtes som en universel løsning på problemet.
Hvorfor virker en automatisering nogle gange og andre gange ikke?
Det er en almindelig oplevelse i mere omfattende systemer, men årsagen kan ligge flere forskellige steder.
Kontrollér i rækkefølge:
- om udløseren faktisk blev aktiveret,
- om alle nødvendige betingelser var opfyldt,
- hvilken tilstand de anvendte entiteter havde,
- om en af dem midlertidigt var unavailable eller havde en anden værdi end forventet,
- om integrationen leverede aktuelle data,
- om enheden reagerede på den sendte handling,
- om en tidligere kørsel af automatiseringen stadig var i gang,
- hvilken kørselstilstand der var valgt,
- om fejlen først opstod under en af de efterfølgende handlinger.
Hvis automatiseringen bruger en Zigbee-enhed, og problemet er manglende opdatering af tilstanden eller en mistet forbindelse, ændrer redigering af selve automatiseringen muligvis ikke noget.
Home Assistant-integrationerMister Zigbee forbindelsen?
Trace – gennemgå forløbet i stedet for at gætte
Home Assistant har værktøjet Trace, som registrerer en automatiserings forløb trin for trin.
Det gør det muligt at se, hvad der udløste automatiseringen, hvilke betingelser der blev kontrolleret, hvilken vej logikken fulgte, og på hvilket trin problemet opstod.
Hvis automatiseringen blev startet, men ikke udførte den forventede handling, kan Trace vise, om den stoppede ved en betingelse, valgte en anden gren eller stødte på et problem under udførelsen af en handling.
Det er et langt bedre udgangspunkt end at ændre flere indstillinger tilfældigt på samme tid.
Ved fejlfinding bør man først fastslå præcist, hvor automatiseringens forløb afviger fra den forventede adfærd, og først derefter foretage en ændring.
Sådan tester du en automatisering uden at vente på en rigtig hændelse
Home Assistant-editoren gør det muligt at teste udvalgte dele af en automatisering uden at vente på en rigtig hændelse.
Man kan for eksempel kontrollere en betingelses tilstand eller køre en valgt handling og se, om enheden reagerer som forventet.
Det er dog vigtigt at skelne mellem en test af et enkelt element og en test af hele automatiseringen.
Hvis en manuelt startet handling tænder lyset korrekt, bekræfter det, at denne konkrete handling kan udføres. Det betyder endnu ikke, at udløseren, betingelserne og hele automatiseringens forløb er konfigureret korrekt.
Ved problemer er det derfor en god idé at kombinere manuelle test af de enkelte dele med en analyse af Trace fra en faktisk kørsel.
Skal man kende YAML for at lave automatiseringer?
Nej. Typiske automatiseringer kan oprettes og redigeres direkte i Home Assistants grafiske editor uden at skrive YAML-konfiguration manuelt.
Editoren gør det muligt at vælge udløsere, betingelser og handlinger samt at opbygge mere avanceret logik.
Kendskab til YAML kan være nyttigt ved analyse af en konfiguration, kopiering af mere tekniske eksempler eller løsninger, der kræver manuel redigering, men det er ikke en forudsætning for at komme i gang med automatiseringer.
Det er vigtigere at forstå logikken end den måde, konfigurationen er gemt på. En automatisering, der er bygget i brugerfladen, kan være lige så uoverskuelig som dårligt organiseret YAML, hvis den har en tilfældig struktur og uklare afhængigheder.
Sådan holder du automatiseringerne overskuelige
Navne på automatiseringer bør tydeligt beskrive, hvad de handler om. Ved et større antal regler forklarer navnet “Lys 2” meget lidt, mens en beskrivelse, der henviser til rummet og funktionsmåden, gør det hurtigere at finde det rigtige element.
Det er også værd at:
- undgå at kopiere den samme logik til mange steder uden behov,
- udskille gentagne sekvenser i scripts, når det faktisk gør konfigurationen enklere,
- bevare en overskuelig opdeling af betingelser og handlinger,
- teste en ændring efter den er foretaget,
- kontrollere Trace ved usædvanlig adfærd,
- undgå at ændre flere forskellige elementer samtidig, før årsagen er fundet,
- huske, at problemet kan ligge uden for selve automatiseringen.
En god automatisering behøver ikke være kort for enhver pris. Den bør først og fremmest have en logisk struktur og opføre sig på en måde, som senere kan forstås og kontrolleres.
En automatisering skal være forudsigelig, ikke kompliceret
Home Assistant-automatiseringer kan kombinere data fra mange enheder og reagere på meget forskellige situationer, men grundprincippet er det samme: Noget starter logikken, betingelserne afgør, om den skal fortsætte, og handlingerne udfører de fastlagte opgaver.
Når systemet vokser, bliver tydelige navne, en passende opdeling af logikken, de rigtige kørselstilstande og muligheden for at følge det, der faktisk skete under automatiseringens kørsel, stadig vigtigere.
Hvis en automatisering opfører sig anderledes end forventet, skal man først fastslå, om problemet ligger i udløseren, betingelsen, udførelsen af handlingen, integrationen eller kommunikationen med enheden. Først derefter bør man foretage en ændring.
Har du brug for hjælp til Home Assistant-automatiseringer?
Hvis dine automatiseringer fungerer ustabilt, kører på det forkerte tidspunkt, eller du vil have bedre struktur i logikken, kan jeg hjælpe med at gennemgå den nuværende konfiguration, undersøge mulige årsager til problemet og implementere de aftalte ændringer.
Kontakt mig.Den indledende vurdering af din henvendelse er gratis og uforpligtende. → klik her