Een Raspberry Pi is krachtig genoeg om je hele huis aan te sturen. Het enige wat je ervoor hoeft te installeren, is Home Assistant. Voor extra interactiemogelijkheden gebruiken we de Sense HAT, een uitbreidingsbordje met allerlei sensoren en leds.

Koen Vervloesem


Automatiseer
je huis met
Home Assistant

    ha af 2    

 

 

 

 

 

 

De Pi 3B+ met
Sense HAT
in de behuizing


Je huis automatiseren kan op allerlei manieren. Wij zijn al eventjes fan van Home Assistant (www.home-assistant.io), een opensource domoticasysteem dat je onder andere op een Raspberry Pi kunt installeren. Voor dit artikel heb je een Raspberry Pi 3B+ nodig, een voedingsadapter, een microSD-kaartje en een Sense HAT. In samenwerking met Kiwi Electronics hebben we een interessant aanbod voor een kit waar dit alles in zit. Een ethernetkabel is ook aan te raden, maar die kun je weglaten als je wifi gebruikt.

ha sense hat 2
De header van de Sense HAT past op de pinnetjes van de Raspberry Pi

De Sense HAT dien je op de gpio-header van je Pi te monteren. Dat gaat heel eenvoudig: je plaatst de twee rijen gaatjes van de Sense HAT op de twee rijen pinnen van de Pi. Dat kun je doen vóór of nadat je de Pi in de behuizing gestoken hebt.

De Pi zit al
in de behuizing,
nu moet de
Sense HAT nog
op de gpio-header
geprikt worden
    ha behuizing 2


Image klaarmaken
Op het microSD-kaartje installeren we Hassbian (www.home-assistant.io/docs/installation/hassbian/): een Linux-distributie gebaseerd op Raspbian met Home Assistant ingebouwd. Download (https://github.com/home-assistant/pi-gen/releases/latest) het recentste image van Hassbian en schrijf het met balenaEtcher (www.balena.io/etcher/) naar het microSD-kaartje. Selecteer daarvoor in balenaEtcher het image (het zipbestand dat je net hebt gedownload) en je microSD-kaart en klik dan op Flash!. Wanneer dat voltooid is, haal je het microSD-kaartje uit je computer.

Wil je de netwerkverbinding via wifi gebruiken, steek dan het microSD-kaartje weer in je computer en creëer een bestand wpa_supplicant.conf in het volume met de naam boot.
Plaats daarin de volgende code:
country=NL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="SSID"
psk="WACHTWOORD"
}

Vul hierin het SSID en het wachtwoord van je wifi-netwerk in en verander (indien nodig) de landcode. Sla het bestand op. Ontkoppel het bootvolume, steek de microSD-kaart nu in je Pi en start hem op.

ha etcher 2
Schrijf het image van Hassbian naar een microSD-kaart


Basisconfiguratie Home Assistant
Wacht nu een minuutje of tien. Op de achtergrond installeert Hassbian de nieuwste versie van Home Assistant. Open daarna in je webbrowser http://hassbian:8123 of http://IP:8123, waarbij IP het ip-adres van je Raspberry Pi is. Dat vind je in de lijst met dhcp leases in de webinterface van je router.

Zodra Home Assistant geïnstalleerd is, krijg je op de webpagina de vraag om een account aan te maken. Vul je naam, gebruikersnaam en wachtwoord in dat je wilt gebruiken en klik op Account aanmaken. Op de pagina erna geef je je huis een naam en stel je de locatie van je huis in. Klik op Detecteren zodat Home Assistant dat vanzelf doet. De kans is groot dat je een verkeerde locatie voorgesteld krijgt; selecteer dan gerust zelf je locatie op de kaart. Klik daarna op Volgende en tot slot op Voltooien.
Je krijgt nu het dashboard van Home Assistant te zien, standaard met het weerbericht. Als je nu linksboven op de drie horizontale streepjes klikt, krijg je links een zijbalk met extra’s te zien. Klik je daar op Kaart, dan krijg je je locatie op de kaart te zien. Klik je op Logboek, dan krijg je gebeurtenissen in Home Assistant te zien met hun tijdstip. Een klik op Geschiedenis laat je de geschiedenis van alle entiteiten in Home Assistant zien. En in Instellingen stel je je domoticasysteem verder in.

ha account 2     ha huis 3
Maak een account aan in Home Assistant

ha dashboard 2
Het dashboard van Home Assistant
vlak na de installatie
  Stel je locatie in, zodat Home Assistant
je het juiste weerbericht geeft


Opdrachtregel
We dienen nu enkele opdrachten op de opdrachtregel van Hassbian in te typen. Dat kan door een toetsenbord en scherm op je Raspberry Pi aan te sluiten, maar vaak is het handiger via een andere computer op het netwerk. Dat is mogelijk met het protocol SSH (Secure SHell).
Draai je een Windows-versie van vóór april 2018, dan dien je het programma PuTTY (www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) te installeren voor ssh. Heb je een nieuwere versie van Windows 10, dan kun je de ingebouwde SSH-client gebruiken. Ga daarvoor eerst naar Instellingen / Apps / Optionele onderdelen en klik dan op Een onderdeel toevoegen. Kies OpenSSH-client en herstart je computer.
We gaan hier verder van de ingebouwde SSH-client van Windows uit. Open een opdrachtprompt en typ de volgende opdracht in:

ssh pi@hasbian

Vervang hassbian door het ip-adres van je Pi. Bevestig met yes dat je de vingerafdruk vertrouwt en vul het wachtwoord raspberry in. Verander zodra je ingelogd bent, het wachtwoord van de gebruiker pi met de opdracht sudo raspi-config en dan de optie 1 Change User Password. Ga daarna naar 5 Interfacing Options, P5 I2C en schakel I2C in door Yes te kiezen. Sluit het programma af met Finish.

ha raspi config 2Configureer je Pi met raspi-config

 

 Ondersteuning voor de Sense HAT toevoegen
Dan is het nu tijd om de ondersteuning voor de Sense HAT toe te voegen. Ververs eerst de pakketbronnen (bevestig met y) en installeer dan enkele benodigde pakketten:

sudo update 
sudo apt install libjpeg-dev libatlas-base-dev python3-rtimulib

En dan linken we de zojuist geïnstalleerde RTIMU aan de omgeving van Home Assistant:

sudo ln -s /usr/lib/python3/dist-packages/RTIMU.cpython-37m-arm-linux-gnueabihf.so /srv/homeassistant/lib/python3.7/site-packages/

Open de omgeving van Home Assistant met de volgende opdrachten:

sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate

Je ziet dat de opdrachtprompt nu begint met (homeassistant) homeassistant@hassbian. Installeer dan het pakket dat ondersteuning voor de Sense HAT toevoegt:

pip3 install sense-hat

Dat duurt overigens een tijdje. Verlaat daarna de omgeving van Home Assistant:

exit

De opdrachtprompt begint nu weer met pi@hassbian.

ha install sense hat 2
De ondersteuning voor de Sense HAT installeren dient op de opdrachtregel te gebeuren

Configuratie in Home Assistant
Open dan nu het configuratiebestand van Home Assistant. Daarvoor moet je eerst als de gebruiker homeassistant inloggen en dan met nano het configuratiebestand openen:

sudo su -s /bin/bash homeassistant
nano /home/homeassistant/.homeassistant/configuration.yaml

Voeg dan in het bestand de volgende regels toe:

light:
- platform: sensehat

sensor:
- platform: sensehat
display_options:
- temperature
- humidity
- pressure

Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X.
Klik daarna in de webinterface van Home Assistant op Instellingen / Algemeen en klik eerst op Controleer configuratie om na te gaan of er geen fouten in je configuratiebestand zitten. Indien je Geldige configuratie! te zien krijgt, klik dan helemaal onderaan op Herstarten, zodat Home Assistant herstart en zijn nieuwe configuratie inleest.
Daarna dienen we nog het configuratiebestand van de Sense HAT te verwijderen, omdat Home Assistant dat zelf aanmaakt en een foutmelding geeft als het al bestaat:

rm -rf /home/homeassistant/.config/sense_hat/

Herstart daarna Home Assistant weer.

ha config
De configuratie van de Sense HAT in het configuratiebestand van Home Assistant


De Sense HAT gebruiken in Home Assistant
Als alles goed is, krijg je nu in de webinterface van Home Assistant drie sensoren te zien: temperature, pressure en humidity, die respectievelijk de temperatuur, luchtdruk en luchtvochtigheid van de sensoren op de Sense HAT meten. Klik je op een van de cirkels met het cijfer van de sensor, dan krijg je een grafiekje te zien met de evolutie van de waarde de laatste tijd.
Je krijgt ook een licht te zien met de naam sensehat. Dat kun je aan- en uitschakelen met de knop ernaast, waarna je de leds op de Sense HAT aan en uit ziet gaan. Als je op de naam sensehat klikt, krijg je zelfs nog meer mogelijkheden: je kunt de kleur van de leds kiezen op het kleurenwiel en je kunt de helderheid van de leds instellen op de schuifregelaar.
Je kunt de sensoren en leds niet alleen zelf in de webinterface bekijken en aansturen, ze zijn nu ook beschikbaar voor de automatiseringen van Home Assistant, net zoals dat bij alle andere componenten in het platform gaat. We gaan dus eerst eens even de andere mogelijkheden van het platform bekijken.

ha kleurenwiel       ha dashboard sense hat
Stel de kleur van je Sense HAT in
met het kleurenwiel
De Sense HAT verschijnt in het dashboard van Home
Assistant in de vorm van enkele sensoren en een licht


Andere lichten toevoegen
De leds op de Sense HAT zijn één voorbeeld van lichten die je in Home Assistant kunt aansturen. Op www.home-assistant.io/components/#light vind je de hele lijst van ondersteunde lichten. Daar vinden we bijvoorbeeld Philips Hue-lampen, maar ook het IKEA Trådfri-systeem en lampen van Yeelight, Xiaomi, Osram, myStrom, LIFX, Lightwave, LimitlessLED en nog vele andere platforms.
Voor veel van die lampen verloopt de communicatie met Home Assistant via een zogenoemde bridge die je toestaat om de lampen via het netwerk aan te sturen. Bij Philips Hue-lampen is dat de Hue Bridge. Voor sommige platforms dien je in het configuratiebestand van Home Assistant te duiken, zoals we voor de Sense HAT deden, maar voor bijvoorbeeld Philips Hue en IKEA Trådfri voeg je de ondersteuning toe via Instellingen / Integraties. Klik dan op het plusknopje rechtsonder en kies je gewenste platform uit de lijst. Daarna krijg je instructies om het platform in Home Assistant toe te voegen. Bij Philips Hue krijg je bijvoorbeeld de vraag om op de knop op je bridge te drukken.

          


RFXCOM

Een interessant apparaatje als je goedkope sensoren en schakelaars met Home Assistant wilt koppelen, is de RFXCOM RFXtrx433E. Dit kan zowel zenden als ontvangen op een frequentie van 433,92 MHz en ondersteunt allerlei protocollen. Naast stopcontacten van KlikAanKlikUit, integreer je zo ook allerlei temperatuursensoren, sensoren die je laten weten of je raam of deur dicht is en zelfs rolluiken die het Somfy RTS-protocol spreken. Een nadeel is dat de RFXtrx433E niet goedkoop is: je betaalt er rond de € 100,- voor. Bovendien is de communicatie van de meeste protocollen op 433,92 MHz niet versleuteld, waardoor het niet zo veilig is. En schakelaars via 433,92 MHz geven geen status terug: je weet dus niet of je opdracht het apparaat bereikt heeft en het schakelen gelukt is. Je sluit de RFXtrx433E aan op een usb-poort van je Raspberry Pi.

ha rfxcom

 

 

 

 

 

 

 

 

 

Met de RFXtrx433E kun je allerlei apparaten aansturen die op een frequentie van 433,92 MHz communiceren  

 

 

 

 

      ha sensoren
Van elke sensor kun je in Home Assistant
een grafiekje opvragen van de laatste 24 uur

Sensoren en schakelaars toevoegen
Net zoals je de sensoren van de Sense HAT toegevoegd hebt aan Home Assistant, kun je nog vele andere soorten sensoren toevoegen. Je vindt ze allemaal op www.home-assistant.io/components/#sensor. Voor sommige dien je in het configuratiebestand te duiken en net zoals bij de Sense HAT nog andere opdrachten uit te voeren; andere kun je net zoals bij de Philips Hue-lichten, eenvoudig als integratie toevoegen in de webinterface. Voor sommige sensoren heb je ook extra hardware nodig (zie de kaders “RFXCOM” en “Z-Wave”). Andere zijn pure softwaresensoren: zo kun je met sensoren het weerbericht inlezen, de snelheid van je internetverbinding, hoeveel mensen er zich momenteel in de ruimte bevinden enzovoort.
Naast sensoren zijn ook schakelaars belangrijk in een domoticasysteem. Alles wat je kunt in- of uitschakelen noemt Home Assistant een schakelaar en alle ondersteunde schakelaars vind je op www.home-assistant.io/components/#switch. Ook voor sommige schakelaars heb je extra hardware nodig (zie de kaders “RFXCOM” en “Z-Wave”), maar er zijn ook pure softwareschakelaars, zoals Wake on LAN dat een WoL-pakketje over het netwerk stuurt om een computer te wekken.

          


Z-Wave

Z-Wave is een draadloos communicatieprotocol dat een mesh network aanmaakt: Z-Wave-apparaten die op een stopcontact aangesloten zijn, zoals slimme stekkers, kunnen signalen van andere Z-Wave-apparaten doorsturen, zodat je met laag stroomverbruik toch een hoog bereik in huis hebt. Om Z-Wave-apparaten aan te sturen heb je een controller nodig, zoals de Aeon Labs Z-Stick, die je in een usb-poort van je Raspberry Pi steekt. Met zo’n controller kun je dan stekkers, dimmers, lampen, ledstrips, rolluiken enzovoort aansturen en sensoren voor de temperatuur, lichtinval, CO, rook enzovoort inlezen. Communicatie via Z-Wave is versleuteld en je kunt ook altijd de status opvragen van bijvoorbeeld een schakelaar, zodat je zeker weet of het schakelen gelukt is

    

Automatiseren
Een domoticasysteem installeer je uiteraard niet alleen om zelf via een webinterface sensorgegevens te bekijken en lampen aan te sturen. Nee, je wilt dat er zoveel mogelijk automatisch gebeurt. Gelukkig is Home Assistant daar ook heel goed in. We tonen je in een voorbeeld hoe je de ledkleur van de Sense HAT automatisch laat afhangen van de temperatuur van de ingebouwde sensor.
Open Instellingen / Automatisering en klik rechtsonder op het plusteken om een nieuwe automatisering aan te maken. Geef je automatisering een naam, kies bij Triggers als Trigger-type voor Numerieke staat, kies bij Entiteit uit de uitklaplijst sensor.temperature en vul bij Boven en Onder respectievelijk 22 en 24.99 in. Daarmee stellen we in dat deze automatisering geactiveerd wordt als de temperatuur tussen de 22 en 25 °C bedraagt.
Scroll dan naar onderen tot Acties, zorg dat Type actie op Service aanroepen staat en kies als Service voor light.turn_on. Bij Service data vul je het volgende in:

{
"entity_id": "light.sensehat",
"rgb_color": [
255,
255,
0
]
}

Met de rgb-code geven we achtereenvolgens de componenten rood, geel en blauw aan, zodat we een gele kleur instellen. Sla je automatisering nu op met een klik op het icoontje rechtsonder.

Een kleur voor elk temperatuurbereik
Maak nu op dezelfde manier automatiseringen voor andere bereiken van de temperatuur, zodat je in elk temperatuurbereik een andere kleur te zien krijgt. Boven de 25 °C kun je bijvoorbeeld de leds rood maken, dan hoef je bij Onder niets in te vullen bij de trigger. Als je nu enkele van deze automatiseringen aangemaakt hebt, zou je onmiddellijk de kleur van de Sense HAT moeten zien reageren op de omgevingstemperatuur.

ha automatisering 2De kleur van de leds automatisch aanpassen aan de temperatuur? Dat is eenvoudig gepiept

Wil je een specifieke kleur kiezen, stel die dan in via het kleurenwiel in en klik dan in de zijbalk links op het icoontje < > onder Ontwikkelaarstools. Zoek daar in de tabel naar light.sensehat en kijk in de meest rechtse kolom (Attributes). Daar zie je bij het attribuut rgb_color de rgb-waardes die je in je automatisering dient in te vullen om deze kleur te tonen.

Dim het licht bij zonsondergang
Iets anders wat je kunt automatiseren, is dat de leds van de Sense HAT na zonsondergang gedimd worden. Home Assistant kent standaard al een object sun.sun dat de zonsopgang en zonsondergang opvolgt. Maak dus een nieuwe automatisering aan, laat het trigger-type op de standaardwaarde Staat staan, kies als entiteit sun.sun en vul bij Naar de waarde below_horizon in.
Scroll dan naar onderen tot Acties, zorg weer dat Type actie op Service aanroepen staat en kies als Service voor light.turn_on. Bij Service data vul je het volgende in:

{
"brightness": 128,
"entity_id": "light.sensehat"
}

Creëer nu nog een automatisering die bij zonsopgang (above_horizon) de helderheid weer maximaal (op 255) zet.

Aanwezigheidsdetectie via Bluetooth
We kunnen Home Assistant ook je aanwezigheid laten detecteren en daarop laten reageren. Dat kan bijvoorbeeld met bluetooth, wat in de Raspberry Pi 3B+ ingebouwd is en ook door de meeste smartphones, smartwatches en fitnesstrackers ondersteund wordt. Zolang je altijd één van deze apparaatjes bij je hebt, kan Home Assistant dus je aanwezigheid detecteren door op het bluetoothsignaal te controleren.

ha aanwezigheid 2

Dankzij Bluetooth weet Home Assistant altijd of je thuis bent

 

 

 

 

Open daarvoor het configuratiebestand van Home Assistant:
sudo su -s /bin/bash homeassistant
nano /home/homeassistant/.homeassistant/configuration.yaml
Voeg dan in het bestand de volgende regels toe:
device_tracker:
- platform: bluetooth_tracker
Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X.
Klik daarna in de webinterface van Home Assistant op Instellingen / Algemeen, klik eerst op Controleer configuratie en als dat in orde is, klik je helemaal onderaan op Herstarten om Home Assistant te herstarten.
Zorg dat ondertussen het apparaat dat je wilt detecteren, te vinden is via bluetooth. In Android is dat bijvoorbeeld zolang je de bluetooth-instellingen geopend hebt. Als alles goed is, krijg je dan na de herstart je apparaat in Home Assistant te zien met de vermelding Thuis. Wanneer je nu weggaat met je gedetecteerde smartphone, verandert de status naar Afwezig. We gaan er hierbij uiteraard wel vanuit dat je altijd bluetooth ingeschakeld hebt.

Aanwezigheidsdetectie aanpassen
Wanneer dit werkt en alle gewenste apparaten gedetecteerd worden, pas je het configuratiebestand als volgt aan:

device_tracker:
- platform: bluetooth_tracker
consider_home: 60
new_device_defaults:
track_new_devices: false

Door consider_home op 60 in te stellen, beschouwt Home Assistant een apparaat als afwezig als het signaal een minuut niet meer zichtbaar is. De standaardwaarde is drie minuten, maar dat is wat lang. Met track_new_devices: false stellen we in dat we geen nieuwe apparaten meer volgen. Als we dit op de standaardwaarde true zouden laten, zouden alle apparaten van je buren en toevallige voorbijgangers in Home Assistant verschijnen en blijven staan, wat we niet willen.

Alle lichten uit
De leds van onze Sense HAT tonen nu de temperatuur met hun kleur en ze zijn ’s nachts gedimd, maar als we niet thuis zijn, hoeven die helemaal niet aan te zijn, want dan zien we ze toch niet. De laatste stap is daarom dat we een automatisering aanmaken die gebruikmaakt van de aanwezigheidsdetectie.
Maak dus een nieuwe automatisering aan, met als trigger-type Staat en als entiteit group.all_devices. Dit laatste is een groep die Home Assistant automatisch aanmaakt en die alle apparaten bevat waarvan het de aanwezigheid kan detecteren. Zo activeert onze automatisering alleen als er niemand meer thuis is. Vul bij Naar de waarde not_home in.
Als actie roepen we weer de service light.turn_off aan, maar deze keer met de volgende data:

{
"entity_id": "group.all_lights"
}

Ook hier gebruiken we weer een groep die Home Assistant automatisch aanmaakt, namelijk met alle gedefinieerde lichten. Als nu alle apparaten die via bluetooth gedetecteerd worden, afwezig zijn, gaan alle lichten die Home Assistant aanstuurt uit.
Nu kun je ook nog een automatisering maken die de leds van de Sense HAT weer inschakelt als je thuiskomt. Deze keer ga je waarschijnlijk niet alle lichten inschakelen, maar alleen de leds van de Sense HAT. Bij de triggers kun je wel als entiteit group.all_devices behouden: als één apparaat uit die groep de waarde home heeft, is de waarde van de hele groep ook home. Bij Naar vul je de waarde home in.

Voorwaarden
Nu moet je ook nog alle automatiseringen die de service light.turn_on aanroepen, aanpassen zodat ze dat alleen doen als er niemand thuis is. We tonen als voorbeeld hoe dit gaat met de automatisering die de leds van de Sense HAT na zonsondergang dimt.
Open de automatisering en klik bij Voorwaarden op Voorwaarde toevoegen. Het type voorwaarde laat je op Staat staan, als entiteit kies je group.all_devices, en Staat stel je in op home. Sla je automatisering op. Als deze automatisering nu bij zonsondergang geactiveerd wordt, controleert die eerst of er iemand thuis is. Zo ja, dan dimt Home Assistant de leds van de Sense HAT. Zo nee, dan gebeurt er niets. Omdat alle lichten sowieso al uit zijn als er niemand thuis is, blijven die dan ook uit.


ha dashboard resultaat 2
Het resultaat van dit artikel: Home Assistant met de Sense HAT, aanwezigheidsdetectie en automatiseringen