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

  1. Clone repository in je domoticz plugins folder
    cd domoticz/plugins
    git clone https://github.com/stas-demydiuk/domoticz-Zigbee2MQTT-plugin.git Zigbee2MQTT
  2. Restart domoticz
  3. In Domoticz settings controleer dat “Accepteer nieuwe Hardware/Sensoreren’ aan staat.
  4. Ga naar Instellingen > Hardware en kies item “Zigbee2MQTT”
  5. 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

  1. 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.

  2. 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];
    
    }
  3. 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.