Zigbee2MQTT

Om Zigbee devices te kunnen gebruiken binnen Home Assistant is een Zigbee Gateway nodig. Nu kan dat met diverse gateways, bijvoorbeeld de met Tasmota geflashte Sonoff RF-Bridge en deze is afhankelijk van je WiFi netwerk om de MQTT-berichten af te kunnen leveren bij een MQTT-Broker. Andere Zigbee gateways werken wellicht direct in Home Assistant maar de meeste van dit soort gateways hebben een connectie naar een cloud-dienst nodig.

Een andere insteek om Zigbee devices te gebruiken binnen Home Assistant is om een USB-Dongle als gateway te gebruiken en deze direct in de Home Assistant server te plaatsen. Dit kan een Raspberry Pi zijn of bijvoorbeeld een Intel NUC. De Zigbee USB dongle kan aangescaft worden bij o.a. Sonoff maar ook Home Assistant heeft er een beschikbaar onder de naam SkyConnect met dezelfde chip.

Momenteel is een USB dongle met de EFR32MG21 chip het aanbevolen type en Nabu Casa heeft deze beschikbaar als ‘Home Assistant Skyconnect‘. De Skyconnect zal met een firmware upgrade ook het nieuwe Matter (Thread) protocol ondersteunen.

Sonoff heeft dezelfde chip in een USB dongle op hun site staan, de Dongle Plus-E.

Installatie

Zigbee2MQTT kan als add-on in Home Assistant (OS) gebruikt worden of als stand-alone applicatie, eventueel op een andere host. Wat nodig is voor Zigbee2MQTT is in ieder geval:

Bron: https://github.com/Koenkk/zigbee2mqtt

Het meest eenvoudig is om met Home Assistant OS de add-on’s ‘Mosquitto Broker‘ en ‘Zigbee2MQTT‘ te installeren. De Mosquitto Broker is standaard al aanwezig in de repository,

Om Zigbee2MQTT te installeren wordt eerst een git-repository toegevoegd aan Home Assistant Add-ons. Klik daarvoor op deze button:

Kies voor “OPEN LINK’ om de repo toe te voegen. Voeg dan de Zigbee2MQTT repo toe:

Refresh de Add-ons pagina en kies voor zigbee2MQTT en kies voor INSTALLEER

De configuratie vraagt om een poort in te vullen en dit is te achterhalen met Terminal op Home Assistant en het commando:

ha hardware info | grep '/dev/serial/by-id'

Hier wordt dan /dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB… gevonden en dat is de poort die gebruikt wordt.

Ook het mqtt-topic dient ingevuld te worden en de rest kan standaard blijven, na het starten van de add-on zou de front-end van Zigbee2MQTT moeten werken en kan toegevoegd worden aan de zijbalk van HA.

Indien de volgende error in de log te zien is:

Error: network commissioning failed - panId collision detected (expected=6754, actual=6755)

Wijizg dan de configuratie van zigbee2MQTT door als YAML te editten (rechtsboven via 3 stippen pull-down) en zet een advanced optie in de configuratie om het ‘pan_id‘ in te stellen.

Herstart Zigbee2MQTT.

Zigbee devices kunnen nu toegevoegd worden door deze in pairing-mode te zetten (zie handleiding bij het device) en in de Zigbee2MQTT interface de optie Aanmelden Toestaan aan te zetten. Dit kan rechtsboven met:

Bijvoorbeeld de deur-sensor die gevonden wordt:

Met de edit functie kan de naam van het device gewijzigd worden, bijvoorbeeld in deursensor1:

Met de optie ‘Home Assistant entiteit-ID bijwerken wordt door zigbee2MQTT het device binnen Home Assistant dezelfde naam gegeven. Die kun je vervolgens terugvinden in het overzicht bij Ontwikkelhulpmiddelen -> Statussen

Mocht de sensor niet in Home Assistant zichtbaar zijn, controleer dan de MQTT integratie of de sensor daarin wel gedetecteerd is.

Binnen Home Assistant worden de devices (bijna altijd) automatisch via MQTT aangemaakt en zo zijn er bv sensors, binary_sensors, lights, etc voor de Zigbee devices.

Mocht je de status van devices willen aanpassen dan kan dat met een template. Deze kan dan in Home Assistant gebruikt worden als sensor of binairy_sensor waarbij de “water_leak” data de status is. Hieronder een voorbeeld:

EEN VOORBEELD VAN EEN MQTT-CONFIGURATIE VOOR HOME ASSISTANT:

binary_sensor:
  - name: "Watermelder1"
    unique_id: "Watermelder1"
    state_topic: "zigbee2mqtt/Watermelder1"
    value_template: >-
      {% if value_json.water_leak == true %}
        {{'Water gedetecteerd'}}
      {% else %}
        {{'Droog'}}
      {% endif %}
    device_class: moisture
    qos: 1

De sensor kan hierna gebruikt worden in automatisering(en) en de status kan op een dashboard getoond worden.

Voor de deur-sensor ziet de MQTT code er als volgt uit:

sensor:  
  - name: "DemoDeur"
    unique_id: "DemoDeur"
    state_topic: "zigbee2mqtt/DemoDeur"
    value_template: >-
      {% if value_json.contact == true %}
        {{'Dicht'}}
      {% else %}
        {{'Open'}}
      {% endif %}
    qos: 1

En deze kan dan ook in een dashboard weergegeven worden en uiteraard in een automatisering zoals het alarm_panel opgenomen worden.

Zigbee Direct Binding

Direct Binding is een methode om Zigbee devices onderling te koppelen zonder het gebruik van een gateway/bridge. Dit zorgt ervoor dat een zigbee lamp met een zigbee schakelaar of sensor aangezet kan worden zonder tussenkomst van bv Home Assistant of Zigbee2MQTT. Binnen Zigbee2MQTT kan een binding ingesteld worden voor het device (de bewegingsmelder) via settings -> bind van de source naar de destination, in dit voorbeeld naar de lamp: