Zo integreer je je Z-Wave-apparaten met je domoticasysteem
Z-Wave is een interessant draadloos mesh-protocol voor domotica-apparaten zoals diverse sensoren en schakelaars. Met Zwave2Mqtt en een Z-Wave-transceiver maak je van een Raspberry Pi een Z-Wave-gateway, inclusief dashboard voor het beheer van al je apparaten. Bovendien kun je je Z-Wave-apparaten door het gebruik van mqtt eenvoudig integreren met allerlei domoticasystemen, waaronder Home Assistant.
In dit artikel gaan we Z-Wave-apparaten met je domoticasysteem integreren via mqtt (Message Queuing Telemetry Transport). De meeste opensource-domoticacontrollers ondersteunen dit protocol, dat dient om berichten uit te wisselen. Home Assistant, Domoticz en openHAB zijn enkele voorbeelden. We gaan er in deze cursus van uit dat je al zo’n systeem hebt draaien. Op het einde van deze cursus tonen we je de integratie van Zwave2Mqtt met Home Assistant; met andere domoticasystemen verloopt de integratie vergelijkbaar.
01 Benodigdheden
Uiteraard heb je Z-Wave-apparaten nodig die je in je domoticasysteem wilt integreren. Dat kan om sensoren gaan, schakelaars en lampen. Er zijn talloze apparaten op de markt. Z-Wave is een draadloos mesh-protocol dat in Europa op een frequentie van 868,42 MHz werkt.
Je hebt dus ook een transceiver nodig om met de apparaten te communiceren. Die transceiver gaan we in dit artikel op een Raspberry Pi (het maakt niet uit welk model) aansluiten, die dan als Z-Wave-gateway werkt. Een voorbeeld van een transceivers is de RaZberry die je op de gpio-header van de Pi installeert. Een alternatief is usb-transceiver die je in een usb-poort van je Pi steekt. De Raspberry Pi sluit je via een ethernetkabel of wifi-verbinding op je thuisnetwerk aan, waarna die via de software Zwave2Mqtt Z-Wave-berichten vertaalt naar mqtt-berichten op je netwerk en omgekeerd.
©PXimport
02 Raspberry Pi en Windows voorbereiden
We gaan ervan uit dat je Raspbian Buster Lite op je Raspberry Pi geïnstalleerd hebt. Dat doe je door het image met balenaEtcher op een micro-sd-kaart te schrijven. Daarna sla je in de boot-partitie een leeg bestand genaamd ssh op en eventueel (als je wifi gebruikt in plaats van ethernet) een bestand met de naam wpa_supplicant.conf met de wifi-configuratie. Steek de micro-sd-kaart daarna in je Pi, sluit de Z-Wave-transceiver op de gpio-header of een usb-poort aan, sluit indien nodig de ethernetkabel aan en steek tot slot de voedingsadapter in je Pi om op te starten.
Dan log je via het netwerk in op je Pi via OpenSSH. Draai je een Windows 10-versie van april 2018 of later, dan kun je de in Windows ingebouwde ssh-client gebruiken. Ga daarvoor eerst naar Instellingen / Apps / Optionele onderdelen en klik op Een onderdeel toevoegen. Kies OpenSSH-client en herstart je computer. Is je Windows-versie ouder dan april 2018, volg dan de instructies van Microsofts project Win32-OpenSSH of download het programma PuTTY.
©PXimport
03 Raspberry Pi updaten
Heb je de OpenSSH-client geïnstalleerd, open dan een opdrachtprompt en log op je Pi in met de volgende opdracht:
ssh pi@IP
Daarbij vervang de aanduiding IP door het ip-adres van je Pi, dat je in de webinterface van je router bij de dhcp-leases vindt. Bevestig dat je de getoonde vingerafdruk vertrouwt en voer als wachtwoord raspberry in.
Zodra je ingelogd bent, wijzig je onmiddellijk het standaardwachtwoord met de volgende opdracht:
passwd
Update daarna de pakketlijst en upgrade alle pakketten naar de nieuwste versie met de opdrachten:
sudo apt update
sudo apt upgrade
©PXimport
04 Docker installeren
Zwave2Mqtt installeren gaat het eenvoudigst in de vorm van een Docker-container. Installeer dus eerst Docker. Helaas bevatte de versie van Docker in Raspbian Buster op het moment van schrijven een fout, waardoor je Docker niet met dit eenvoudige commando kon installeren:
sudo apt install docker.io
Download daarom het installatiescript van de website van Docker en voer het uit met dit commando:
curl -sSL https://get.docker.com | sh
Als je op het einde een foutmelding krijgt, is het mogelijk dat de Docker-service gewoon te snel gestart is. Dat kun je negeren. Geef daarna je gebruikersaccount toestemming om Docker te gebruiken met:
sudo usermod pi -aG docker
Als je geen foutmelding op het einde van de installatie van Docker zag, log dan uit met exit; zag je wel een foutmelding, herstart je Pi dan met reboot. Log daarna weer in via ssh. In de uitvoer van onderstaand commando zou nu active (running) moeten staan:
systemctl status docker
©PXimport
Rechtstreekse Z-Wave-ondersteuning in Home Assistant
Domoticacontrollers zoals Home Assistant, Domoticz en openHAB ondersteunen ook rechtstreeks Z-Wave-apparaten, standaard of via een add-on. Waarom zou je dan de omweg via Zwave2Mqtt nemen? Daar zijn verschillende redenen voor. Misschien experimenteer je nog geregeld met je domoticacontroller en herstart je die vaak, of ligt hij door je experimenten soms plat, terwijl je graag hebt dat je Z-Wave-apparaten continu bruikbaar zijn. Of misschien heb je weinig Z-Wave-apparaten in de buurt van je domoticacontroller, waardoor het mesh-netwerk een slechte dekking heeft. Dan plaats je een Raspberry Pi met Zwave2Mqtt in de buurt van je Z-Wave-apparaten voor een betrouwbaardere werking.
05 Zwave2Mqtt installeren
Dan zijn we nu klaar om Zwave2Mqtt te installeren. Maak eerst een directory aan waarin het programma zijn gegevens kan opslaan:
sudo mkdir /var/lib/zwave2mqtt
Download en start de Docker-container van Zwave2Mqtt daarna als volgt:
docker run -d --restart always -p 8091:8091 --device=/dev/ttyUSB0 -e TZ=Europe/Amsterdam -v /var/lib/zwave2mqtt:/usr/src/app/store robertslando/zwave2mqtt:latest
Als je een foutmelding krijgt over het bestand /dev/ttyUSB0, dan is ofwel je Z-Wave-transceiver niet aangesloten ofwel heeft deze een ander apparaatbestand toegewezen gekregen, waarschijnlijk /dev/ttyACM0 of /dev/ttyAMA0.
06 Mosquitto installeren
Als je al een mqtt-broker hebt draaien, dan kun je die gerust voor onze toepassing gebruiken. Heb je Home Assistant bijvoorbeeld via Hass.io geïnstalleerd, dan installeer je Mosquitto eenvoudig via de add-on Mosquitto MQTT broker. Als je nog geen mqtt-broker hebt, dan installeer je die ook in een Docker-container op je Raspberry Pi.
Maak eerst de directory’s aan waarin het programma zijn gegevens kan opslaan:
sudo mkdir -p /var/lib/mosquitto/{config,data,log}
Maak een configuratiebestand voor Mosquitto:
sudo nano /var/lib/mosquitto/config/mosquitto.conf
En plaats daarin de volgende regels:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
Sla je wijzigingen op met Ctrl+O en sluit nano af met Ctrl+X. En download en start daarna de Docker-container van Mosquitto:
docker run -d --restart always -p 1883:1883 -p 9001:9001 -v /var/lib/mosquitto:/mosquitto eclipse-mosquitto
Als je daarna de opdracht docker ps uitvoert, zie je onze twee Docker-containers draaien, ook na een herstart van je Raspberry Pi.
©PXimport
07 Z-Wave configureren
Als alles goed gaat, draait de webinterface van Zwave2Mqtt nu op poort 8091 van je Raspberry Pi. Bezoek daarom in een browser op je pc de webpagina http://IPVANJEPI:8091. Je krijgt nu het bedieningspaneel te zien, maar eerst dien je enkele instellingen aan te passen: klik daarvoor links op het icoontje van het tandwiel. Daar zie je drie onderdelen van de instellingen: Zwave, Mqtt en Gateway.
We gaan eerst naar het onderdeel Zwave. De belangrijkste instelling is Serial Port: daar kies je de poort waarop je Z-Wave-transceiver is aangesloten, dezelfde dus als je bij het aanmaken van de Docker-container opgegeven hebt (in ons voorbeeld /dev/ttyUSB0). Schakel Logging, Save configuration en Assume awake in en vul bij Poll interval de waarde 60000 in (is 60 seconden). De andere waardes in dit onderdeel kun je leeg laten. Gebruik je Z-Wave Secure-apparaten, zoals deursloten, dan dien je wel nog de Network Key in te vullen. Heb je al een werkend Z-Wave-netwerk, kopieer die sleutel dan uit je huidige domoticasysteem en plak die hier. De sleutel ziet er ongeveer zo uit: 0xE5,0xB4,0xFF,0xC3,0x67,0xE9,0x02,0xB1,0x29,0xD5,0x6A,0x40,0x82,0xD9,0x3A,0x34. Zet je dit Z-Wave-netwerk voor het eerst op, genereer op je Pi dan een sleutel (en plak die in de interface):
cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1,/g' -e 's/, $//'
Maak een back-up van de sleutel, want als je die ooit kwijtraakt, kun je niet meer met die Z-Wave Secure-apparaten verbinden en moet je ze terugzetten naar de fabrieksinstellingen.
08 Mqtt en gateway configureren
Open dan het onderdeel Mqtt. Geef de mqtt-broker waarmee je verbindt een naam (zonder spaties), vul bij Host URL het ip-adres van je Pi in en als poort 1883. Bij Reconnect period (ms) kies je bijvoorbeeld 5000 voor 5 seconden, bij Prefix vul je zwave in en bij QoS kies je 2. Schakel de opties Retain en Store in. De optie Auth schakelen we niet in omdat we Mosquitto zonder authenticatie gebruiken. De manier om de toegang te beperken, laten we als oefening aan de lezer over.
Open tot slot het onderdeel Gateway. Hier is de optie Type belangrijkste keuze die je dient te maken. Als je ValueID topics als waarde kiest, kiest Zwave2Mqtt automatisch mqtt-onderwerpen op basis van de eigenschappen van je Z-Wave-apparaten. Het voordeel is dat je dan niet elk apparaat afzonderlijk hoeft te configureren om een werkende installatie te hebben. Alleen zijn de onderwerpen niet zo leesbaar voor mensen, dus je schakelt het best ook de optie Use nodes name instead of numeric nodeIDs in.
Bij Payload type stel je in welke gegevens er in mqtt-berichten komen. Wil je zoveel mogelijk informatie, kies dan voor Entire Z-Wave value Object. Als je van de integratie met Home Assistant wilt gebruikmaken, schakel dan ook Hass Discovery in. De andere opties kun je later nog aanpassen als je merkt dat je die nodig hebt. Klik tot slot onderaan op Save om dit alles op te slaan.
©PXimport
09 Bedieningspaneel
Klik links op het icoontje met de vier vierkantjes voor het bedieningspaneel. Als alles goed gaat en je eerder al Z-Wave apparaten met je controller gekoppeld had, krijg je nu (enkele van) je Z-Wave-apparaten in je huis te zien, waarschijnlijk voornamelijk degene die op netspanning zijn aangesloten en je controller zelf.
Een Z-Wave-apparaat (een ‘node’) toevoegen gaat door in het uitklapmenu bij Actions bovenaan Add Node (inclusion) te kiezen en dan op het pijltje naar rechts te klikken. Bij de meeste Z-Wave-apparaten dien je op een knopje te drukken of bijvoorbeeld drie keer snel na elkaar op een knopje te drukken om ze aan het netwerk toe te voegen. Bekijk in de handleiding van je apparaat hoe dat moet. Als het apparaat correct toegevoegd is, verandert de status van de controller links naar Completed. Het kan even duren voordat het apparaat in de lijst verschijnt.
©PXimport
10 Apparaten beheren
Als je nu op een apparaat klikt, zie je beneden in het tabblad Node informatie over het apparaat. Klap User uit om de waardes van een sensor te zien of de waarde van een schakelaar aan te passen. Onder Configuration kun je parameters van het apparaat instellen, zoals de gevoeligheid van een sensor. Raadpleeg daarvoor de handleiding van het apparaat. En onder System vind je systeeminformatie zoals de Z-Wave-versie die het apparaat ondersteunt.
Als je Hass Discovery ingeschakeld hebt in de gatewayconfiguratie, dan krijg je onderaan ook de apparaten te zien die Zwave2Mqtt automatisch voor dit apparaat aanmaakt voor Home Assistant. Apparaten meervoud, omdat één Z-Wave-apparaat zoals een multisensor zich als meerdere apparaten tegelijk kan gedragen: temperatuursensor, bewegingssensor, lichtsensor enzovoort.
Je kunt je apparaat ook een naam en locatie geven. Vul deze in en klik op het pijltje ernaast. Als je in de gatewayconfiguratie Use nodes name instead of numeric nodeIDs ingeschakeld hebt, wordt deze leesbare naam gebruikt om het apparaat in de mqtt-berichten en in het bedieningspaneel te identificeren. Tot slot kun je ook nog acties op een apparaat uitvoeren. Kies daarvoor de gewenste actie bij Node actions en klik op het pijltje ernaast.
©PXimport
11 Integratie met Home Assistant
We gaan ervan uit dat je al Home Assistant hebt draaien. Open het bestand configuration.yaml van je Home Assistant-installatie en voeg daar de volgende regels aan toe:
mqtt:
discovery: true
discovery_prefix: PREFIX
broker: BROKER
birth_message:
topic: 'hass/status'
payload: 'online'
will_message:
topic: 'hass/status'
payload: 'offline'
In de plaats van PREFIX gebruik je het prefix dat je in de mqtt-configuratie van Zwave2Mqtt ingesteld hebt, in ons voorbeeld zwave. En in de plaats van BROKER vul je het ip-adres van je mqtt-broker in, bijvoorbeeld dat van je Pi als je Mosquitto op je Pi geïnstalleerd hebt.
Sla het bestand op en herstart daarna Home Assistant (in het menu Instellingen / Serverbeheer / Herstarten van de webinterface van Home Assistant). Wacht even tot Home Assistant opnieuw opgestart is. Daarna zouden al je Z-Wave-apparaten voor Home Assistant zichtbaar moeten worden.
Klik rechtsboven in Home Assistant op de drie puntjes en dan op Ongebruikte entiteiten. Je krijgt dan al je Z-Wave-apparaten te zien, en zelfs meerdere per Z-Wave-apparaat als het om complexe apparaten met meerdere sensoren gaat. Klik op een apparaat en dan het icoontje van het tandwiel om het apparaat een duidelijkere naam te geven en voeg het apparaat dan in de Lovelace-interface van Home Assistant toe in het gewenste paneel.
Je hebt nu een flexibel Z-Wave-netwerk opgezet. Je kunt je Z-Wave-controller, mqtt-broker en Home Assistant alle drie op dezelfde Raspberry Pi draaien, of elk van deze componenten op een afzonderlijke Raspberry Pi of zelfs een andere computer zoals een nas of thuisserver. De configuratie blijft hetzelfde, op de ip-adressen na.
©PXimport
Problemen oplossen
Als er iets niet zoals verwacht verloopt, geen paniek. Ligt het probleem bij het draaien van een van de Docker-containers, bekijk dan met het commando docker ps de ID’s van je containers en vraag dan met docker logs ID de logs van de container met het gegeven id op. De container stoppen kan met docker stop ID en de container verwijderen met docker rm ID. Dat is bijvoorbeeld handig als je het verkeerde seriële apparaat aan de container van Zwave2Mqtt hebt doorgegeven. Daarna maak je de container gewoon opnieuw aan, deze keer met het juiste apparaat. Kom je problemen tegen bij het toevoegen van Z-Wave-apparaten, open dan het tabblad Debug in het bedieningspaneel van Zwave2Mqtt en klik op Start om debug-boodschappen te krijgen. Dat zijn overigens dezelfde boodschappen als de logs van de Docker-container van Zwave2Mqtt. En loopt er tot slot iets mis met de mqtt-communicatie, gebruik van een mqtt-client zoals MQTT Explorer om te bekijken welke mqtt-berichten Zwave2Mqtt uitstuurt.
©PXimport