Hoofdstuk 6 van 22

Acties — Wat moet Home Assistant werkelijk doen?

In het vorige hoofdstuk heb je gezien dat een voorwaarde bepaalt of een automatisering na de trigger verder mag gaan. Daarmee heb je inmiddels twee…

In het vorige hoofdstuk heb je gezien dat een voorwaarde bepaalt of een automatisering na de trigger verder mag gaan.

Daarmee heb je inmiddels twee belangrijke vragen beantwoord:

  • Wanneer moet Home Assistant gaan kijken?
    Dat bepaalt de trigger.
  • Mag de automatisering op dat moment doorgaan?
    Dat bepalen de voorwaarden.

Maar uiteindelijk moet er natuurlijk ook iets gebeuren.

Dat is de taak van de actie.

Een actie vertelt Home Assistant wat het daadwerkelijk moet uitvoeren.

Bijvoorbeeld:

  • een lamp inschakelen;
  • een slimme stekker uitschakelen;
  • een melding naar je telefoon sturen;
  • een scène activeren;
  • een vertraging uitvoeren;
  • de helderheid van een lamp aanpassen;
  • meerdere handelingen achter elkaar uitvoeren.

Je kunt een automatisering daarom in gewone taal nog steeds zien als:

Als dit gebeurt, en dit klopt, doe dan dat.

De woorden “doe dan dat” vormen het actiegedeelte van de automatisering.

De actie is het zichtbare resultaat

Een trigger en een voorwaarde zijn vaak onzichtbaar.

Home Assistant controleert bijvoorbeeld dat:

  • de bewegingssensor beweging heeft gedetecteerd;
  • het buiten donker genoeg is;
  • het tijdstip tussen 07:00 en 23:00 ligt.

Pas wanneer de actie wordt uitgevoerd, zie je daar iets van terug.

De lamp gaat aan.

Dat maakt acties gemakkelijk om mee te beginnen. Je kunt meestal direct controleren of Home Assistant doet wat je verwacht.

Toch is het verstandig om ook hier rustig te werk te gaan.

Een actie kan namelijk heel eenvoudig zijn:

Zet de werkbanklamp aan.

Maar een automatisering kan later ook uit meerdere acties bestaan:

Zet de werkbanklamp aan.
Wacht twee seconden.
Zet de LED-strip aan.
Stuur een melding.

Voor je zulke reeksen gaat bouwen, is het belangrijk om eerst één actie goed te begrijpen.

Een eenvoudige actie in De Werkplaats

We gebruiken opnieuw De Werkplaats.

Stel dat daar een bewegingssensor hangt en dat je wilt dat de verlichting automatisch aangaat wanneer je binnenkomt.

De automatisering zou in gewone taal kunnen luiden:

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

We kunnen die zin nu verdelen:

Trigger

Er wordt beweging gedetecteerd.

Voorwaarde

Het is donker genoeg.

Actie

Zet de werkbanklamp aan.

Dat laatste onderdeel gaan we nu maken.

Een apparaat iets laten doen

Veel acties in Home Assistant bestaan uit het geven van een opdracht aan een apparaat.

Je kunt bijvoorbeeld zeggen:

Zet deze lamp aan.

Home Assistant vertaalt dat naar een opdracht die bij het betreffende apparaat hoort.

Wanneer je een actie toevoegt in de automatiseringseditor, kun je bijvoorbeeld kiezen voor een actie waarmee je een apparaat of entiteit bedient.

Bij een lamp zijn veelgebruikte mogelijkheden:

  • inschakelen;
  • uitschakelen;
  • schakelen;
  • helderheid instellen;
  • soms kleur of kleurtemperatuur instellen.

Welke mogelijkheden je ziet, hangt af van het apparaat.

Een eenvoudige aan/uitlamp heeft nu eenmaal minder mogelijkheden dan een dimbare RGB-lamp.

Eerst voorspellen

Voordat je de actie toevoegt, is het opnieuw nuttig om jezelf één vraag te stellen:

Wat verwacht ik dat er precies gebeurt wanneer deze actie wordt uitgevoerd?

In ons voorbeeld:

Alleen de werkbanklamp moet aangaan.

Niet:

  • alle lampen in De Werkplaats;
  • de verlichting in het hele huis;
  • een andere schakelaar;
  • een compleet lichtscenario.

Dat lijkt vanzelfsprekend, maar juist door deze verwachting vooraf uit te spreken kun je straks veel gemakkelijker controleren of de automatisering correct werkt.

De actie toevoegen

Open de automatisering die je in de vorige hoofdstukken hebt opgebouwd.

Je hebt daar al een trigger en een voorwaarde ingesteld.

Ga nu naar het onderdeel:

Acties

Kies vervolgens voor het toevoegen van een actie.

Selecteer daarna de lamp die je wilt bedienen en kies de opdracht waarmee je deze inschakelt.

Bijvoorbeeld:

Werkbanklamp inschakelen

Sla de automatisering nog niet gedachteloos op.

Controleer eerst wat er precies staat.

Je automatisering moet conceptueel ongeveer dit zeggen:

Wanneer

Beweging wordt gedetecteerd.

En als

Het lichtniveau laag genoeg is.

Dan

Werkbanklamp inschakelen.

Als je deze drie onderdelen in gewone taal kunt lezen en begrijpen, is dat een goed teken.

Een actie handmatig testen

Voor acties heeft Home Assistant een bijzonder handige mogelijkheid: je kunt ze meestal los testen.

Dat is nuttig omdat je dan niet hoeft te wachten totdat de trigger vanzelf optreedt.

Stel dat de trigger een bewegingssensor is.

Je zou natuurlijk meerdere keren door De Werkplaats kunnen lopen om te testen of de lamp aangaat.

Maar als je eerst alleen wilt weten of de actie correct is ingesteld, is dat onnodig.

Test daarom eerst de actie zelf.

Voorspel:

Wanneer ik deze actie uitvoer, gaat alleen de werkbanklamp aan.

Voer vervolgens de actie uit.

Kijk naar de lamp.

Gaat hij aan?

Dan weet je dat het actiegedeelte in ieder geval werkt.

Eén onderdeel tegelijk testen

Dit is een belangrijk principe bij automatiseringen:

Test onderdelen zoveel mogelijk afzonderlijk.

Een automatisering kan uit drie hoofdonderdelen bestaan:

  • trigger;
  • voorwaarden;
  • acties.

Als de automatisering niet werkt en je probeert alles tegelijk te onderzoeken, weet je niet waar het probleem zit.

Wanneer je de actie afzonderlijk test, kun je alvast één vraag beantwoorden:

Kan Home Assistant de lamp überhaupt inschakelen?

Als het antwoord ja is, hoef je daar later niet meer naar te zoeken.

Werkt de volledige automatisering daarna niet, dan kun je verder kijken naar de trigger of de voorwaarden.

Dat maakt foutzoeken veel overzichtelijker.

Een actie kan ook mislukken

Stel dat je de actie test en de lamp gaat niet aan.

Dat betekent niet meteen dat de automatisering verkeerd is opgebouwd.

Het vertelt je alleen:

De opdracht heeft niet het verwachte resultaat.

Nu kun je verder onderzoeken.

Controleer bijvoorbeeld:

  • kun je de lamp vanaf het dashboard handmatig bedienen?
  • is de lamp beschikbaar?
  • heb je de juiste entiteit gekozen?
  • heeft het apparaat verbinding met Home Assistant?
  • staat de lamp misschien fysiek zonder stroom?

Verander niet meteen vijf instellingen tegelijk.

Controleer eerst één ding.

Probeer daarna opnieuw.

Een fout is hier geen eindpunt. Het is informatie waarmee je het volgende onderdeel kunt onderzoeken.

Apparaten en entiteiten

Bij het maken van acties kom je opnieuw het begrip entiteit tegen.

Een entiteit is de manier waarop Home Assistant een specifieke functie of waarde binnen Home Assistant beschikbaar maakt.

Een slimme lamp kan bijvoorbeeld een entiteit hebben zoals:

light.werkbank

Een slimme stekker zou bijvoorbeeld kunnen verschijnen als:

switch.soldeerstation

De exacte naam is minder belangrijk dan het principe.

Een apparaat kan meerdere entiteiten bevatten.

Een slimme stekker kan bijvoorbeeld niet alleen een schakelaar hebben, maar ook sensoren voor:

  • vermogen;
  • energieverbruik;
  • spanning.

Wanneer je een actie maakt, is het daarom belangrijk dat je de juiste entiteit kiest.

Als je iets wilt inschakelen, heb je de schakelbare entiteit nodig.

Niet de sensor die toevallig het stroomverbruik meet.

Acties zijn opdrachten

Tot nu toe hebben we gezegd dat een actie bijvoorbeeld een lamp kan inschakelen.

Onder de motorkap geeft Home Assistant daarvoor een opdracht aan een bepaald onderdeel.

Je hoeft de technische details daarvan nog niet uit je hoofd te kennen.

Het belangrijkste is dat je begrijpt wat er gebeurt.

Home Assistant krijgt bijvoorbeeld de opdracht:

Schakel deze lamp in.

Daarbij hoort een doel:

De werkbanklamp.

Je kunt een actie daarom bekijken als twee vragen:

Wat moet Home Assistant doen?

Inschakelen.

Waarmee moet Home Assistant dat doen?

Met de werkbanklamp.

Dat eenvoudige onderscheid helpt later wanneer automatiseringen ingewikkelder worden.

Eén actie kan meerdere apparaten bedienen

Je hoeft niet voor iedere lamp per se een volledig aparte automatisering te maken.

Een actie kan ook meerdere doelen bevatten.

Stel dat De Werkplaats twee lampen heeft:

  • Werkbanklamp;
  • Kastverlichting.

Je zou dan kunnen zeggen:

Zet beide lampen aan.

Dat kan handig zijn wanneer ze altijd samen gebruikt worden.

Maar wees voorzichtig met het te vroeg samenvoegen van apparaten.

Vooral tijdens het leren is het vaak duidelijker om eerst één lamp te bedienen.

Wanneer die correct werkt, kun je een tweede toevoegen.

Zo blijft zichtbaar welke verandering welk effect heeft.

Meerdere acties achter elkaar

Een automatisering hoeft niet uit precies één actie te bestaan.

Je kunt acties achter elkaar plaatsen.

Bijvoorbeeld:

  • Werkbanklamp inschakelen.
  • Kastverlichting inschakelen.
  • Een melding sturen.

Home Assistant voert deze acties normaal gesproken in volgorde uit.

Dus eerst actie één, daarna actie twee en vervolgens actie drie.

Dat betekent dat de volgorde belangrijk kan zijn.

Bij verlichting maakt het misschien weinig verschil.

Maar later kan een automatisering bijvoorbeeld zeggen:

  • Zet een apparaat aan.
  • Wacht tien seconden.
  • Controleer iets.
  • Voer een volgende handeling uit.

Dan wordt de volgorde onderdeel van de logica.

Een vertraging is ook een actie

Een actie hoeft niet altijd direct een apparaat te bedienen.

Je kunt Home Assistant bijvoorbeeld ook laten wachten.

Dat heet een vertraging, of in de interface soms een delay.

Bijvoorbeeld:

Zet de lamp aan.
Wacht vijf minuten.
Zet de lamp uit.

Dit lijkt aantrekkelijk voor bijvoorbeeld een bewegingssensor.

Maar daar zit een belangrijke valkuil in.

Stel dat iemand na vier minuten opnieuw door De Werkplaats loopt.

Wat moet er dan gebeuren?

Moet de oorspronkelijke wachttijd gewoon doorgaan?

Moet de vijf minuten opnieuw beginnen?

Dat soort vragen wordt belangrijk zodra je tijd en meerdere gebeurtenissen combineert.

Daarom behandelen we zulke constructies later uitgebreider.

Voor nu is vooral belangrijk dat je weet dat wachten ook onderdeel kan zijn van het actiegedeelte.

Een melding sturen

Een actie hoeft ook niet fysiek zichtbaar te zijn in huis.

Home Assistant kan bijvoorbeeld een melding sturen naar je telefoon.

Een automatisering zou kunnen zeggen:

Als de temperatuur in De Werkplaats onder 5 °C komt, stuur dan een melding.

De actie is dan:

Stuur een melding.

De tekst zou bijvoorbeeld kunnen zijn:

De temperatuur in De Werkplaats is onder 5 °C gezakt.

Dit soort meldingen kan nuttig zijn bij situaties waarin je niet direct in dezelfde ruimte aanwezig bent.

Denk aan:

  • een te lage temperatuur;
  • een lekkagesensor;
  • een deur die nog openstaat;
  • een apparaat dat onverwacht veel vermogen gebruikt.

Ook hierbij geldt: begin eenvoudig.

Test eerst of de melding aankomt voordat je er allerlei voorwaarden omheen bouwt.

Een actie hoeft niet altijd “aan” te betekenen

Bij automatiseringen denken we snel aan iets inschakelen.

Maar vaak is juist uitschakelen minstens zo belangrijk.

Bijvoorbeeld:

Als er gedurende langere tijd geen beweging meer is, zet dan de verlichting uit.

De actie is dan:

Werkbanklamp uitschakelen.

Andere acties kunnen zijn:

  • rolluik sluiten;
  • verwarming lager zetten;
  • ventilatie verhogen;
  • muziek stoppen;
  • een scène activeren;
  • een helper aanpassen;
  • een melding versturen.

Het actiegedeelte zegt dus niet wanneer iets moet gebeuren.

Het beschrijft alleen wat Home Assistant vervolgens moet doen.

Maak acties zo duidelijk mogelijk

Wanneer automatiseringen groeien, wordt leesbaarheid steeds belangrijker.

Vergelijk deze twee beschrijvingen:

Lamp aan.

en:

Werkbanklamp inschakelen wanneer De Werkplaats gebruikt wordt.

De tweede omschrijving vertelt veel beter wat de bedoeling is.

Dat helpt vooral wanneer je maanden later terugkomt bij een automatisering.

Je weet dan misschien nog dat je ooit iets met een bewegingssensor hebt gemaakt, maar niet meer waarom een bepaalde lamp precies werd geschakeld.

Duidelijke namen en beschrijvingen besparen later veel zoekwerk.

Wat gebeurt er als een actie niet kan worden uitgevoerd?

Stel dat de werkbanklamp tijdelijk niet bereikbaar is.

De automatisering kan dan wel worden gestart, maar Home Assistant kan de opdracht mogelijk niet uitvoeren.

Dat verschil is belangrijk.

De trigger kan correct zijn geweest.

De voorwaarden kunnen correct zijn geweest.

Maar de actie kan alsnog mislukken.

Je kunt een automatisering daarom zien als een keten:

Trigger

Voorwaarden

Acties

Op ieder punt kan iets anders gebeuren.

Dat is precies waarom je onderdelen afzonderlijk probeert te controleren.

Een complete eerste automatisering

We hebben inmiddels alle drie de basisdelen behandeld.

Laten we ze nog eenmaal samenbrengen.

We willen:

Wanneer iemand De Werkplaats binnenkomt en het daar donker is, moet de werkbanklamp aangaan.

De automatisering wordt:

Trigger

De bewegingssensor detecteert beweging.

Voorwaarde

Het gemeten lichtniveau is lager dan de gekozen grenswaarde.

Actie

De werkbanklamp wordt ingeschakeld.

Lees dit nu opnieuw als gewone zin:

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

Dat is dezelfde zin waarmee we begonnen.

Alleen weet je nu hoe Home Assistant deze zin opdeelt.

Eerst voorspellen, dan uitvoeren

Test de automatisering niet zomaar.

Maak eerst een kleine voorspelling.

Bijvoorbeeld:

Het is nu donker genoeg.
Wanneer ik langs de bewegingssensor loop, verwacht ik dat de werkbanklamp aangaat.

Voer daarna de test uit.

Kijk wat er werkelijk gebeurt.

Er zijn grofweg twee mogelijkheden.

De lamp gaat aan.

Dan werkt de basisautomatisering zoals verwacht.

De lamp gaat niet aan.

Dan heb je iets te onderzoeken.

Controleer opnieuw stap voor stap:

  • Heeft de bewegingssensor werkelijk beweging geregistreerd?
  • Was de voorwaarde waar?
  • Kan de actie afzonderlijk de lamp inschakelen?

Door die drie vragen één voor één te beantwoorden, verandert een onduidelijke foutmelding in een concreet onderzoek.

Maak niet meteen alles automatisch

Wanneer je eenmaal doorhebt hoe acties werken, is het verleidelijk om meteen complete routines te bouwen.

Bijvoorbeeld:

Als ik De Werkplaats binnenkom, zet dan de lampen aan, start de ventilatie, schakel het soldeerstation in, zet muziek aan en stuur een melding.

Technisch kan dat misschien.

Maar een goede automatisering is niet degene die het meeste doet.

Een goede automatisering doet precies wat jij verwacht en waarvan je begrijpt waarom het gebeurt.

Begin daarom liever met:

Zet de werkbanklamp aan.

Gebruik dat een tijdje.

Kijk of de trigger betrouwbaar werkt.

Controleer of de voorwaarde logisch is.

Pas daarna voeg je eventueel een volgende actie toe.

Zo groeit de automatisering samen met je begrip ervan.

Wanneer één rechte lijst met acties niet genoeg is

Tot nu toe hebben we aangenomen dat Home Assistant na de voorwaarden gewoon een vaste reeks acties uitvoert.

Bijvoorbeeld:

Lamp aan.
LED-strip aan.
Melding sturen.

Maar soms wil je niet altijd dezelfde actie uitvoeren.

Stel dat je zegt:

Als ik De Werkplaats binnenkom,
zet overdag alleen de werkbanklamp aan,
maar zet 's avonds ook de kastverlichting aan.

Nu is er niet langer één vaste uitkomst.

Home Assistant moet een beslissing maken.

Er zijn meerdere mogelijke paden.

Precies daarvoor heeft Home Assistant een onderdeel waarmee je verschillende situaties kunt laten kiezen tussen verschillende acties.

Dat onderdeel heet Choose.

In het volgende hoofdstuk kijken we hoe je daarmee meerdere beslissingen binnen één automatisering kunt maken.