Ik merkte de laatste tijd dat 2 van mijn Xiaomi Aqara motion sensors er regelmatig uitlagen. Dit gebeurde interessant genoeg alleen als ik het uitgaande IP-verkeer van de Xiaomi Gateway in mijn firewall blokkeerde. Op een of andere manier was er dus toch Chinees verkeer nodig om dit werkende te houden. Ik vertrouw de Chinezen niet en ben daarom naar een alternatief gaan zoeken wat ik heb gevonden met het project ‘Zigbee2MQTT’. Hierbij handel ik al mijn Zigbee verkeer lokaal op mijn eigen netwerk af zonder dat ik ergens van afhankelijk ben.
Zigbee2MQTT is open source software waarmee je je Zigbee apparaten via MQTT kunt uitlezen en aansturen. Je kunt dit verder onder andere koppelen met Home Assistant en Domoticz. Op de site van Zigbee2MQTT vind je alle informatie en stappen die je moet volgen om alles werkend te krijgen.
Het komt er normaal gesproken op neer dat je een CC2531 USB sniffer (en eventueel nog een router) van de juiste firmware voorziet.
Vervolgens installeer je de Zigbee2MQTT software op je Raspberry Pi en configureer je deze. Hierna moet je jouw ‘Zigbee’ devices nog pairen met de Zigbee2MQTT software. Hiervoor moet je even tijdelijk ‘permit_join: true’ configureren in je ‘/opt/zigbee2mqtt/data/configuration.yaml’ file.
Tenslotte kun je met de Domoticz Python Plugin je devices automatisch toevoegen aan Domoticz. Volg hiervoor de volgende stappen
- Clone repository in je domoticz plugins folder
cd domoticz/plugins git clone https://github.com/stas-demydiuk/domoticz-Zigbee2MQTT-plugin.git Zigbee2MQTT
- Restart domoticz
- In Domoticz settings controleer dat “Accepteer nieuwe Hardware/Sensoreren’ aan staat.
- Ga naar Instellingen > Hardware en kies item “Zigbee2MQTT”
- Configureer je MQTT server IP-adres en poort en voeg tenslotte je hardware toe aan Domoticz
Tips
- Zorg dat Zigbee22MQTT automatisch opstart met je Raspberry Pi. Zie de handleiding van Zigbee2MQTT hoe je dit doet.
- Pairen kan weleens lastig zijn. Zorg dat in Domoticz dat in je ‘domoticz-Zigbee2MQTT’ plugin de setting ‘Zigbee pairing’ op actief staat. Volg verder de volgende tips:
- Toon logging realtime met shell commando ‘sudo journalctl -u Zigbee2MQTT.service -f’
- Eventueel haal je de batterij even uit het device dat je wilt pairen zodat deze goed is gereset. Dit lijkt vooral nodig te zijn voor de Aqara switches.
- Druk op de reset knop 3 tot 5 seconden totdat de LED oplicht (pairing aanduiding – per device is dat soms wat verschillend)
- Daarna elke 2 seconden even kort de reset knop intikken zodat hij verbinding onderhoudt. Pairing kan soms wel 10 – 15 seconden duren dus gewoon doorgaan
- Indien je in de Zigbee2MQTT log “Message without device!” en “Device incoming” meldingen ziet gewoon even doorgaan met elke 2 seconden even kort de reset knop intikken, totdat je device is toegevoegd (zie logging)
- Opnieuw pairen van Router doe je door power on/power off 3 maal uit te voeren (power on, wacht 2 seconden, power off, herhaal deze cycles 3 maal)
- Eventueel daarna de Zigbee2MQTT even herstarten zodat je het device netjes in de lijst van Zigbee2MQTT ziet terugkomen.
- Als het toch niet is gelukt dit geheel herhalen. Soms helpt het om pair device dichter (< 2 meter) van je Zigbee2MQTT USB stick te brengen en te zorgen dat je volle batterij in je ‘pair-device’ hebt.
- Indien een apparaat wordt herkend als ‘unknown – undefined unknown (EndDevice)’ zul je deze uit je database moeten halen en opnieuw moeten pairen. Volg hiervoor de volgende stappen:
- Stop Zigbee2MQTT (sudo systemctl stop Zigbee2MQTT)
- Verwijder als entries van betreffende id (hexadecimale string van 16 karakters) uit je ‘/opt/zigbee2mqtt/data/database.db’ file. Dit is een tekst-file.
- Verwijder de betreffende entry ook uit je ‘/opt/zigbee2mqtt/data/configuration.yaml’ file
- Start Zigbee2MQTT (sudo systemctl stop Zigbee2MQTT). Indien starten niet lukt haal dan Zigbee2MQTT device even uit je USB poort en start Zigbee2MQTT opnieuw op.
- Pair device opnieuw
- Geef na het pairen het nieuw toegevoegde device een gemakkelijke (friendly_name) in de ‘/opt/Zigbee2MQTT/data/configuration.yaml’ configuratie file (stop eerst Zigbee2MQTT service, rename en restart de Zigbee2MQTT service).
Vergroten bereik
Om het bereik van het Zigbee netwerk te vergroten kun je onder andere routers inzetten. Je kunt het beste routers inzetten met een externe antenne zodat je het bereik aanzienlijk vergroot. Ik raad aan om de site van Zigbee2MQTT goed te volgen hoe je een 220V CC2530 + CC2591 router configureert. Hierna moet je de router pairen vlakbij je main hub (coordinator).
Je kunt de CC2530 + CC2591 router opnieuw pairen door deze snel 3x van stroom te voorzien en dan de stroom er weer afhalen.
Er kunnen maximaal 20 devices direct verbonden zijn met de coordinator USB stick. Elke AC powered CC2530 + CC2591 router kan weer 21 devices verbinden. Je kunt eventueel ook slimme lampen gebruiken als router maar die moeten dan wel altijd op spanning staan.
Netwerk Map
Om te kijken hoe alle Zigbee devices met elkaar verbonden zijn is het handig om een netwerk map te maken. Dit doe je door een mqtt bericht te versturen (publishen) en de output van de Zigbee2MQTT log te verwerken
- Publish het volgende mqtt bericht naar je MQTT broker
topic: "zigbee2mqtt/bridge/networkmap” payload: “graphviz”
Ik heb hiervoor gebruik gemaakt van de command-line van mosquitto:
sudo mosquitto_pub -h 192.168.1.70 -t zigbee2mqtt/bridge/networkmap -m graphviz
Dit kan even (minuut) duren, afhankelijk van het aantal devices dat je hebt toegevoegd.
- Ga naar je Zigbee2MQTT log en je ziet daar een aantal regels toegevoegd. Kopieer dan de tekst vanaf “digraph G” tot en met de laatste “}”
digraph G { node[shape=record]; }
- Paste je bovenstaande regels in deze website. De “circo” engine geeft de mooiste plaatjes.
Je kunt dit alles eventueel ook automatiseren via een web-pagina met de z2mvis tool.
Problemen
Op Tweakers is een levendige forum over Zigbee2MQTT waarin allerlei zaken hierover worden besproken. Als je issues hebt kun je het beste hier even checken.
Na het succesvol installeren van de brievenbus verklikker – motion sensor heb ik het Zigbee/Wifi netwerk verder uitgebreid met PIR elementen en een losse schakelaar op basis van Zigbee. Het heeft gewerkt maar op dit moment stuit ik op een probleem waar ik niet uitkomt.
Het Zigbee netwerk zelf werkt goed maar communiceert niet met Domoticz via MQTT. Ik krijg MQTT niet aan de praat.
Ik probeer 2 keer poort 1883 te koppelen en dan komt MQTT terug met:
Failed to start Mosquitto MQTT
Als ik naar het netwerk/poorten kijk ziet het zo uit
Als ik op fora ga zoeken lijkt het dat ik 2 MQTT sessies op 1883 wil zetten.
Dit zou misschien komen doordat ik Docker geïnstalleerd heb?
Heb jij enig idee hoe ik dit kan voorkomen.
Ik heb weinig ervaring met docker en heb het nooit op die manier geprobeerd. Wellicht dat een van mijn lezers je kan helpen?
Wat geeft het volgende commando voor output?
Kijk verder ook eens in ‘/var/log/mosquitto/mosquitto.log’ of deze aanwijzingen geeft waarom mosquitto niet start.
Henri,
Sorry voor mijn late reactie, maar was niet thuis, zat op het water.
Ik heb je suggesties geprobeerd met dit resultaat.
pi@raspberrypi:~ $ lsof -i -P -n | grep LISTEN
pi@raspberrypi:~ $
pi@raspberrypi:~ $ lsof -i -P -n | grep LISTEN
pi@raspberrypi:~ $ netstat -nlp|grep 1883
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN –
tcp6 0 0 :::1883 :::* LISTEN –
pi@raspberrypi:~ $ /var/log/mosquitto/mosquitto.log
bash: /var/log/mosquitto/mosquitto.log: Toegang geweigerd
Heb je nog andere ideeën of verwijzingen?
Je moet het netstat commando vooraf laten gaan door ‘sudo’.
Je moet de logging ook met sudo rechten bekijken. Wat is de relevante (niet alle!) output van het commando:
Henri, Net als de vorige keer werkt het weer, om voor mij onverklaarbare redenen
Als antwoord op je vraag
geeft dit als resultaat
Als ik de log bekijk met jouw statement
sudo cat /var/log/mosquitto/mosquitto.log
zie ik dit
Dat is toch vreemd
Het lijkt er op dat je mosquitto 2 maal probeert te starten. Wordt het wellicht op de achtergrond al als service gestart?
Ik probeer de map te vinden /opt/Zigbee2MQTT/data/configuration.yaml’ file.
Kan de map niet vinden heb alles draaien op een raspberry 3.
In Linux is het path case-sensitive. Probeer dus eens ‘/opt/zigbee2mqtt/data/configuration.yaml’. Zie ook attached screenshot.
Bedankt. Hoe weet ik op welke usb poort de CC2531 zit, want dat is niet duidelijk.
Ik heb mijn CC2531 geflasht op de manier in de onderstaande link. kreeg geen foutmelding.
Maar wil toch checken of dit goed is gegaan,is daar een mogelijkheid voor?
Want zie in domoticz dat hij bij loading blijft hangen.
Je kunt altijd je log file van zigbee2MQTT raadplegen in:
Om te kijken welke USB poorten allemaal in gebruik zijn kun je het volgende commando uitvoeren:
Top , alleen met pairen sensor krijg ik een foutmelding.
zie log.
info 2020-09-27 19:52:49: MQTT publish: topic ‘zigbee2mqtt/bridge/config’, payload ‘{“commit”:”0cd4607″,”coordinator”:{“meta”:{“maintrel”:3,”majorrel”:2,”minorrel”:6,”product”:0,”revision”:20190608,”transportrev”:2},”type”:”zStack12″},”log_level”:”info”,”network”:{“channel”:11,”extendedPanID”:”0xdddddddddddddddd”,”panID”:6754},”permit_join”:true,”version”:”1.14.4″}’
error 2020-09-27 19:53:06: Failed to execute LQI for ‘Vocht sensor badkamer’
error 2020-09-27 19:53:40: Failed to execute routing table for ‘Vocht sensor badkamer’
info 2020-09-27 19:53:40: Network scan finished
info 2020-09-27 19:53:40: MQTT publish: topic ‘zigbee2mqtt/bridge/networkmap/graphviz’, payload ‘digraph G {
Soms kan het helpen om sensor dichter bij je stick te brengen voor te pairen (indien dit mogelijk is).
Bedankt voor de tip!!
Wai is trouwens de bovenste regel
Dat is je CC2531 (de coordinator van je Zigbee netwerk).
Ik heb het idee dat bereik van de stick minder is dan de xiaomi gateway mijn rookmelder zolder lost connect, dat is jammer.
Zie deze link hoe je je bereik kunt vergroten.
Oke ik zag het ook in je artikel staan.
Maar ik zie ook dat het met een lamp gaat .ik heb ikea en phillips liggen, is dat geen oplossing?
Alles wat niet met batterij wordt gevoed kan in principe als repeater dienst doen. Een Ikea of Philips lamp (aangemeld aan je Zigbee netwerk dan) zou moeten werken.
Thanks, het gaat wel beter maar ben nog niet tevreden. Kan je nog iets tunen qua dekking mijn max bereik is niet meer dan 4 of 5 meter en kan je ook de connect waardes ergens zien?
Je kunt de kwaliteit van de verbinding zien bij: Instelling > Apparaten. Zoek dan voor Link Quality. Zie ook attached screenshot.
Je kunt eventueel ook nog op strategische plaatsen extra CC2531 sticks gebruiken die je van router-firmware voorziet. Ik heb zelf een 3-tal CC2530+CC2591 als routers in gebruik in mijn huis.
Ik heb mijn grootste verbetering echter gekregen door gebruik te maken van een CC26X2R1 als coordinator. Nooit meer gemiste notificaties van mijn Zigbee apparaten sindsdien.
Nou, dit zijn mijn waardes.
Wat is goede waarde voor stabiliteit?
Dat is wel erg laag. Ik had destijds met een CC2531 stick waardes tussen 10 en 20. Soms helpt het om stick niet rechtstreeks in Raspberry Pi te stoppen maar met een USB extender kabel ongeveer 50 cm er vandaan.
Met de CC26X2R1 heb je hogere waardes.
Wacht, ik zit verkeerd te kijken Zijn het waardes die onder kopje data staan?
Het is de waarde onder ‘Data’ Inderdaad.
Dan is het een stuk beter. De bovenste regel is mijn router ikea lamp vreemd dat die 0 aangeeft.
Mijn Philips Hue Lamp geeft ook geen Link Quality terug.
Heb aan mijn zigbee2mqtt succesvol de philips motion sensor gekoppeld outdoor.
Alleen ik krijg ook meldingen als er zonlicht op schijnt. Kan je qua gevoeligheid nog iets aanpassen?
Ik heb zelf deze sensor niet, maar je de documentatie van Zigbee2MQTT bekijkt dan kun je die inderdaad zelf aanpassen.
Motion sensitivity
The motion sensitivity can be changed by publishing to zigbee2mqtt/[FRIENDLY_NAME]/set {“motion_sensitivity”: “SENSITIVITY”} where SENSITIVITY is one of the following values: low, medium, high (default).
Ok,waar komen die regels in?
Dat vind ik niet duidelijk.
Je kunt met MQTT Explorer topic publishen. Verdiep je daar maar eens in.
Ik heb het geinstalleerd op mijn windows computer en kan connecten: zie apparaten. Moet nu de rest uitzoeken.
Op een of andere manier krijg ik dit niet toegevoegd ,na publisch zie ik de regels niet terug.
Hier als bijlage als mqtt explorer opnieuw opstart is het weg.
Moet SENSITIVITY niet een van de waarden ‘low’, ‘medium’ of ‘high’ zijn?
Ja dat klopt ,maar de regel zie na herstart niet meer terug
Probeer anders volgend commando eens in een terminal (vervang ip-adres door ip-adres waar jij mosquitto hebt geinstalleerd):
krijg onderstaande foutmelding.
Error: Unknown option ‘motion/set/’.
Dat komt waarschijnlijk omdat je je motion sensor met een spatie hebt aangemaakt. Misschien dat het volgende helpt:
Krijg geen foutmelding meer maar zie de regel niet in mqtt explorer.
Hei is nu toch gelukt op het via mqtt explorer in te zetten.
Vraag me alleen af of de regel er zo goed in staat.
Ziet er goed uit.
Ik krijg nog steeds valse meldingen .
Dat gebeurt als de zon erop schijnt.
Ik kan daar verder niks over zeggen. Ik denk dat je dat toch echt op een Philips Hue forum verder moet uitzoeken.
Ik ben er nu pas achter waar je dit moet configureren Simon. Dit kun je in de ‘\opt\zigbee2mqtt\data\configuration.yaml’ file van je Zigbee2MQTT installatie doen.
Voeg hierbij in het devices block voor het device de regel toe. Voorbeeld:
Melding via domoticz als een apparaat verbinding heeft verloren.Kwam er achter dat mijn aqara sensor voor vocht en temperatuur al een week niks had doorgegeven ,kan ik dit via een melding eerder traceren?
Je zou zelf een soort ‘watchdog’ kunnen bouwen in je LUA scripts. Als je LinkQuality bijvoorbeeld 0 is dat je een push message of email op je telefoon krijgt.
Helaas dat werkt niet domoticz krijgt een update vanuit de sensor als bijvoorbeeld sensor batterij eruit haal, blijft de Waardes in domoticz ongewijzigd .
Ik heb zelf een grafiek gedefinieerd met Grafana waarbij ik de Link Quality van al mijn Zigbee devices kan aflezen. Zie ook screenshot. Hier kijk ik regelematig na en op deze manier kan ik ook eenvoudig (manueel weliswaar) controleren of mijn devices nog verbonden zijn.
Grafana ziet er zeker mooi uit, misschien voor de toekomst.
Ik heb het nu op een andere manier gedaan. zie screenshot.
Hoi Henri, leuke website heb je. Ik ben zelf ook bezig met Domoticz en heb al diverse zaken draaien. Graag wil ik op korte termijn zigbee2mqtt als projectje oppakken.
Heb je nog tips voor mij? Bijv. waar kan je de hardware het beste kopen, wat is handig bij het flashen van de stick etc.
Als sensors zou ik Xiami Aqara sensors aanraden. Deze zijn goedkoop en werken bij mij uitermate goed met Zigbee2MQTT. Deze kun je het goedkoopste bij AliExpress aanschaffen. Als coordinator zou ik sterk de CC26X2R1 aanraden. Deze heeft een goed bereik, kan veel sensors aan en werkt zeer stabiel. Ik heb deze rechtstreeks bij Texas Instruments (TI) aangeschaft.
Heb een lidl schakelaar (Tussenstekker) gekocht en kunnen pairen.
Alleen ik krijg niet te zien in de lijst devices.
Iemand een tip?
Ik heb als test nu ook een Lidl tussenstekker aangeschaft (binnenkort blog item hierover). Deze verschijnt inderdaad niet in de lijst van devices. Hij werkt wel goed binnen Zigbee2MQTT zelf. Dit lijkt een bekend probleem te zijn met de Zigbee2MQTT plugin sinds de laatste update van Zigbee2MQTT 1.16.2. Zie ook deze link voor meer informatie: