“RECYCLED “ Rendiamo liberi i Gateway Xiaomi (Zigbee2Mqtt – Ble – Audio) con il firmware OpenWrt!

HassioHelp

“RECYCLED “ Rendiamo liberi i Gateway Xiaomi (Zigbee2Mqtt – Ble – Audio) con il firmware OpenWrt!

Argomento: Root – Flash – Zigbee- Ble
Livello: Esperto (Novizio,Esperto, Pro)
Difficoltà: Alta (Bassa, Media, Alta)

 

Premessa, la sostituzione del firmware originale è prevista solo per i seguenti modelli:
Versione EU DGNWG05LM Versione CN ZHWG11LM.

Inoltre ci tengo a precisare che non ci riteniamo responsabili per eventuali danni al device.

Prima di iniziare :

  • Ricordatevi di abbinare il Gateway alla rete wifi tramite Mi home.
  • Configurate e avviate il broker MQTT nel vostro Home Assistant.

Per poter accedere all’interno del nostro Gateway e sostituire il firmware, c’è bisogno di avere l’accesso come “root”.
Per avere tale accesso dobbiamo eseguire  una modifica hardware, saldando 3 fili e collegandoli a una interfaccia  FT232RL FTDI da USB a TTL

Per accedere all’ hardware del Gateway vanno tolti i 3 gommini di copertura,  sotto vi troverete le viti di smontaggio come da foto.

Usate il seguente cacciavite Spanner Head 2.6mm.

Punti di saldatura.

Saldare 3 contatti GND, RX, TX. (non va connessa nessuna alimentazione all’FTDI)

Eseguite le saldature, colleghiamo rispettivi cavi alla UART e attacchiamo il Gateway alla presa di corrente ricordandoci di rimontare le antenne.

ATTENZIONE!!!

IL GATEWAY E’ ALIMENTATO 220V, PRENDETE LE DOVUTE PRECAUZIONI !!!!

 

ROOT

Per poter interagire con il Gateway e abilitare il root , useremo Putty con un baudrate di 115200 e rispettiva COM abbinata all’USB del FTDI

 

 

 

 

 

Avviato Putty via “Serial”, e alimentato il Gateway, vi comparirà la seguente schermata.

 

 

 

 

 

 

 

Dovete essere veloci a premere un qualsiasi tasto per interrompere il boot totale del gateway per poi inserire tramite copia e incolla il seguente comando:

Se il comando passa durante il boot vi si presenterà una bash console, quindi digitate:

Inserite una password di vostra scelta, oppure premete tre volte invio lasciando la password vuota.

Nel caso in cui non si presentasse la bash consolle, riavviate il Gateway e rifate la procedura appena decritta.

Eseguito il root, possiamo abilitare il servizio SSH per gestire il Gateway da una consolle alternativa, lasciando da parte il collegamento con la seriale.

SSH

Per abilitare il server ssh sul gateway aggiungete la seguente riga al file  “/etc/rc.local” aiutandoci con il file editor vi, digitate :

vi /etc/rc.local

All’interno del file rc.local prima della riga “/home/root/fac/fac_test” inerite il seguente comando:

/etc/init.d/dropbear start &

Salvate ed uscite dall’editor.
Vi consiglio di leggervi come usare l’editor “vi” cercando con google.

L’inserimento del comando “dropbear” abiliterà al boot del Gateway il collegamento SSH da poter gestire poi da consolle evitando la seriale.
A questo punto staccate ftdi dalla presa USB e dal Gateway. Riavviate il gateway e tramite Putty collegatevi via SSH .

IP GATEWAY porta 22

Se il collegamento SSH è andato a buon fine , ci troveremo in questa situazione :

FLASH OVER THE AIR

Ora siamo pronti ad eseguire il “flash” del firmware  OPENWRT,  con il metodo “OVER THE AIR”.

Eseguiamo un backup completo del Gateway per permettervi  in futuro , di ritornare ad avere il Gateway “originale”.

Eseguiamo il backup completo del Gateway.
Colleghiamoci via ssh al nostro Device e digitiamo :

Al termine del backup usate il programma Winscp,  collegandovi al Gateway con protollo “SCP” nome utente “root” e password “pw_scelta”.
Recatevi nella directory “tmp/lumi”  e salvatevi in locale il file “lumi_stock.tar.gz”. Terminato  il download del file, dovete assolutamente eliminarlo dal Gateway.

Ora passiamo al flash del nuovo Firmware OVER THE AIR.
Colleghiamoci via SSH al Gateway ed inviamo il seguente comando da consolle:

Questo comando interromperà tutti i processi sul gateway, è un comportamento normale se la vostra connessione ssh verrà interrotta.
Il processo di flashing richiede alcuni minuti. Al termine, il gateway creerà una rete Wi-Fi aperta con il nome “OpenWrt”.
Non abbiate fretta, aspettate!  (circa 10 min.)

Arrivati a questo punto possiamo eliminare il collegamento via seriale con FTDI,  togliere le saldature dal Gateway e richiuderlo.

FLASH VIA USB UART + USB

Se per qualche motivo il metodo “OVER THE AIR” non fosse andato a buon fine, dovete passare a flashare il firmware usando un ulteriore cavo  USB saldato alla motherboard.

Saldate il cavo USB alla scheda del gateway, EVITANDO la saldatura dell’ “ID” <– I M P O R T A N T E

E’ NECESSARIO usare sia il collegamento UART che quello USB per questa operazione.

Colleghiamoci prima con “Putty”, usando l’interfaccia “FTDI”  per attivare la modalità USB.

Digitiamo il seguente comando quando appare il “prompt =>”:

bmode usb

Il gateway passerà alla modalità avvio USB e il software mfgtools sarà in grado di aggiornare le partizioni della memoria flash del gateway.

Eseguiamo il donwload del  software MGTOOLS e avviamolo.

È sufficiente premere il pulsante Start per avviare l’operazione.

CONFIGURAZIONE OPENWRT

Collegatevi direttamente al Gateway che si trova in modalità Acess Point, digitate dal vostro browser “http://192.168.1.1”.

Vi ritroverete collegati alla consolle OPENWRT, entrate e configurate la rete wifi seguendo i seguenti screenshot

 

Premete il pulsante Scan sulla prima interfaccia “radio0”, dopo pochi secondi vedrete un elenco di reti.

Scegliete la vostra rete e selezionate “Join Network”.

 

Nella finestra pop-up spuntate la casella di controllo “Replace Wireless Configuration”. Inserite la “WPA passphrase” (password Wi-Fi).

Confermate le impostazioni successive, premete il pulsante Salva.

Per applicare correttamente tutte le modifiche, è necessario disabilitare la modalità “Access Point” cliccando il pulsante “Disable” nella connessione per la seconda interfaccia.

All’interno di questo firmware avrete:

• OpenWrt LuCi GUI sulla porta 80
• Un’utility di comando per il flashing del modulo zigbee jn5169
• Plugin Web per LuCi per eseguire il flashing di firmware OPENWRT

 

RICORDATE! NON abilitare contemporaneamente le modalità Wi-Fi e modalità Access Point. Il firmware non può gestire contemporaneamente entrambe le modalità.
Se avete fatto degli errori premete il pulsante sul gateway per 10 secondi. Lampeggerà 3 volte di color giallo e tornerà alla modalità AP di partenza.

 

PASSIAMO ORA AD INSTALLARE ZIGBEE2MQTT

La sezione hardware Zigbee è gestita dal chip “jn5169” che programmeremo con un firmware “Zigate” come coordinator.

Digitiamo:

wget https://github.com/openlumi/ZiGate/releases/download/snapshot-20201201/ZigbeeNodeControlBridge_JN5169_FULL_FUNC_DEVICE_31e_115200.bin -O /tmp/zigate.bin

Poi:

jnflash /tmp/zigate.bin

Infine:

jntool erase_pdm

C’è’ la possibilità di flashare un firmware zigbee  alternativo,  ed usare il Gateway come router, se volete maggiori informazioni potete leggere la guida al seguente link

Ora aggiungiamo la seguente repository “OpenLumi” dando il seguente comando:

[ -f /lib/libustream-ssl.so ] && echo “libustream already installed” || opkg install libustream-mbedtls (! grep -q openlumi /etc/opkg/customfeeds.conf) && ( wget -q https://openlumi.github.io/openwrt-packages/public.key -O /tmp/public.key && opkg-key add /tmp/public.key && rm /tmp/public.key && echo ‘src/gz openlumi https://openlumi.github.io/openwrt-packages/packages/19.07/arm_cortex-a9_neon’ >> /etc/opkg/customfeeds.conf && echo “Feed added successfully!” ) || echo “Feed added already. Skip.”

A questo punto installiamo le librerie per Zigbee2mqtt dando i seguenti comandi:

opkg update

Successivamente:

opkg install mosquitto node node-zigbee2mqtt

Digitiamo:

sed -i ‘s/port: 8080/port: 8090/’ /etc/zigbee2mqtt/configuration.yaml

Poi:

sed -i ‘s/baudrate: 1000000/baudrate: 115200/’ /etc/zigbee2mqtt/configuration.yaml

Infine:

sed -i ‘s/homeassistant: false/homeassistant: true/’ /etc/zigbee2mqtt/configuration.yaml

Vi consiglio di usare Winscp per editare il file “configuration.yaml “nella cartella “/etc/zigbee2mqtt/“  per inserire i dati di configurazione del vostro broker MQTT.

Vi inserisco un esempio di configurazione :

 

Salvato il file, ritorniamo alla nostra consolle SSH e diamo il comando:

/etc/init.d/zigbee2mqtt restart

Ora potete connettervi all’interfaccia Zigbee2mqtt tramite browser all’indirizoo “http://tuo_ip:8090” e cominciare ad integrare e gestire tutti i vostri device Zigbee.

 

Ma come sempre, noi di HASSIOHELP, non ci fermiamo al primo traguardo.
Il Gateway all’interno ha una “light” Led Rgb e una cassa audio.
Vogliamo configurare anche quelle!!

Dobbiamo farci aiutare sempre dal nostro broker Mqtt,  per gestire anche queste due “caratteristiche” in Home Assitant

LUCE E AUDIO

Colleghiamoci via SSH con “Putty” al nostro Gateway e diamo i seguenti comandi:

wget https://openlumi.github.io/openwrt-packages/public.key -O /tmp/public.key

Comando:

opkg-key add /tmp/public.key

Comando:

Comando:

opkg update && opkg install node git-http mpc mpd-full

Proseguiamo:

Comando:

mkdir /opt

Comando

cd /opt

Comando

git clone https://github.com/Beetle-II/lumi.git

Comando

cd lumi

Comando

cp config_example.json config.json

Editiamo sempre con l’aiuto di Winscp il file config.json nella direcotry “opt/lumi”

 

 

Testiamo il funzionamento della configurazione dando il comando:

node /opt/lumi/lumi.js

Nel caso di errori riavviate il Gateway digitando “reboot” in consolle.

Poi ricollegatevi via ssh e ridate il comando:

node /opt/lumi/lumi.js

Dovreste vedere i primi topic mqtt partire verso il vostro broker .

 

Se tutto è andato a buon fine, uscite da “lumi.js” con i tasti “ctrl-c” e attivate l’avvio al boot del servizio con i seguenti comandi:

cd /opt/lumi

Comando

chmod +x lumi

Comando

cp lumi /etc/init.d/lumi

Comando

/etc/init.d/lumi enable

Comando

/etc/init.d/lumi start

Entrate nel vostro Home Assistant e vi ritroverete dentro all’integrazione Mqtt un’ entità “light.light_gateway”.

Non e’ finita qui !!

BLE

È stato riscontrato che il chip WI-FI “rtl8723bs”, solo nella versione Europea del Gateway, ha al suo interno un modulo BLE.

E’ quindi possibile gestire device come , LYWSDCGQ,  LYWSD02, LYWSD03MMC, BILANCIA MI, Mi BAND 3, HHCCJCY01, MIFLORA …

Conosco i seguenti comandi per abilitare l’adattatore Bluetooth.

• Con il comando “hciconfig hci0 up

• Modificando il parametro “AutoEnable“, che si trova in config “/etc/bluetooth/main.conf”, in “true

Scelgo il secondo.

Quando l’interfaccia è in esecuzione è possibile eseguire una scansione per verificarene il funzionamento, digitiamo  “hcitool lescan”

Per gestire i nostri device useremo EspruinoHub.

Procediamo con l’installazione …

Comando

opkg update

Comando

opkg install node-espruinohub

Con winscp editiamo il file con indirizzo completo “/etc/espurinohub/config.json”

Con la seguente configurazione di esempio link

Se conosci gli indirizzi “Mac” dei tuoi dispositivi BLE, ti consiglio di inserirli nella configurazione e modificare  “only_known_devices: true” .

Questo permettrà al gateway di controllare solo i device noti.

Per interagire con HomeAssistant, è sufficiente che i dati siano abilitati all’invio in formato json.

Impostate le tre voci in “true” :

“mqtt_format_json”: true,
“homeassistant”: true,
“mqtt_cache_state”: true

 

Siamo arrivati alla fine dell’articolo, e come sempre vi lascio con un package che vi semplifica l’uso del Gateway.

All’interno troverete degli script per gestire AUDIO MP3,  TTS e anche l’ascolto di alcune STAZIONI RADIO!

Package

 

Anche questa è fatta, spero di essere stato d’aiuto a qualcuno…..

Link Riferimento:

 

 


Sostienici, dona un caffè al nostro sito

 

2 risposte

  1. Avatar Daniele ha detto:

    Quindi mi confermate che la modifica può essere fatta anche su gateway Aqara M1 ZHWG11LM?

    • Avatar Alesoft73 ha detto:

      Si i due modelli dell’articolo.
      Unica differenza, nel modello ZHWG11LM non c’e’ il bluetooth… e quindi non lo puoi attivare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *