Hoofdstuk 11 van 22

Helpers — Geef je automatisering geheugen en instellingen

In het vorige hoofdstuk heb je gezien hoe scripts en scènes helpen om automatiseringen overzichtelijk te houden. Je hoeft dezelfde acties dan niet steeds…

In het vorige hoofdstuk heb je gezien hoe scripts en scènes helpen om automatiseringen overzichtelijk te houden. Je hoeft dezelfde acties dan niet steeds opnieuw te bouwen en kunt duidelijker scheiden wanneer iets gebeurt, welke stappen uitgevoerd worden en welke toestand je wilt bereiken.

Maar er blijft nog een ander probleem over.

Soms wil je dat een automatisering iets kan onthouden of dat je zelf een waarde kunt instellen die later door meerdere automatiseringen wordt gebruikt.

Bijvoorbeeld:

  • automatische verlichting wel of niet toestaan;
  • een gewenste temperatuur instellen;
  • een vakantiestand inschakelen;
  • aangeven dat je in De Werkplaats aan het filmen bent;
  • een wachttijd instelbaar maken;
  • onthouden wanneer iets voor het laatst is gebeurd.

Je zou zulke instellingen rechtstreeks in iedere automatisering kunnen verwerken.

Maar dan krijg je opnieuw hetzelfde probleem als bij dubbele acties: dezelfde informatie komt op verschillende plaatsen terecht.

Home Assistant heeft hiervoor helpers.

Een helper is een entiteit die je zelf aanmaakt en die je kunt gebruiken als instelling, schakelaar, teller, tijdstip of geheugenwaarde.

Een helper is een zelfgemaakte entiteit

Je hebt eerder al kennisgemaakt met entiteiten.

Een temperatuursensor kan bijvoorbeeld een entiteit zijn.

Een lamp is een entiteit.

Een slimme stekker is een entiteit.

Helpers werken volgens hetzelfde principe, maar het verschil is dat ze niet rechtstreeks bij een fysiek apparaat horen.

Je maakt ze zelf in Home Assistant.

Een helper kan bijvoorbeeld een eenvoudige aan-uitwaarde bevatten:

Automatische verlichting Werkplaats

Die helper kan twee toestanden hebben:

  • aan;
  • uit.

Je kunt hem daarna bijna net zo gebruiken als een gewone schakelaar.

Een automatisering kan controleren of de helper aanstaat.

Een andere automatisering kan hem inschakelen.

En je kunt hem als knop op je dashboard zetten.

Daarmee maak je als het ware je eigen instelling binnen Home Assistant.

Waarom zou je dat willen?

Stel dat je in De Werkplaats een bewegingssensor gebruikt.

Wanneer er beweging wordt gedetecteerd en het donker is, gaat de verlichting automatisch aan.

Dat werkt prima.

Maar tijdens het opnemen van een video wil je misschien niet dat Home Assistant onverwacht de verlichting verandert.

Je zou de automatisering tijdelijk kunnen uitschakelen.

Dat kan.

Maar daarmee schakel je de volledige automatisering uit. Bovendien moet je later onthouden dat je hem weer moet inschakelen.

Een helper geeft je een andere mogelijkheid.

Je maakt bijvoorbeeld:

Automatische verlichting Werkplaats

De automatisering krijgt vervolgens een extra voorwaarde:

Ga alleen verder wanneer Automatische verlichting Werkplaats aan staat.

Wil je de automatische verlichting tijdelijk niet gebruiken?

Dan zet je alleen die helper uit.

De automatisering blijft gewoon bestaan en blijft ingeschakeld, maar krijgt geen toestemming om de verlichting te veranderen.

Dat verschil maakt helpers bijzonder bruikbaar.

De eerste helper: een schakelaar

Een van de eenvoudigste helpers is een schakelaar, in Home Assistant vaak aangeduid als een invoerboolean of input_boolean.

Je kunt hem zien als een virtuele aan-uitknop.

Maak bijvoorbeeld een helper:

Automatische verlichting Werkplaats

Je vindt helpers via:

Instellingen → Apparaten & diensten → Helpers

Maak daar een nieuwe helper en kies een type waarmee je een aan-uitwaarde kunt bewaren.

Na het opslaan verschijnt er een nieuwe entiteit.

De exacte entiteitsnaam hangt af van de naam die je hebt gekozen, bijvoorbeeld:

input_boolean.automatische_verlichting_werkplaats

Die technische naam hoef je niet uit je hoofd te leren, maar het is wel nuttig om te herkennen wat je ziet.

Gebruik de helper als voorwaarde

Nu kun je de helper toevoegen aan je bestaande automatisering voor de Werkplaats.

De logica wordt bijvoorbeeld:

Als er beweging wordt gezien,
én het is donker genoeg,
én automatische verlichting is toegestaan,
zet dan de verlichting aan.

De helper wordt dus een extra voorwaarde.

Voordat je test, voorspel je eerst het gedrag.

Situatie 1

De helper staat aan.

Je loopt De Werkplaats binnen.

Wat verwacht je?

De verlichting moet reageren zoals voorheen.

Situatie 2

De helper staat uit.

Je loopt opnieuw De Werkplaats binnen.

Nu moet de trigger nog steeds plaatsvinden, maar de automatisering mag niet verdergaan.

Dat is een belangrijk verschil.

De bewegingssensor werkt nog.

De automatisering wordt nog steeds gestart.

Alleen de voorwaarde blokkeert de acties.

Controleer dit eventueel in de trace van de automatisering.

Daar kun je vaak precies zien:

  • de trigger is uitgevoerd;
  • de eerste voorwaarden waren waar;
  • de helper stond uit;
  • de uitvoering is daar gestopt.

Zo wordt een helper niet alleen een instelling, maar ook iets dat je duidelijk kunt terugzien bij foutzoeken.

Zet de helper op je dashboard

Een helper wordt pas echt praktisch wanneer je hem gemakkelijk kunt bedienen.

Voeg daarom de helper toe aan je dashboard.

Je krijgt dan bijvoorbeeld een schakelaar:

Automatische verlichting Werkplaats

Nu hoef je niet naar de automatisering zelf om het gedrag te veranderen.

Je verandert alleen de instelling.

Dat is een belangrijk ontwerpprincipe:

Een automatisering bepaalt het gedrag, een helper kan het gedrag instelbaar maken.

Je hoeft dus niet iedere keer de automatisering aan te passen wanneer je alleen een voorkeur wilt veranderen.

Helpers kunnen meer dan aan en uit

Een aan-uithelper is de eenvoudigste vorm, maar er zijn verschillende soorten helpers.

Welke je nodig hebt, hangt af van het soort informatie dat je wilt bewaren.

Veel gebruikte vormen zijn:

  • aan of uit;
  • een getal;
  • een keuzelijst;
  • datum en tijd;
  • tekst;
  • een teller;
  • een timer.

Je hoeft ze niet allemaal meteen te gebruiken.

Het is belangrijker dat je begrijpt waarom verschillende soorten bestaan.

Een getal als instelbare grenswaarde

Stel dat je verlichting nu aangaat wanneer de lichtsensor minder dan 400 lux meet.

Je zou die 400 rechtstreeks in de automatisering kunnen zetten.

Dat werkt goed.

Maar misschien wil je later experimenteren.

Is 400 lux te donker?

Misschien blijkt 500 lux prettiger.

Of juist 300 lux.

Iedere keer de automatisering openen om één getal te veranderen is mogelijk, maar niet erg handig.

Je kunt daarvoor een numerieke helper maken, bijvoorbeeld:

Lichtgrens Werkplaats

Stel hem in op:

400 lux

Je automatisering gebruikt dan niet langer een vast getal, maar de waarde van de helper.

Conceptueel wordt de voorwaarde:

Ga verder wanneer de gemeten lichtwaarde lager is dan de ingestelde lichtgrens.

Nu kun je de grenswaarde via het dashboard aanpassen zonder de automatisering zelf te wijzigen.

Dat maakt experimenteren eenvoudiger.

Verander steeds één waarde

Dit is een goed moment om dezelfde werkwijze te gebruiken die je in eerdere hoofdstukken hebt toegepast.

Verander niet meteen vijf instellingen tegelijk.

Stel de lichtgrens eerst bijvoorbeeld in op:

400 lux

Observeer wanneer de verlichting inschakelt.

Pas hem daarna aan naar:

500 lux

Observeer opnieuw.

Wat verandert er?

Door maar één waarde tegelijk te wijzigen, kun je veel beter beoordelen wat het effect daarvan is.

Dat is vooral nuttig bij automatiseringen die afhankelijk zijn van sensorwaarden.

Een keuzelijst voor verschillende modi

Soms heb je meer nodig dan alleen aan of uit.

Stel dat De Werkplaats verschillende gebruikssituaties kent:

  • Normaal
  • Filmen
  • Schoonmaken
  • Niet thuis

Je kunt daarvoor meerdere aan-uithelpers maken.

Dat kan, maar daarmee kun je ook onmogelijke combinaties krijgen.

Bijvoorbeeld:

  • Normaal = aan
  • Filmen = aan
  • Schoonmaken = aan

Welke stand geldt dan?

Een keuzelijst is in zo'n situatie duidelijker.

Je maakt bijvoorbeeld een helper:

Modus Werkplaats

met de keuzes:

  • Normaal
  • Filmen
  • Schoonmaken
  • Uit

Er kan dan maar één keuze tegelijk actief zijn.

Een automatisering kan vervolgens met choose bepalen wat er moet gebeuren.

Bijvoorbeeld:

Als modus = Normaal, gebruik de gewone verlichting.

Als modus = Filmen, verander de verlichting niet automatisch.

Als modus = Schoonmaken, zet alle verlichting helder aan.

Hier komen verschillende onderdelen uit eerdere hoofdstukken samen:

  • de helper bewaart de gekozen modus;
  • choose bepaalt welk pad wordt uitgevoerd;
  • een scène kan de gewenste verlichting instellen;
  • een script kan een reeks acties uitvoeren.

Helpers maken automatiseringen beter leesbaar

Vergelijk deze twee gedachten.

Zonder helper

Als beweging wordt gezien en de lichtwaarde onder 400 lux ligt en het tijdstip tussen 07:00 en 23:30 ligt en vandaag geen opname plaatsvindt en de tijdelijke blokkering niet actief is...

Daar kunnen steeds meer vaste waarden en uitzonderingen bijkomen.

Met helpers

Als beweging wordt gezien en automatische verlichting is toegestaan.

De verdere instellingen kunnen elders duidelijk benoemd zijn.

Bijvoorbeeld:

  • automatische verlichting: aan;
  • modus Werkplaats: Normaal;
  • lichtgrens: 400 lux.

Dat maakt niet automatisch iedere automatisering eenvoudiger, maar het helpt om instellingen los te trekken van de logica.

Een timer is iets anders dan een vertraging

In een eerder hoofdstuk heb je gewerkt met vertragingen.

Bijvoorbeeld:

Wacht tien minuten en zet daarna het licht uit.

Dat werkt zolang de automatisering of het script actief blijft.

Een timerhelper werkt anders.

Een timer is zelf een entiteit.

Je kunt hem starten, stoppen en opnieuw starten.

Home Assistant kan bovendien reageren wanneer de timer is afgelopen.

Stel dat je een timer maakt:

Werkplaats verlichting nalooptijd

met een duur van tien minuten.

Wanneer geen beweging meer wordt gezien, start je de timer.

Wordt er opnieuw beweging gedetecteerd?

Dan kun je de timer opnieuw starten of stoppen.

Loopt de timer helemaal af?

Dan kan een andere automatisering de verlichting uitschakelen.

Dat is iets meer werk dan een eenvoudige vertraging, maar bij uitgebreidere automatiseringen kan het gedrag daardoor duidelijker worden.

Timer of delay?

Gebruik een gewone vertraging wanneer je vooral bedoelt:

Wacht hier even voordat de volgende actie wordt uitgevoerd.

Gebruik een timerhelper wanneer de wachttijd zelf een onderdeel van je systeem wordt.

Bijvoorbeeld wanneer je:

  • de resterende tijd wilt kunnen bekijken;
  • de timer wilt kunnen stoppen;
  • hem opnieuw wilt starten;
  • meerdere automatiseringen erop wilt laten reageren.

Voor een eenvoudige automatisering is een timer dus niet automatisch beter.

Kies het eenvoudigste hulpmiddel dat het gedrag duidelijk houdt.

Een teller voor gebeurtenissen

Een andere helper is een teller.

Daarmee kun je een getal verhogen of verlagen.

Je zou bijvoorbeeld kunnen tellen hoe vaak een deur vandaag geopend is.

Of hoe vaak een bepaalde testautomatisering is uitgevoerd.

Voor een permanente oplossing zijn statistieken of andere functies soms geschikter, maar tijdens het leren kan een teller heel duidelijk laten zien wat er gebeurt.

Stel dat je wilt weten of een trigger echt iedere keer wordt uitgevoerd.

Maak tijdelijk een teller:

Aantal bewegingen Werkplaats

Laat de automatisering de teller met één verhogen wanneer de bewegingssensor activeert.

Loop daarna een paar keer De Werkplaats in en uit.

Controleer de teller.

Zo kun je zichtbaar maken wat anders alleen in traces of logboeken terug te vinden is.

Een datum- en tijdhelper

Soms wil je zelf een tijdstip kunnen instellen.

Bijvoorbeeld:

Werkplaats automatisch uitschakelen om 23:30

Je kunt 23:30 rechtstreeks in de automatisering zetten.

Maar als je het tijdstip regelmatig wilt veranderen, is een tijdhelper handiger.

Je maakt bijvoorbeeld:

Uitschakeltijd Werkplaats

en stelt die in op 23:30.

De automatisering kan die waarde vervolgens gebruiken.

Het voordeel is opnieuw hetzelfde:

je verandert de instelling, niet de automatisering.

Helpers als eenvoudige bediening

Een helper hoeft niet altijd iets automatisch te onthouden.

Hij kan ook fungeren als bediening.

Stel dat je een knop op het dashboard wilt waarmee je aangeeft:

Ik ben aan het filmen

Je kunt daarvoor een aan-uithelper gebruiken.

Wanneer je hem inschakelt:

  • mag de bewegingsgestuurde verlichting niet veranderen;
  • mogen bepaalde meldingen niet verschijnen;
  • kan eventueel een andere scène worden geactiveerd.

Wanneer je klaar bent, zet je de helper weer uit.

Je creëert daarmee een eenvoudige koppeling tussen jou en je automatiseringen.

Het systeem hoeft niet altijd zelf te raden wat je doet.

Soms is één duidelijke handmatige instelling betrouwbaarder.

Automatisering is niet hetzelfde als raden

Bij slimme huizen ontstaat gemakkelijk het idee dat alles vanzelf moet worden afgeleid.

Een systeem zou bijvoorbeeld moeten kunnen weten dat je een video opneemt.

Misschien kan dat uiteindelijk via:

  • aanwezigheid;
  • computergebruik;
  • camera's;
  • microfoons;
  • agenda's;
  • netwerkgegevens.

Maar hoe meer indirecte signalen je gebruikt, hoe groter de kans dat het systeem verkeerd concludeert wat er gebeurt.

Een eenvoudige helper met:

Filmmodus: aan

kan veel betrouwbaarder zijn.

Automatiseren betekent niet dat iedere handmatige bediening verboden is.

Een goede automatisering vermindert onnodig werk zonder onvoorspelbaar te worden.

Wie verandert de helper?

Bij helpers is het nuttig om onderscheid te maken tussen twee soorten gebruik.

Jij verandert de helper

Bijvoorbeeld:

  • vakantiestand;
  • filmmodus;
  • gewenste temperatuur;
  • automatische verlichting aan/uit.

De helper is dan vooral een instelling.

Een automatisering verandert de helper

Bijvoorbeeld:

  • onthouden dat een bepaalde gebeurtenis heeft plaatsgevonden;
  • een teller verhogen;
  • een timer starten;
  • een interne toestand wijzigen.

De helper wordt dan meer een vorm van geheugen.

Beide zijn geldig.

Maar geef een helper een naam waaruit duidelijk blijkt wat hij betekent.

Gebruik helpers niet als verborgen puzzel

Helpers kunnen automatiseringen duidelijker maken, maar ook juist ingewikkelder.

Stel dat je helpers maakt met namen als:

  • Schakelaar 1
  • Status A
  • Test
  • Boolean 3

Na een paar maanden weet je waarschijnlijk niet meer waarvoor ze dienen.

Gebruik daarom namen die de betekenis beschrijven.

Bijvoorbeeld:

  • Automatische verlichting Werkplaats
  • Filmmodus Werkplaats
  • Lichtgrens Werkplaats
  • Uitschakeltijd Werkplaats
  • Nalooptijd Werkplaats

De naam beschrijft niet alleen het type helper, maar vooral waarvoor hij wordt gebruikt.

Wees voorzichtig met te veel geheugen

Een helper kan een eerdere keuze of toestand bewaren.

Dat is handig, maar je moet ook bedenken wat er gebeurt na verloop van tijd.

Stel dat je op vrijdagavond de helper:

Filmmodus Werkplaats

inschakelt.

Je bent klaar met filmen, maar vergeet hem uit te zetten.

Op zaterdagochtend werkt de automatische verlichting ineens niet meer.

Technisch doet Home Assistant precies wat je hebt gevraagd.

De helper staat nog steeds aan.

Dit soort fouten voelt vaak alsof een automatisering "zomaar" niet werkt.

Daarom is het belangrijk dat belangrijke helpers zichtbaar zijn.

Bijvoorbeeld op een dashboard.

Of dat je een automatisering maakt die een tijdelijke stand na verloop van tijd automatisch herstelt.

Maar voeg zo'n herstelautomatisering pas toe wanneer je het oorspronkelijke gedrag goed begrijpt.

Test geheugen bewust

Je kunt het gedrag van een helper eenvoudig testen.

Maak bijvoorbeeld de helper:

Automatische verlichting Werkplaats

Zet hem aan.

Herstart daarna niet meteen allerlei onderdelen.

Controleer eerst alleen of de waarde behouden blijft terwijl je andere pagina's opent.

Gebruik hem vervolgens in een eenvoudige automatisering.

Zet hem uit.

Activeer de trigger opnieuw.

Observeer wat er gebeurt.

Zet hem daarna weer aan en test opnieuw.

Door bewust tussen twee toestanden te wisselen, zie je precies welke invloed de helper heeft.

Een praktische opbouw voor De Werkplaats

Je zou de automatiseringen in De Werkplaats nu bijvoorbeeld als volgt kunnen organiseren.

Helper

Automatische verlichting Werkplaats

Bepaalt of automatische verlichting is toegestaan.

Helper

Modus Werkplaats

Mogelijke waarden:

  • Normaal
  • Filmen
  • Schoonmaken

Helper

Lichtgrens Werkplaats

Bijvoorbeeld:

400 lux.

Scènes

  • Werkplaats normaal
  • Werkplaats filmen
  • Werkplaats schoonmaken

Script

Werkplaats verlichting instellen

Kiest afhankelijk van de modus de juiste scène.

Automatisering

Bij beweging:

  • controleer of automatische verlichting is toegestaan;
  • controleer de lichtwaarde;
  • start het script.

Je ziet dat ieder onderdeel nu een vrij duidelijke taak heeft.

Dat betekent niet dat je dit meteen allemaal moet bouwen.

Het laat vooral zien hoe de bouwstenen die je inmiddels kent samen kunnen werken.

Wanneer gebruik je een helper?

Een helper is vooral nuttig wanneer een waarde:

  • door meerdere automatiseringen gebruikt wordt;
  • regelmatig moet kunnen worden aangepast;
  • zichtbaar of bedienbaar moet zijn op een dashboard;
  • een keuze of toestand moet onthouden;
  • niet rechtstreeks van een fysiek apparaat afkomstig is.

Gebruik geen helper alleen omdat het kan.

Als een grenswaarde altijd 400 lux blijft en je hem nooit hoeft te wijzigen, kan een vaste waarde in de automatisering juist duidelijker zijn.

Ook hier geldt:

Maak het systeem niet ingewikkelder dan nodig.

Van vaste regels naar instelbaar gedrag

Helpers veranderen de manier waarop je naar automatiseringen kunt kijken.

Tot nu toe schreef je vooral regels zoals:

Als dit gebeurt, doe dan dat.

Met helpers kun je zeggen:

Als dit gebeurt, kijk dan eerst naar de instellingen en bepaal daarna wat je moet doen.

Je automatiseringen worden daardoor flexibeler zonder dat je voortdurend de automatiseringen zelf hoeft te wijzigen.

Maar er komt een moment waarop gewone voorwaarden niet meer voldoende zijn.

Stel dat je niet alleen wilt controleren:

Is de lichtwaarde lager dan 400 lux?

maar bijvoorbeeld:

Is de lichtwaarde lager dan de waarde die ik in een helper heb ingesteld?

Of:

Is het temperatuurverschil tussen binnen en buiten groter dan vijf graden?

Of:

Maak een tekstmelding waarin de actuele temperatuur, luchtvochtigheid en ingestelde modus worden gecombineerd.

Dan moet Home Assistant waarden niet alleen controleren, maar ook berekenen, vergelijken en samenstellen.

Daarvoor gebruikt Home Assistant templates.

In het volgende hoofdstuk bekijken we hoe je met templates regels kunt maken die verder gaan dan eenvoudige vaste vergelijkingen.