Sonoff USB Dongle 3.0, zigbee2mqtt e sostituzione vecchio CC2531

Tags: 

Per chi ha comprato l'economico Sonoff USB Dongle 3.0 Plus (https://sonoff.tech/product/diy-smart-switch/sonoff-dongle-plus/) per mettere in cantina il vecchio CC2531 (sostituendolo con il nuovo CC2652P) qui spiego come aggiornare il firmware (necessario per chi ha preso i primi batch del dongle), e come fare la sostituzione su Zigbee2mqtt.

ATTENZIONE: Io ho montato il dongle su un vecchio Raspberry PI Zero W e funziona benissimo (mi pare anzi che il carico di CPU sia diminuito rispetto al vecchio CC2531). Sullo stesso raspberry c'è anche un ricevitore a radiofrequenza 433Mhz e un processo che ascolta i segnali relativi, e funziona tutto bene. Per chi se lo chiedesse.

Vecchio articolo di riferimento: https://myhq.it/installare-adattatore-zigbee-cc2531-e-zigbee2mqtt-su-ras...

 

AGGIORNAMENTO FIRMWARE

Per poter usare lo script di aggiornamento firmware dovete avere python3 installato, pip, e avere installato questi pacchetti:

python3 -m pip install pyserial intelhex

 

Il firmware aggiornato può essere preso da qui: https://github.com/Koenkk/Z-Stack-firmware/tree/master/coordinator/Z-Sta...

Scaricate l'ultima versione "launchpad" e decomprimetela, ottenendo il file HEX.

 

Quindi prendete il repository del tool di aggiornamento "cc2538-bsl":

git clone https://github.com/JelmerT/cc2538-bsl.git

 

Attaccate la chiavetta (su alcune versioni potrebbe essere necessario tenere premuto un pulsantino interno per mandarlo in modalità "programmazione", ma nella mia versione no, basta attaccarla e va bene).

Quindi va eseguito il comando:

sudo ./cc2538-bsl.py -p /dev/ttyUSB0 -evw --bootloader-sonoff-usb CC1352P2_CC2652P_launchpad_coordinator_20211217.hex

(ovviamente da cambiare i parametri di porta e path del file come richiesto da voi)

 

COPIA IEEE ADDRESS DAL VECCHIO DONGLE

Prima però di fare questo comando la prima volta è necessario però specificare anche l'indirizzo IEEE da impostare nel dongle, in modo che sia corrispondente a quello del vecchio CC2531 (cosi' facendo zigbee2mqtt lo riconoscerà direttamente senza dover rifare il pairing di tutti i dispositivi).

 

Per prima cosa dovete ottenere l'indirizzo IEEE dal vecchio dongle. La cosa più veloce è guardare le prime righe del file "data/database.db" (nella cartella di zigbee2mqtt), cercando questo pattern:

{"id":1,"type":"Coordinator","ieeeAddr":"0x00124b000e89686d","nwkAddr":0..

Prendete la voce "ieeeAddr", togliete lo 0x iniziale e mettete dei ":" ogni 2 caratteri. Quello sopra diventa "00:12:4b:00:0e:89:68:6d"

(In alternativa potete anche guardare in "Settings" -> "About" -> "Coordinator IEEE Address" della interfaccia web di zigbee2mqtt)

 

A questo punto al comando di aggiornamento firmware sopra dovete aggiungere il parametro "--ieee-address 00:12:4b:00:0e:89:68:6d" 

Quindi il comando completo, da eseguire solo la prima volta, sarà:

sudo ./cc2538-bsl.py -p /dev/ttyUSB0 -evw --bootloader-sonoff-usb --ieee-address 00:12:4b:00:0e:89:68:6d CC1352P2_CC2652P_launchpad_coordinator_20211217.hex

 

SOSTITUZIONE DONGLE

A questo punto siete pronti per la sostituzione vera e propria. Fermate zigbee2mqtt, togliete il vecchio dongle, mettete il nuovo, modificate nel config la porta tty se è cambiata (potete guardare l'output di dmesg per capire la porta nuova), quindi riavviate zigbee2mqtt.

Da me è andato quasi tutto liscio: inizialmente non venivano riconosciuti i dispositivi router (quelli connessi alla rete elettrica), ma è bastato staccarli dalla rete e riattaccarli e li ha ripresi.

Un solo dispositivo era stato rimosso dalla lista (non ho idea del perchè, era anche l'ultimo che avevo accoppiato, magari avevo fatto qualche errore io) e ho dovuto rifare il pairing.

 

Articoli di riferimento:

https://indomus.it/guide/riprogrammare-il-firmware-di-itead-sonoff-zigbe...
https://www.zigbee2mqtt.io/guide/adapters/flashing/copy_ieeaddr.html

Aggiungi un commento

Scrivi la risposta in lettere (ad esempio "tre" e non "3")