Inmiddels zijn slimme apparaatjes gemeengoed. Bij de Aldi en Action koop je bijvoorbeeld al gewoon slimme verlichting. Op zichzelf maakt dat het leven al een stuk gemakkelijker. Het wordt pas echt leuk als je al die apparaatjes met elkaar verbindt. Dan heb je één centrale plek nodig om dat allemaal te regelen. Home Assistant is daar precies voor bedoeld. Die zorgt voor de ondersteuning van allerlei apparaatjes, zodat jij je helemaal kan uitleven op het automatiseren.
Auteur: Serge Gielkens
Het doel van dit artikel is om je zo goed mogelijk kennis te laten maken met Home Assistant. Daarom doen we een eenvoudig project, waarvoor je geen speciale sensoren of bijzondere apparaatjes nodig hebt. Een mobieltje volstaat, zodat iedereen kan meedoen. De basis van dit project is device tracking, dat wil zeggen dat Home Assistant bijhoudt waar het mobieltje is. Afhankelijk van de geografische locatie komt die dan in actie. In ons voorbeeld krijg je een melding op je mobiel. Met dit principe houd je bijvoorbeeld in de gaten of je kinderen niet te ver van huis gaan.
Op de site van Home Assistant heb je voor de Raspberry Pi de keuze uit Hass.io en Hassbian. De laatste is gebaseerd op het Raspbian besturingssysteem van de Raspberry Pi. Daarop is alle benodigde software voor Home Assistant geïnstalleerd. Wij kozen echter voor Hass.io.
Hass.io is een minimaal systeem met Docker. Doordat hierbij applicaties in geïsoleerde containers draaien, heb je een betere security. Daarnaast maakt Docker het gemakkelijk om software te installeren. Je beschikt dan straks meteen over allerlei handige add-ons en daar maken wij dankbaar gebruik van. Home Assistant raadt zelf de 32-bitsversie aan. Download daarom die variant van Hass.io en zet het image op je microSD-kaartje. Met Etcher (zie link aan het eind) gaat dat heel simpel.
Schuif het microSD-kaartje in de Raspberry Pi en verbindt het bordje met een ethernetkabel aan je netwerk. Bij de eerste boot, richt Home Assistant de Docker omgeving in samen met een volledige update. Zonder werkende internetverbinding eindig je met een kreupele Home Assistant. Voor wifi is momenteel nog een handmatige configuratie nodig. Daar gaan we verder niet op in.
De standaard hostnaam van Home Assistant is hassio. Als je een minuut of twee na het aanzetten van de Raspberry Pi in je browser naar hassio:8123 gaat, zie je een melding dat Home Assistant nog bezig is met de initiële acties. Daarmee is hij wel even zoet. In ons geval duurde dat ongeveer een kwartier. Daarna verschijnt automatisch het startscherm.
Maak daar een account aan door een naam met wachtwoord in te voeren. Vervolgens geef je op hoe je jouw thuisomgeving wilt noemen, bijvoorbeeld ‘Thuis’. Daaronder zie je een landkaart, waarop je jouw locatie aangeeft. Dit is belangrijk en met ‘DETECT’ is dat lang niet precies genoeg. Schuif en zoom daarom zelf met de kaart naar je woonhuis en markeer de locatie door erop te klikken. Onder de kaart staan de tijdzone en hoogte. Corrigeer dit indien nodig.
Als laatste krijg je de vraag om apparaatjes en diensten op te zetten. Bij Home Assistant heten die ‘integrations’. Dan doen we straks. Klik daarom op ‘FINISH’ en je komt op de hoofdpagina. Home Assistant zoekt zelf naar slimme apparatuur. Die toont hij in het centrale deel. Je eigen automatisering verschijnt hier eveneens.
Home Assistant gebruikt configuratiebestanden in het zogeheten YAML-formaat. Hoewel de webinterface steeds meer werk uit handen neemt, is het soms noodzakelijk om die handmatig te editen. Met de Configurator doe je dat via de webinterface. Installeer deze add-on door links in het menu naar Hass.io te gaan (zie afbeelding 1). Kies het tabblad ‘ADD-ON STORE’ en selecteer de Configurator. Klik boven op ‘INSTALL’ en wacht tot de installatie voltooid is.
Vervolgens verschijnen de instellingen voor de Configurator. Die start automatisch op bij het booten, maar is nu nog niet actief. Activeer hem daarom voor deze keer handmatig via ‘START’ onder de configuratieopties. Klik ook meteen op ‘Show in sidebar’, zodat je de Configurator direct links in het menu bij de hand hebt.
Om berichten uit te wisselen, zie je in de IoT-wereld veel MQTT, omdat dit een lichtgewicht en snel protocol is. MQTT werkt via een broker. Die fungeert als een distributiecentrum, waar clients berichten afleveren. Bij MQTT heet dat publiceren. Die berichten hebben een topic, dat wil zeggen een onderwerp. Andere clients abonneren zich op zo’n topic, zodat de broker weet bij wie hij de gepubliceerde berichten moet aanbieden. Home Assistant heeft een geïntegreerde MQTT-broker, maar die staat inmiddels op afbouw. Installeer daarom als alternatief de Mosquitto broker via de ‘ADD-ON STORE’ en start hem op.
Home Assistant weigert anonieme toegang tot de MQTT-broker. Dat is wel zo veilig. Maak daarom een gebruiker aan, waarmee MQTT-clients zich bekend maken bij de broker. Ga daarvoor naar Configuration -> Users. Klik helemaal rechtsonder op het oranje plusteken en vul een naam met wachtwoord in, bijvoorbeeld ‘mqtt’ en ‘mqtt_secret’. Klik op ‘CREATE’.
Nu regelen we dat Home Assistant met deze broker communiceert. Ga naar Configuration -> Integrations. Bij ‘Discovered’ zie je daar MQTT staan. Klik op ‘Configure’. De optie ‘Enable discovery’ zorgt ervoor dat Home Assistant apparaatjes met ingebouwde MQTT-client automatisch herkent. We gebruiken het hier niet, maar het kan geen kwaad om dit aan te vinken. Klik op ‘SUBMIT’ en tot slot op ‘FINISH’.
Om de geografische positie van je mobiel door te geven aan Home Assistant gebruiken we OwnTracks (afbeelding 2). Die zetten we op als MQTT-client, zodat OwnTracks de GPS-coördinaten als MQTT-berichten naar de Mosquitto broker stuurt. Zet eerst wifi aan op je mobiel om hem te verbinden met je thuisnetwerk. Zodoende kan OwnTracks direct communiceren met Mosquitto. Wij beschrijven hier verder de situatie voor Android, maar op iOS is de werkwijze vergelijkbaar.
Installeer de OwnTracks app op je mobiel en geef hem permissie om je locatie te gebruiken. Open in de app het menu via het hamburger icoontje linksboven (de drie horizontale streepjes). Ga hier naar Preferences -> Connection. Kies ‘MQTT’ als Mode. Bij ‘Host’ geef je hassio op met als poortnummer 1883. Voer bij ‘Identification’ de credentials in van de gebruiker voor de MQTT-client. In ons voorbeeld is dat ‘mqtt’ met ‘mqtt_secret’. Bij ‘Device ID’ geef je een identificatie aan je mobiel, bijvoorbeeld ‘mijnmobiel’. ‘Tracker ID’ laten we leeg.
Ga nu terug naar de landkaart op de OwnTracks App. Zorg dat ‘Manual mode’ actief is. Dat doe je door rechtsboven op het icoontje naast het pijltje omhoog herhaaldelijk te tikken, totdat je twee verticale streepjes ziet. Je krijgt dan onderin heel even de melding ‘Manual monitoring mode’ te zien. Nu stuurt de app alleen gegevens, als je op het pijltje omhoog tikt.
De OwnTracks app publiceert de MQTT-berichten bij Mosquitto. Nu zorgen we dat in Home Assistant een client zich daarop gaat abonneren. Ga daartoe naar Configuration -> Integrations. Klik helemaal rechts beneden op het oranje plusteken. Scroll in de lijst naar beneden, selecteer ‘OwnTracks’ en klik op ‘SUBMIT’. In een pop-up venster verschijnt allerlei ingewikkelde informatie over connecties via HTTP. Gelukkig hebben we dit niet nodig, want wij werken met MQTT. Klik dat dus weg met ‘FINISH’.
Om de positie van je mobiel te controleren op een landkaart ga je in Home Assistant naar het menu ‘Map’. Daar zie je een oranje cirkel met een huisje. Dat is de homezone ‘Thuis’. De cirkel geeft een straal van 100 meter aan. Tik op je mobiel in de OwnTrack app op het pijltje naar boven om GPS-data naar Mosquitto te sturen. Er lijkt nu niets te gebeuren. Dat komt, omdat Home Assistant de gevolgde apparaten, zogenaamde tracked devices, alleen op de kaart toont als ze buiten de home zone zijn. Daarom verplaatsen we die zone tijdelijk.
Ga naar Configuration -> General. Daar staat hetzelfde landkaartje van helemaal aan het begin, toen je de eerste keer de webinterface opende en Home Assistant configureerde. Klik daar meer dan 100 m verder van je woning en druk onder op ‘SAVE’. Ga terug naar het menu ‘Map’. Klik in de OwnTracks app nogmaals op het pijltje naar boven. Nu verschijnt naast de verschoven home zone een markering van je mobiel. De straal van dit cirkeltje geeft aan hoe nauwkeurig de GPS-coördinaten zijn. Door op het cirkeltje te klikken, krijg je die te zien plus nog wat extra informatie. Zet je homezone nu weer terug naar de feitelijke situatie.
Nu Home Assistant op de hoogte is van je mobiel, laten we hem een bericht uitsturen als die buiten de homezone komt. We doen dat via het instant messaging protocol Jabber. Tegenwoordig heet dat XMPP. Voordeel van Jabber is dat het berichten snel doorstuurt en kosteloos is. Je hebt wel een account nodig bij een Jabber dienst. Op jabber.at is dat zo geregeld. Installeer tevens de Xabber app op je mobiel om het bericht te ontvangen.
Home Assistant heeft ingebouwde integratie voor Jabber. Je hoeft dus geen add-on te installeren. De configuratie moeten we wel aanpassen. Ga daarvoor naar het menu ‘Configurator’. Die heeft het bestand configuration.yaml al geopend. Is dat niet het geval, klik dan linksboven op het witte mapje ‘Browse Filesystem’. Navigeer vervolgens naar de directory /config en selecteer daar configuration.yaml. Zet de cursor helemaal onderaan en voeg het volgende toe:
notify: - name: jabber platform: xmpp sender: <mijn_userid>@jabber.at password: <mijn_wachtwoord> recipient: <mijn_userid>@jabber.at
Let op het inspringen met spaties, die zijn cruciaal bij YAML! De tekst achter ‘name’ is trouwens vrij te bepalen. In dit geval is jabber een logische keuze. Klik rechtsboven op het rode icoontje ‘Save’.
De nieuwe configuratie is niet meteen actief, maar pas na een herstart van Home Assistant. Dat doe je via het tandwieltje helemaal rechtsboven. Kies daar ‘Restart HASS’. Linksonder verschijnt de melding dat de verbinding verbroken is. Binnen enkele tellen is die weer automatisch hersteld en dan is de nieuwe configuratie actief.
Test nu of het handmatig versturen van een Jabber-bericht lukt (afbeelding 3).
Ga in het menu ‘Developer tools’ naar ‘Services’. Dat is het icoontje met de afstandsbediening. Kies bij ‘Service’ voor ‘notify.jabber’. Die heb je zojuist zelf aangemaakt. Er staat daaronder al een voorbeeldbericht klaar:
{"message":"ok"}
Verstuur dat door op ‘CALL SERVICE’ te drukken. Meteen verschijnt op je mobiel in Xabber de melding Home Assistant: ‘ok’.
We zijn er bijna. Het enige wat ons nog te doen staat, is alles aan elkaar knopen. Ga naar Configuration -> Automation en klik rechtsonder op het oranje plusteken (afbeelding 4). Geef een naam, bijvoorbeeld ‘mijn_alarm’. Bij ‘Triggers’ kies je ‘Zone’ als Trigger type. ‘Entity with location’ heeft betrekking op het device. Kies daarvoor in de dropdown list ‘mqtt_mijnmobiel’. Die string is de combinatie van de MQTT-client en het Device ID, in dit geval dus je mobieltje. Bij ‘Zone’ kies je de homezone ‘Thuis’ en bij ‘Event’ selecteer je ‘Leave’.
Met dit alles geef je aan dat als het device mqtt_mijnmobiel de zone Thuis verlaat, er iets moet gebeuren. Die actie bepalen we nu bij ‘Actions’. Kies hier ‘Call service bij Action type’. Als ‘Service’ selecteer je ‘notify.jabber’ en bij ‘Service data’ geef je het volgende op:
{"message":"Je verlaat de Thuis zone!"}
Klik tenslotte op het oranje icoontje ‘Save’ rechtsonder.
Om dit alarm te testen, ga je bij ‘Developer tools’ naar ‘States’. Dat is het icoontje “<>”. Klik in de lijst ‘Current entities’ op ‘device_tracker.mqtt_mijnmobiel’. Verander nu bij ‘State’ de waarde ‘home’ in ‘not_home’ en klik op ‘SET STATE’. Meteen toont Xabber op je mobiel de melding ‘Home Assistant: Je verlaat de Thuis zone!’
Zet voor de verandering via je mobiel ‘State’ terug naar de werkelijke toestand. Ga naar de OwnTracks app en tik op het pijltje naar boven. In Home Assistant zie je in de lijst ‘Current entities’ bij ‘device_tracker.mqtt_mijnmobiel’ de kolom ‘State’ direct van ‘not_home’ in ‘home’ veranderen.
In je thuisnetwerk werkt nu alles. Tijd dus om écht van huis te lopen. Zet je mobiel van de wifi af, zodat hij weer via het mobiele netwerk data verstuurt.
Ga vervolgens in de OwnTracks app naar Preferences -> Connection. Verander daar bij ‘Host’ het IP-adres in dat van je modem. Het gaat om het internetadres. Dat vind je via de webinterface van je modem. Regel daar ook meteen dat TCP-pakketten op poort 1883 naar je Raspberry Pi in je thuisnetwerk worden doorgestuurd. Vaak vind je de benodigde configuratieopties daarvoor onder de noemer port mapping.
Laat nu OwnTrack de locatie van je mobiel automatisch doorsturen naar Home Assistant. Verander daartoe de modus van ‘Manual’ in ‘Move’. Dat wordt aangegeven door een pijltje met twee horizontale streepjes ervoor. Wandel van huis en op het moment dat je meer dan 100 meter verwijderd bent, tikt Home Assistant je via Jabber op de vingers!
Zo, dat was een hele kluif. Maar daardoor heb je wel veel gezien van Home Assistant en heb je genoeg kennis om hierop voort te borduren. Wat dacht je bijvoorbeeld van de garagedeur, die opengaat als je aan komt rijden? Of koffie, die klaar staat voor je ontbijt? Met Home Assistant is echt niks te gek.