“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 le seguenti configurazioni di esempio link

Inserisco un’ulteriore configurazione con più dispositivi ble inseriti 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

 

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

  2. Avatar Luigi ha detto:

    Io ho il modello DGNWG02LM cinese. E’ inutile che ci provo perchè non funzionerà sicuramente o potrebbe funzionare?
    Non ho paura di rendere il gateway inutilizzabile.

    • Avatar Alesoft73 ha detto:

      Buongiorno,
      i modelli sono solo quelli inseriti nell’articolo.
      Gli altri hanno un hardware che non potrebbe supportare il flash di un Sistema Operativo come OpenWrt.
      Mi dispiace.

    • Avatar Domenico ha detto:

      Ciao Luigi anche io ho questo modello e volevo provare visto che non lo uso…tu hai provato?

  3. Avatar MaGiDeL ha detto:

    Ciao Alesoft73, ottimo articolo sul gateway xiaomi.
    Ho alcuni dubbi. 🙂
    Parliamo del gateway v2, quello che si connette tranquillamente ad hassio, una volta abilitato il token (cliccando più volte in un passo di menu di Mi Home nelle impostazioni, se ricordo bene) e poi con l’integrazione aqara, giusto?
    Se ho ben capito, questo gateway si connette tramite wifi alla rete di casa. Utilizza sia lo zigbee che il bluetooth per riconoscere i dispositivi (parliamo della versione DGNWG05LM, per il bluetooth).
    Con il flash del firmware che proponi, metti dentro un openwrt (grandissima cosa!!!! ) per gestire tutto il dispositivo e poi carichi i protocolli zigbee e bluetooth per utilizzarli.
    Quello che ti volevo chiedere era circa la cassa audio. Come viene gestita?
    Con il firmware originale lumi la cassa viene usata con il servizio “xiaomi_aqara.play_ringtone” con quei “ringtone_id” fissi che non si possono cambiare.
    Flashandolo con il tuo metodo, alla fine avrò una casa che posso utilizzare come un mediaplayer? tipo voglio sentire un mp3 e attraverso il servizio “media_player.play_media” lo posso sentire, creando su hassio un entità tipo “entity_id: media_player.gateway” per esempio?
    Grazie in anticipo per la tua risposta

    • Avatar Alesoft73 ha detto:

      Grazie!!
      Andiamo al punto, il modello del Gateway lo ritrovi vicino al plug della corrente.
      La cassa audio viene gestita tramite protocollo MQTT.
      Tramite comandi MQTT puoi selezionare il file da riprodurre oppure l’url di una radio.
      Per semplificare le cose ho inserito un package con degli script da richiamare per la gestione audio e TTS.
      Inoltre ho creato una piccola radio con alcune stazioni.
      I servizi xiaomi e sevizi mediaplayer non vengono assolutamenti usati in questo device , gira tutto via MQTT come anche la light.

  4. Avatar ivityc ha detto:

    Salve,
    intanto complimenti per l’articolo.
    Sono riuscito a fare i collegamente, nonostante le saldature su spazio microscopico
    riesco a collegarmi con la seriale
    arrivo al cambio password
    ma quando provo a modificare il file rc.local il terminale inizia a fare le bizze
    mette caratteri spuri, non funzioano i comandi base vi e dopo poco devo ricominciare da capo
    esempio di caratteri strani :
    :▒>▒>▒▒>▒>▒▒
    il collegamento sembra corretto , non so da cosa possa dipendere
    non credo si surriscaldino le saldature
    qualche idea ?

    grazie

    • Avatar Alesoft73 ha detto:

      Ti ringrazio,
      i problemi potrebbero essere molteplici, o hai settato la velocità della porta seriale in putty errata o qualche saldatura fa contatto.
      Scrivimi nel gruppo, in caso mi fai vedere che problema ti da con un video in pvt.
      Telegram : https://t.me/HassioHelp
      A presto 😉

  5. Avatar Domenico Soriano ha detto:

    dopo l’aggiornamento firmware, potrá essere gestito da HA il sensore di luminositá e il pulsante?

  6. Avatar icelucio ha detto:

    E’ la milionesima volta che riavvio l’hub… non riesco a capire come fare per bloccarne il boot. Credo di averle provate tutte. C’è un momento preciso o una combinazione di tasti specifica o basta un “invio”, un ctrl+z durante lo scorrere le log?

    Grazie, Lucio

    • Avatar icelucio ha detto:

      Se può essere d’aiuto a qualcun altro, visto che ci ho perso un paio d’ore… bisogna premere “invio” appena si alimenta l’hub ed incollare il comando “setenv …” altrimenti il boot parte e non si ferma più.
      Pur comprendendo l’1% di quello che stavo facendo, ho portato a termine la guida senza alcun problema o intoppo.

      Grazie, è stato divertente.
      Lucio

    • Avatar Alesoft73 ha detto:

      Buongiorno,
      devi copiarti il comando con copia incolla. e incollarlo piu’ volte mentre fa il boot premendo invio.
      Devi essere ababstanza veloce.
      Se prende il comando mentre fa il boot, ti esce il “bash”.
      Allora puoi procedere con il cambio password.

  7. Avatar Marco ha detto:

    C’è un errore nella riga relativa al comando di flash del firmware over the air. In particolare il punto sbagliato è: raw.githubusercontent.comn, invece dovrebbe essere: raw.githubusercontent.com\n.
    Poi avrei un paio di domande, si può anche gestire il colore della luce via MQTT? e funziona anche il sensore di luminosità integrato nel Gateway via MQTT?

  8. Avatar Marco ha detto:

    Se volessi assegnare un IP fisso al gateway, dove lo imposto?
    Ho visto nella scheda Network->Interface che ci sono due Interfacce, una chiamata LAN in cui è scritto Protocollo: stati address e una WWAN con scritto Protocollo: DHCP Client.
    E’ quest’ultima da cambiare in Static Address?

    • Avatar Alesoft73 ha detto:

      Il firmware Openwrt e’ stato adattato per essere usato con il Gateway.
      Ti conviene prenotare un Ip dal DHCP del router con cui gestisci tutta la rete.
      Saluti.

      • Avatar Marco ha detto:

        Si, alla fine ho fatto cosi. Una domanda, se avessi piu di un gateway, per riprodurre un file mp3 su uno specifico gateway, come faccio?

        • Avatar Alesoft73 ha detto:

          Se hai piu’ Gateway ti consiglio di flashare il firmware come router e gestire allo stesso modo l’audio, ovviamente dovrai cambiare il topic mqtt altrimenti non direzioni l’audio al gateway corretto.

          • Avatar Marco ha detto:

            Grazie. Ma se utilizzo il firmware per farlo diventare router, posso sempre utilizzare la luce rgb seguendo la guida LUCE E AUDIO?

          • Avatar Alesoft73 ha detto:

            Esattamente.. Ma evita di installare zigbee2mqtt in quanto non ti serve e non fuinzionerebbe flashando firmware come router 😉

          • Avatar Marco ha detto:

            Quale è il topic da cambiare sul gateway per distinguerli ed indirizzare l’audio sul gateway corretto?

          • Avatar Alesoft73 ha detto:

            Buongiorno.
            Devi sostituire il topic “mqtt_topic” : “lumi” in “mqtt_topic” : “lumi2” (per esempio) nel file “config.json”.
            Trovi l’esempio nella guida in cui si configura “LUCE E AUDIO”
            Saluti e grazie 😉

Lascia un commento

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