Zigbee2Mqtt Domoticz – debug
In questo articolo vedremo come inviare comandi ai device attraverso Mqtt explorer per effettuare il debug in caso di problemi, quali impostazioni di Zigbee2Mqtt permettono di facilitare questo compito, ereeremo una mappa della nostra rete Zigbee e, infine, vedremo uno script che, lanciato, periodicamente via crontab, permette di verficare se il servizio zigbee2mqtt è attivo e, nel caso non lo fosse, di effettuarne il restart.
Quando il coordinator (nel nostro caso CC2531) effettua il pairing, zigbee2mqtt modifica il file di configurazione/opt/zigbee2mqtt/data/configuration.yaml inserendo nella sezione device una serie di informazioni.
Qui sotto incollo un esempio per alcuni dei device.
devices: '0x7cb03eaa0a037cd1': friendly_name: OSRAMDIMSalotto '0x00158d000490f28f': friendly_name: '0x00158d000490f28f'
Il friendly name è molto importante perchè ci permette di identificare nei topic mqtt il nostro device. Di default viene impostato con l’ID del dispositivo.
Per rendere più semplice il debug, è meglio cambiarlo e impostarto a qualcosa di più comprensibile.
Ad esempio per la lampadina dell’esempio precedente ho impostato il friendly_name a OSRAMDIMSalotto
Per cambiarlo andiamo a stoppare il servizio di zigbee2mqtt con il comando:
sudo systemctl stop zigbee2mqtt.service
Effettuiamo la modifica nel file di configurazione inserendo in friendly_name quello che vogliamo e restartiamo il servizio.
Per effettuare il debug ho utilizzato MqttExplorer. Si tratta di un tool grafico, leggero gratuito e facile da usare.
E’ possibile scaricarlo da qui.
Una volta scaricato, inseriamo i dati dell’MQtt server e gli eventuali username e password.
Fatto questo compariranno tutti i topic e potremo facilemente navigare tra di essi come possiamo vedere in figura.
Sotto il topic homeassistant troveremo le informazioni relative ai device.
MQttExplorer permette di inviare anche comandi Mqtt nella sezione publish.
Il tipo di comandi dipende dal device.
Ad esempio la lampadina OSRAM accetta, tra gli altri, il comando:
zigbee2mqtt/[FRIENDLY_NAME]/set/state
Con paylod ON oppure OFF.
Questo comando accende e spegne la lampadina.
Qui, per ogni device, sono elencati i comandi accettati.
Zigbee2Mqtt permette di creare molto facilmente una mappa della nostra rete Zigbee.
Inviamo il seguente comando raw zigbee2mqtt/bridge/networkmap e come paylod graphviz
A questo punto cliccando su value comparirà una stringa come in figura
Copiamo la stringa e incolliamola su http://www.webgraphviz.com/
Clicchiamo quindi su generate graphic.
Otterremo qualcosa di simile a questo.
In rosso avremo i coordinator, in blu i router e in giallo gli end device.
Infine vediamo quale è lo script che permette di verificare lo stato del servizio zigbee2mqtt e eventualmente di effettuarne il restart.
#!/bin/bash MosquittoState=`sudo systemctl status zigbee2mqtt.service` if [[ $MosquittoState == *"active (running)"* ]] then echo 'zigbee2mqtt is running. Nothing to do.' elif [[ $MosquittoState == *"inactive (dead)"* ]] then echo 'zigbee2mqtt is not running. Restarting ...' sudo systemctl restart zigbee2mqtt.service echo 'zigbee2mqtt restarted.' fi
rendiamo lo script eseguibile con il comando chmod +x nomescript.sh
Editiamo crontab con il comando crontab – e ed inseriamo
*/2 * * * * sudo /home/pi/zigbee2mqtt.sh
Questo farà si che lo script venga eseguito ogni due minuti.