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 taal | Meetbare regel |
|---|---|
| Het is donker | Lichtsterkte is lager dan 100 lux |
| Het is koud | Temperatuur is lager dan 17 °C |
| Het is laat | Tijd is na 23:00 uur |
| Niemand is aanwezig | Aanwezigheidssensor is 30 minuten uit |
| Accu is bijna leeg | Accuniveau is lager dan 20% |
| Er is genoeg zonne-energie | Teruglevering 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.