Hoofdstuk 3 van 22

Van gewone taal naar trigger, voorwaarden en acties

In het vorige hoofdstuk hebben we gekeken naar wat een goede automatisering eigenlijk is. Niet zo veel mogelijk automatisch laten gebeuren, maar juist iets…

In het vorige hoofdstuk hebben we gekeken naar wat een goede automatisering eigenlijk is. Niet zo veel mogelijk automatisch laten gebeuren, maar juist iets maken dat voorspelbaar, begrijpelijk en betrouwbaar werkt.

Daarvoor helpt het om een automatisering eerst helemaal niet in Home Assistant te bouwen.

Begin gewoon met een zin.

Bijvoorbeeld:

Als ik De Werkplaats binnenkom terwijl het donker is, moet het licht aangaan.

Dat is een heel normale beschrijving. Je hoeft daarvoor nog niets te weten over automatiseringen, entiteiten of configuratie.

Toch zit in die ene zin bijna alles wat Home Assistant nodig heeft.

Je kunt hem namelijk opdelen in drie onderdelen:

  • Trigger — wat geeft het startsein?
  • Voorwaarden — wanneer mag de automatisering daadwerkelijk doorgaan?
  • Acties — wat moet Home Assistant vervolgens doen?

Dat patroon kom je steeds opnieuw tegen.

Eerst bedenken, daarna bouwen

Het is verleidelijk om direct in Home Assistant op Automatisering maken te klikken en vervolgens te kijken welke mogelijkheden je tegenkomt.

Voor eenvoudige automatiseringen lukt dat soms prima.

Maar zodra je automatisering iets ingewikkelder wordt, raak je gemakkelijk het overzicht kwijt.

Je ziet dan instellingen zoals:

  • toestand;
  • tijd;
  • numerieke toestand;
  • apparaat;
  • zon;
  • sjabloon;
  • gebeurtenis.

Als je nog niet precies weet wat je wilt bereiken, wordt het al snel een zoektocht door menu's.

Daarom draaien we het om.

We beginnen met gewone taal.

Pas wanneer duidelijk is wat de automatisering moet doen, vertalen we die stap voor stap naar Home Assistant.

Dat maakt het niet alleen gemakkelijker om de automatisering te maken. Het helpt ook enorm wanneer je later een fout probeert te vinden.

Een eenvoudige zin ontleden

Neem opnieuw deze automatisering:

Als ik De Werkplaats binnenkom terwijl het donker is, moet het licht aangaan.

Laten we eens kijken welke onderdelen daarin verstopt zitten.

Trigger

Het eerste gedeelte is:

Als ik De Werkplaats binnenkom...

Er moet ergens worden vastgesteld dat je binnenkomt.

Misschien gebruik je daarvoor een bewegingssensor of aanwezigheidssensor.

De verandering van:

geen beweging → beweging

kan het startsein voor de automatisering zijn.

Dat noemen we de trigger.

Een trigger betekent dus nog niet automatisch dat er iets gebeurt.

Hij zegt alleen:

Er is iets veranderd. Controleer nu of deze automatisering uitgevoerd moet worden.

Voorwaarden

Daarna staat:

...terwijl het donker is...

Dat is een extra eis.

Als je De Werkplaats binnenkomt terwijl buiten de zon volop schijnt, hoeft het licht waarschijnlijk niet aan.

Home Assistant moet daarom controleren of het inderdaad donker genoeg is.

Dat noemen we een voorwaarde.

Bijvoorbeeld:

De lichtsensor meet minder dan 100 lux.

Of misschien:

De zon is onder.

Een voorwaarde bepaalt dus of een automatisering na de trigger verder mag gaan.

Je kunt het zien als een controlepunt.

De trigger zegt:

Kijk eens naar deze automatisering.

De voorwaarde zegt vervolgens:

Ja, onder deze omstandigheden mag je doorgaan.

Of:

Nee, nu hoeft er niets te gebeuren.

Acties

Het laatste gedeelte van onze zin is:

...moet het licht aangaan.

Dat is wat Home Assistant uiteindelijk moet uitvoeren.

Dit noemen we de actie.

Een actie kan bijvoorbeeld zijn:

  • een lamp inschakelen;
  • een stekker uitschakelen;
  • een melding versturen;
  • een rolluik sluiten;
  • een temperatuur instellen;
  • meerdere apparaten achter elkaar bedienen.

In ons voorbeeld is de actie heel eenvoudig:

Schakel het licht in De Werkplaats in.

De automatisering staat nu al bijna op papier

Wanneer we de gewone zin uitschrijven, krijgen we dus:

Trigger

Beweging wordt gedetecteerd in De Werkplaats.

Voorwaarde

Het is donker genoeg.

Actie

Schakel het licht in.

Dat is eigenlijk al het ontwerp van de automatisering.

We hebben nog geen enkel scherm in Home Assistant geopend.

Toch weten we precies wat er moet gebeuren.

Dat is een belangrijke gewoonte om jezelf aan te leren:

Beschrijf een automatisering eerst in gewone taal en bouw hem daarna pas in Home Assistant.

Het verschil tussen een trigger en een voorwaarde

Triggers en voorwaarden lijken soms sterk op elkaar.

Dat kan in het begin verwarrend zijn.

Stel dat je een lichtsensor in De Werkplaats hebt.

Je zou kunnen zeggen:

Zet de lamp aan wanneer het donker wordt.

Maar je zou ook kunnen zeggen:

Zet de lamp aan wanneer beweging wordt gedetecteerd, maar alleen wanneer het donker is.

In beide automatiseringen speelt dezelfde lichtsensor een rol.

Toch doet hij iets anders.

Bij de eerste automatisering is:

Het wordt donker.

de trigger.

De verandering in lichtniveau zet de automatisering in beweging.

Bij de tweede automatisering is:

Het is donker.

een voorwaarde.

De beweging is daar de trigger.

Dat verschil is belangrijk.

Een trigger gaat over een gebeurtenis of verandering waardoor Home Assistant gaat kijken.

Een voorwaarde gaat over de situatie die op dat moment waar moet zijn.

Stel jezelf één eenvoudige vraag

Wanneer je twijfelt of iets een trigger of een voorwaarde is, kun je jezelf deze vraag stellen:

Waardoor moet Home Assistant op dat moment wakker worden en naar deze automatisering kijken?

Het antwoord is meestal je trigger.

Bijvoorbeeld:

De deur wordt geopend.

Dat is een verandering.

Of:

Het wordt 07:00 uur.

Ook dat is een duidelijk moment.

Of:

De temperatuur komt boven 25 °C.

Ook hier gebeurt iets waardoor Home Assistant de automatisering kan starten.

Daarna kun je vragen:

Welke dingen moeten op dat moment nog meer kloppen?

Dat zijn je voorwaarden.

Nog een voorbeeld uit De Werkplaats

Stel dat je wilt voorkomen dat apparatuur onnodig blijft aanstaan.

Je bedenkt:

Als ik De Werkplaats een half uur niet meer gebruik, moet de werkbankverlichting uitgaan.

Dat klinkt eenvoudig, maar laten we ook deze zin ontleden.

De trigger zou kunnen zijn:

Er is gedurende 30 minuten geen aanwezigheid meer gedetecteerd.

De actie is:

Schakel de werkbankverlichting uit.

In dit geval hebben we misschien helemaal geen extra voorwaarde nodig.

De automatisering bestaat dan gewoon uit:

Trigger

30 minuten geen aanwezigheid.

Actie

Werkbankverlichting uit.

Een automatisering hoeft dus niet altijd alle drie de onderdelen te bevatten.

Een trigger en een actie zijn meestal voldoende.

Voorwaarden voeg je alleen toe wanneer ze werkelijk nodig zijn.

Dat houdt een automatisering begrijpelijk.

Niet iedere wens is meteen duidelijk genoeg

Soms lijkt een zin duidelijk, maar is hij dat technisch nog niet.

Bijvoorbeeld:

Als het koud wordt, moet de verwarming aangaan.

Wat betekent koud?

Voor jou misschien 18 °C.

Voor iemand anders 20 °C.

Home Assistant kan niet bepalen wat jij precies met koud bedoelt.

Je moet daarom van een menselijke omschrijving een meetbare regel maken.

Bijvoorbeeld:

Als de temperatuur in De Werkplaats onder 17 °C komt, moet de verwarming aangaan.

Dat is al veel beter.

Nu hebben we:

Trigger

Temperatuur daalt onder 17 °C.

Actie

Verwarming inschakelen.

Maar misschien wil je de verwarming alleen gebruiken wanneer je werkelijk in De Werkplaats bent.

Dan wordt het:

Als de temperatuur onder 17 °C komt en er iemand in De Werkplaats aanwezig is, moet de verwarming aangaan.

Nu krijgen we:

Trigger

Temperatuur daalt onder 17 °C.

Voorwaarde

Er is iemand aanwezig.

Actie

Verwarming inschakelen.

Door de zin steeds iets nauwkeuriger te maken, ontstaat vanzelf de structuur die Home Assistant nodig heeft.

Van vage woorden naar meetbare regels

In gewone gesprekken gebruiken we voortdurend woorden als:

  • donker;
  • warm;
  • koud;
  • laat;
  • vroeg;
  • lang;
  • bijna leeg;
  • niemand thuis;
  • genoeg zon.

Wij begrijpen meestal wat daarmee wordt bedoeld.

Home Assistant niet.

Daarom moet je zulke woorden vertalen naar iets wat Home Assistant kan meten of vaststellen.

Bijvoorbeeld:

Gewone taalMeetbare regel
Het is donkerLichtsterkte is lager dan 100 lux
Het is koudTemperatuur is lager dan 17 °C
Het is laatTijd is na 23:00 uur
Niemand is aanwezigAanwezigheidssensor is 30 minuten uit
Accu is bijna leegAccuniveau is lager dan 20%
Er is genoeg zonne-energieTeruglevering is groter dan 500 watt

De exacte waarden zijn niet universeel.

Misschien blijkt in De Werkplaats dat 100 lux veel te donker is.

Dan verander je bijvoorbeeld alleen die grenswaarde naar 150 lux en kijk je opnieuw wat er gebeurt.

Dat is beter dan tegelijk de trigger, voorwaarden en acties aanpassen.

Verander steeds één onderdeel tegelijk.

Zo blijft zichtbaar waardoor het gedrag verandert.

Voorspel eerst wat er zal gebeuren

Voordat je een automatisering opslaat, is het verstandig om één eenvoudige test te doen.

Lees je trigger, voorwaarden en acties terug en probeer te voorspellen wat Home Assistant zal doen.

Bijvoorbeeld:

Trigger

Beweging gedetecteerd.

Voorwaarde

Lichtsterkte lager dan 100 lux.

Actie

Lamp aan.

Stel nu:

  • de lichtsensor meet 250 lux;
  • de lamp is uit;
  • je loopt De Werkplaats binnen.

Wat verwacht je?

De bewegingssensor geeft het startsein.

Home Assistant controleert vervolgens de voorwaarde.

250 lux is niet lager dan 100 lux.

De voorwaarde is dus niet waar.

De lamp blijft uit.

Als dat ook precies is wat jij bedoelde, klopt het ontwerp.

Doe daarna hetzelfde met een andere situatie:

  • de lichtsensor meet 40 lux;
  • de lamp is uit;
  • je loopt binnen.

Nu wordt de automatisering gestart, de voorwaarde is waar en de lamp moet aangaan.

Zo'n voorspelling kost maar enkele seconden, maar voorkomt verrassend veel fouten.

Meerdere triggers

Een automatisering kan ook meerdere triggers hebben.

Bijvoorbeeld:

Zet de buitenverlichting aan wanneer het donker wordt óf wanneer ik na zonsondergang thuiskom.

Je hebt dan twee mogelijke startseinen.

Home Assistant hoeft niet te wachten tot beide gebeurtenissen plaatsvinden.

Eén trigger is voldoende om de automatisering te starten.

Dat is iets anders dan meerdere voorwaarden.

Wanneer je voorwaarden gebruikt, moet je juist goed bepalen welke daarvan tegelijk waar moeten zijn.

We houden dat voorlopig eenvoudig.

Eerst is het belangrijk dat je het basispatroon herkent:

iets gebeurt → situatie controleren → iets uitvoeren

Meerdere acties

Ook acties kunnen uit meerdere stappen bestaan.

Bijvoorbeeld:

Als ik 's avonds De Werkplaats verlaat, schakel dan het licht uit en zet de soldeerbout uit.

De automatisering zou dan kunnen bestaan uit:

Trigger

Geen aanwezigheid meer in De Werkplaats.

Voorwaarde

Het is na 18:00 uur.

Acties

  • Werkbankverlichting uitschakelen.
  • Slimme stekker van de soldeerbout uitschakelen.

Home Assistant voert de acties normaal gesproken in de aangegeven volgorde uit.

Dat kan later belangrijk worden wanneer de ene actie afhankelijk is van een andere.

Maar ook hier geldt: bouw liever eerst een eenvoudige automatisering die je begrijpt dan direct een lange reeks acties.

Schrijf het eerst op deze manier

Voor de komende hoofdstukken kun je deze eenvoudige indeling gebruiken:

Wat wil ik bereiken?

Beschrijf in één zin wat de automatisering moet doen.

Trigger

Wat geeft het startsein?

Voorwaarden

Wat moet op dat moment waar zijn?

Acties

Wat moet Home Assistant uitvoeren?

Voor onze verlichting in De Werkplaats wordt dat bijvoorbeeld:

Wat wil ik bereiken?

Wanneer ik een donkere Werkplaats binnenkom, moet de verlichting automatisch aangaan.

Trigger

Er wordt beweging gedetecteerd.

Voorwaarde

De lichtsterkte is lager dan 100 lux.

Actie

Schakel de werkbankverlichting in.

Dit kleine stukje voorbereiding maakt het bouwen in Home Assistant een stuk overzichtelijker.

Je hoeft nog niet te weten hoe Home Assistant dit noemt

Misschien weet je op dit moment nog niet welke keuze je straks precies in Home Assistant moet maken.

Moet je bijvoorbeeld kiezen voor een toestand, numerieke toestand, apparaat of iets anders?

Dat is geen probleem.

Dat komt later.

Eerst wil je leren denken in de structuur van een automatisering.

Wanneer je duidelijk kunt zeggen:

Dit is het startsein.

Dit moet op dat moment waar zijn.

En dit moet er daarna gebeuren.

dan heb je het belangrijkste deel al gedaan.

De schermen en instellingen van Home Assistant zijn daarna vooral een manier om die gedachte vast te leggen.

Controle: kun je de onderdelen aanwijzen?

Kijk naar deze zin:

Als de deur van De Werkplaats na zonsondergang opengaat, moet de buitenlamp vijf minuten aangaan.

Probeer voordat je verder leest zelf de drie onderdelen aan te wijzen.

Trigger

De deur gaat open.

Voorwaarde

De zon is onder.

Actie

De buitenlamp inschakelen.

Hier ontbreekt nog iets.

De lamp moet namelijk na vijf minuten ook weer uitgaan.

Dat betekent dat er eigenlijk nog twee acties nodig zijn:

  • lamp inschakelen;
  • vijf minuten wachten;
  • lamp uitschakelen.

Je ziet hoe een gewone zin door het ontleden steeds concreter wordt.

En juist tijdens dat ontleden ontdek je vaak details waar je aanvankelijk nog niet over had nagedacht.

Eerst de logica, daarna de techniek

Dat is misschien wel de belangrijkste les uit dit hoofdstuk.

Een automatisering begint niet bij een menu in Home Assistant.

Hij begint bij een duidelijke gedachte.

Je beschrijft eerst wat je wilt.

Daarna zoek je naar:

Trigger → Voorwaarden → Acties

Als die drie logisch zijn, wordt het bouwen veel gemakkelijker.

En als de automatisering later niet doet wat je verwacht, kun je dezelfde indeling gebruiken om de fout te zoeken:

  • kwam de trigger binnen?
  • waren de voorwaarden waar?
  • werden de acties uitgevoerd?

Zo verandert een automatisering van iets ondoorzichtigs in een klein stukje logica dat je kunt volgen en controleren.

In het volgende hoofdstuk bekijken we het eerste onderdeel daarvan uitgebreider:

Triggers — Wat geeft het startsein?

Daar gaan we onderzoeken welke gebeurtenissen een automatisering kunnen starten, waarom de keuze van een trigger zo belangrijk is en hoe je voorkomt dat een automatisering op het verkeerde moment begint.