Hoofdstuk 14 van 22

Automatiseringen testen voordat je erop vertrouwt

In het vorige hoofdstuk heb je gezien dat blueprints veel werk uit handen kunnen nemen. Maar ook wanneer een automatisering netjes is opgebouwd — of uit een…

In het vorige hoofdstuk heb je gezien dat blueprints veel werk uit handen kunnen nemen. Maar ook wanneer een automatisering netjes is opgebouwd — of uit een blueprint komt — blijft één regel belangrijk:

een automatisering die er logisch uitziet, hoeft zich in de praktijk nog niet logisch te gedragen.

Dat klinkt misschien vreemd. Home Assistant voert tenslotte gewoon regels uit. Maar die regels werken met echte apparaten, echte sensoren en echte omstandigheden. Een bewegingssensor reageert soms net iets later dan verwacht. Een lamp kan tijdelijk onbereikbaar zijn. Een voorwaarde kan technisch waar zijn, terwijl jij iets anders bedoelde.

Daarom is testen geen laatste controle voor als je klaar bent.

Testen hoort bij het bouwen van de automatisering zelf.

Eerst voorspellen, dan uitvoeren

Een handige gewoonte is om vóór iedere test eerst te bedenken wat je verwacht dat er gaat gebeuren.

Stel dat je in De Werkplaats deze automatisering hebt gemaakt:

Als er beweging wordt gedetecteerd en het buiten donker genoeg is, zet dan de werkbankverlichting aan.

Voordat je iets activeert, stel je jezelf drie vragen:

  • Wat moet de trigger zijn?
  • Aan welke voorwaarden moet worden voldaan?
  • Welke actie verwacht ik daarna?

Bijvoorbeeld:

Ik verwacht dat de lamp aangaat wanneer ik langs de bewegingssensor loop, maar alleen wanneer de lichtsensor minder dan 300 lux meet.

Dat lijkt misschien overbodig, maar het maakt een groot verschil.

Als je alleen maar gaat proberen en achteraf kijkt wat er gebeurde, is het verleidelijk om de uitkomst goed te praten.

Wanneer je eerst voorspelt, kun je daarna veel duidelijker zeggen:

Dit gebeurde zoals verwacht.

of:

Hier wijkt het gedrag af van mijn verwachting.

Die afwijking is bruikbare informatie.

Test niet meteen de hele automatisering

Een veelgemaakte fout is dat je een uitgebreide automatisering bouwt en daarna alleen kijkt of het eindresultaat klopt.

Bijvoorbeeld:

  • beweging detecteren;
  • controleren of het donker is;
  • controleren of iemand thuis is;
  • de verlichting inschakelen;
  • vijf minuten wachten;
  • opnieuw controleren op beweging;
  • de verlichting uitschakelen.

Wanneer de lamp uiteindelijk niet aangaat, weet je nog bijna niets.

Het probleem kan in de trigger zitten, in één van de voorwaarden, in de lamp zelf of zelfs in een verkeerde entiteit.

Daarom werkt een eenvoudigere aanpak beter:

verander en test steeds één onderdeel tegelijk.

Begin bijvoorbeeld alleen met:

Als beweging wordt gedetecteerd, zet de werkbanklamp aan.

Werkt dat betrouwbaar?

Voeg dan pas de lichtvoorwaarde toe.

Daarna eventueel de aanwezigheidsvoorwaarde.

Zo groeit de automatisering stap voor stap en weet je bij iedere stap welk onderdeel nieuw is.

Wanneer het daarna fout gaat, weet je ook waar je moet zoeken.

Controleer eerst of de apparaten zelf werken

Voordat je een probleem in een automatisering zoekt, moet je zeker weten dat de gebruikte apparaten en entiteiten goed reageren.

Open daarom bijvoorbeeld:

Instellingen → Apparaten & diensten → Entiteiten

of gebruik het dashboard om het apparaat handmatig te bedienen.

Zet de lamp aan.

Zet hem weer uit.

Loop langs de bewegingssensor.

Bekijk of de status verandert.

Controleer de lichtsensor.

Als de waarde daar al niet verandert zoals verwacht, heeft het weinig zin om de automatisering aan te passen.

Je probeert dan met regels een probleem op te lossen dat ergens anders zit.

Voor De Werkplaats zou je bijvoorbeeld eerst kunnen controleren:

  • verandert de bewegingssensor werkelijk van off naar on?
  • geeft de lichtsensor een aannemelijke waarde?
  • reageert de werkbanklamp direct wanneer je hem handmatig inschakelt?

Pas wanneer die basis klopt, ga je verder met de automatisering.

Een actie handmatig uitvoeren

In de automatiseringseditor kun je acties ook los van de trigger uitvoeren.

Dat is bijzonder handig.

Stel dat de actie van je automatisering bestaat uit het inschakelen van de werkbankverlichting. Dan kun je die actie uitvoeren zonder eerst langs de bewegingssensor te lopen.

Je test daarmee alleen de vraag:

Kan Home Assistant deze actie uitvoeren zoals ik hem heb ingesteld?

Als de lamp nu niet aangaat, weet je dat de trigger waarschijnlijk niet het probleem is.

Controleer dan bijvoorbeeld:

  • heb je de juiste lamp gekozen?
  • gebruik je de juiste actie?
  • is het apparaat beschikbaar?
  • verwacht de actie nog extra gegevens?

Als de handmatige actie wel werkt, heb je opnieuw een stuk van de puzzel gecontroleerd.

Trigger testen en actie testen zijn niet hetzelfde

Hier zit een belangrijk verschil.

Wanneer je alleen een actie handmatig uitvoert, bewijs je niet dat de hele automatisering werkt.

Je hebt dan alleen bewezen dat de actie uitgevoerd kan worden.

De trigger is nog niet getest.

Voorwaarden mogelijk ook niet.

Dat verschil is belangrijk.

Stel dat de werkbanklamp handmatig netjes aangaat. Toch gebeurt er niets wanneer je langs de bewegingssensor loopt.

Dan is de vraag niet meer:

Waarom werkt de lamp niet?

maar:

Waarom start de automatisering niet?

Dat is een veel kleinere en daardoor beter oplosbare vraag.

Voorwaarden bewust goed én fout testen

Voorwaarden zijn vooral interessant omdat een automatisering juist soms niets hoort te doen.

Dat moet je dus ook testen.

Neem opnieuw:

Als er beweging is en het buiten donkerder is dan 300 lux, zet de werkbanklamp aan.

Test eerst terwijl de lichtsensor bijvoorbeeld 150 lux aangeeft.

Je voorspelling:

De lamp moet aangaan.

Test daarna terwijl de sensor bijvoorbeeld 700 lux aangeeft.

Je voorspelling:

De automatisering mag starten, maar de lamp moet niet worden ingeschakeld omdat de voorwaarde niet waar is.

Die tweede test is minstens zo belangrijk als de eerste.

Je controleert daarmee niet alleen of Home Assistant iets doet wanneer het moet, maar ook of het niets doet wanneer het niet moet.

Dat is een belangrijk onderdeel van betrouwbare automatisering.

Test de grenzen

Automatiseringen gaan opvallend vaak fout rond grenswaarden.

Stel dat je hebt ingesteld:

lichtsterkte lager dan 300 lux.

Wat verwacht je bij:

  • 299 lux?
  • 300 lux?
  • 301 lux?

lager dan 300 betekent iets anders dan lager dan of gelijk aan 300.

Bij temperatuur, batterijpercentage, tijdstippen en vertragingen geldt precies hetzelfde.

Als een grens belangrijk is, test dan bewust net onder, op en net boven die grens.

Dat klinkt nauwkeurig — en dat is het ook.

Maar juist dit soort kleine verschillen veroorzaken later automatiseringen die "bijna altijd" goed werken.

En bijna altijd is bij automatisering vaak niet goed genoeg.

Test ook de normale uitzonderingen

Een huis is geen laboratorium.

Apparaten vallen soms tijdelijk weg. Iemand schakelt handmatig een lamp uit. Een sensor blijft even hangen. Home Assistant wordt opnieuw gestart.

Je hoeft niet iedere mogelijke ramp na te bootsen, maar een paar normale afwijkingen zijn verstandig om te testen.

Bijvoorbeeld:

Wat gebeurt er wanneer de lamp al aanstaat voordat de automatisering wordt gestart?

Vaak is dat geen probleem. Een opdracht om een lamp in te schakelen terwijl hij al aanstaat, verandert weinig.

Maar in andere situaties kan dezelfde gebeurtenis wel belangrijk zijn.

Denk aan:

  • een script dat opnieuw wordt gestart;
  • een wachttijd die nog loopt;
  • een automatisering die meerdere keren kort achter elkaar wordt getriggerd;
  • een apparaat dat tijdelijk unavailable is.

Je hebt eerder gezien dat de uitvoermodus van een automatisering hierbij een rol speelt.

Tijdens het testen kun je dus ook bewust twee keer snel achter elkaar dezelfde trigger veroorzaken.

Wat verwacht je?

En wat gebeurt er werkelijk?

Gebruik geen gevaarlijke actie als test

Niet iedere automatisering is geschikt om zomaar proefondervindelijk uit te proberen.

Een lamp inschakelen is meestal onschuldig.

Maar bij andere apparaten moet je voorzichtiger zijn.

Denk aan:

  • verwarming;
  • elektrische boilers;
  • garagedeuren;
  • pompen;
  • sloten;
  • apparaten die veel vermogen gebruiken.

Bij zulke automatiseringen kun je tijdens het bouwen eerst een veilige actie gebruiken.

Laat Home Assistant bijvoorbeeld tijdelijk een melding sturen in plaats van het echte apparaat in te schakelen.

In plaats van:

Schakel de boiler in.

test je eerst:

Stuur de melding: "De boiler zou nu worden ingeschakeld."

Daarmee kun je trigger en voorwaarden testen zonder dat het apparaat werkelijk wordt bediend.

Pas wanneer het gedrag klopt, vervang je de testactie door de echte actie.

Maak tijdelijke testmeldingen zichtbaar

Een melding is ook bij gewone automatiseringen een handig hulpmiddel.

Stel dat je niet zeker weet welke route in een choose-actie wordt gekozen.

Je kunt dan tijdelijk meldingen toevoegen zoals:

Route donker gekozen.

of:

Route voldoende licht gekozen.

Dat is niet bedoeld als permanente oplossing.

Het is een manier om zichtbaar te maken wat Home Assistant op dat moment besluit.

Wanneer alles werkt, verwijder je de testmeldingen weer.

Zo gebruik je de automatisering zelf als meetinstrument.

Let op tijd

Automatiseringen met vertragingen zijn vervelend om te testen wanneer je tijdens iedere poging tien minuten moet wachten.

Maak het jezelf daarom tijdelijk makkelijker.

Als de uiteindelijke automatisering vijf minuten moet wachten, gebruik tijdens het testen bijvoorbeeld eerst tien seconden.

Je kunt dan snel controleren of de logica klopt.

Wanneer alles werkt, verander je alleen de vertraging terug naar vijf minuten.

Daarbij geldt opnieuw:

verander één ding tegelijk.

Controleer na het terugzetten nog één keer of de uiteindelijke waarde daadwerkelijk goed staat.

Maak een kleine testreeks

Voor een eenvoudige automatisering hoef je geen formeel testdocument te maken.

Toch helpt het om vooraf een paar situaties te bedenken.

Voor onze werkbankverlichting zou dat bijvoorbeeld kunnen zijn:

SituatieVerwachting
Donker + bewegingLamp gaat aan
Licht + bewegingLamp blijft uit
Donker + geen bewegingEr gebeurt niets
Lamp staat al aanGeen ongewenst gedrag
Twee keer snel bewegingAutomatisering blijft voorspelbaar

Je hoeft hier geen ingewikkelde administratie van te maken.

Het doel is vooral dat je niet alleen het scenario test waarvan je al verwacht dat het goed zal gaan.

Laat de automatisering daarna een tijdje gewoon werken

Een test van vijf minuten kan aantonen dat de basis klopt.

Maar daarmee weet je nog niet of de automatisering prettig werkt in het dagelijks gebruik.

Dat ontdek je pas wanneer je haar gebruikt.

Misschien blijkt de grens van 300 lux te laag.

Misschien reageert de bewegingssensor precies goed tijdens het testen, maar gaat de verlichting tijdens normaal gebruik te snel uit.

Misschien ontdek je dat je 's avonds ander gedrag wilt dan overdag.

Dat betekent niet dat de automatisering slecht was.

Je hebt nieuwe informatie gekregen.

Een automatisering bouwen is daarom vaak een cyclus:

voorspellen → testen → waarnemen → aanpassen → opnieuw testen

Daarmee maak je de automatisering steeds beter passend bij de werkelijkheid.

Wanneer kun je een automatisering vertrouwen?

Volledig foutloos bestaat bijna niet.

Maar je kunt wel steeds meer vertrouwen opbouwen.

Een automatisering wordt betrouwbaarder wanneer je hebt gecontroleerd:

  • dat de gebruikte sensoren logisch reageren;
  • dat de trigger werkelijk plaatsvindt;
  • dat voorwaarden zowel in de ware als onware situatie zijn getest;
  • dat de acties afzonderlijk werken;
  • dat grenswaarden doen wat je verwacht;
  • dat normaal afwijkend gedrag geen vreemde gevolgen heeft;
  • dat de automatisering ook tijdens dagelijks gebruik voorspelbaar blijft.

Je hoeft dit niet allemaal in één keer te doen.

Juist door klein te beginnen en iedere stap te controleren, voorkom je dat je later naar een grote ondoorzichtige automatisering zit te kijken waarvan je alleen weet dat hij "soms niet werkt".

Een fout is een waarneming

Tijdens het testen zul je automatiseringen tegenkomen die niet doen wat je verwacht.

Dat is niet het moment om willekeurig instellingen te veranderen.

Schrijf eerst op wat je hebt waargenomen.

Bijvoorbeeld:

Ik liep langs de bewegingssensor. De sensor veranderde naar on. De lichtwaarde was 180 lux. De lamp ging niet aan.

Dat is veel bruikbaarder dan:

De automatisering werkt niet.

In de eerste beschrijving weet je al dat de sensor reageerde en dat de lichtwaarde logisch lijkt.

De fout zit dus waarschijnlijk verderop.

En precies daar komen we bij het onderwerp van het volgende hoofdstuk.

Want Home Assistant bewaart bij automatiseringen informatie over hoe een uitvoering is verlopen: welke trigger startte, welke voorwaarden waar of onwaar waren en welke acties uiteindelijk werden uitgevoerd.

Die informatie vind je in traces.

In het volgende hoofdstuk kijken we daarom naar:

Traces — Begrijpen waarom Home Assistant deed wat het deed.