Datorită încrederii pe care o am în produsele lor, îmi doream de ceva timp un gateway Zigbee de la Lidl (Silvercrest TYGWZ-01), însă de curând am aflat și că acesta poate fi modificat cu ușurință pentru a-l utiliza offline și integra cu Home Assistant prin ZHA (Zigbee Home Automation), așadar n-am mai putut rezista tentației și am cumpărat unul (prin Vinted, de la cineva din Franța, sigilat, 11€ cu transport cu tot).

Gateway Zigbee de la Lidl (Silvercrest TYGWZ-01)

Din când în când apare în oferta Lidl pachetul în care, pe lângă gateway, mai primești și o telecomandă și trei becuri RGB, totul pentru doar 20€ + transportul (a fost recent la respectivul preț, dar până să mă hotărăsc eu a revenit la prețul normal, de 40€).

Dezmembrarea și sudarea pinilor necesari

După cum spuneam, eu am cumpărat doar gateway-ul, care vine însoțit de manual, un mic alimentator de 5V/1A, cablul USB de alimentare și un cablu de rețea alb.

Nefiind curios de prestațiile și funcționalitățile aplicației oficiale, l-am desfăcut pentru a-i suda pinii de care aveam nevoie pentru a-i putea înlocui firmware-ul cu unul care să permită integrarea în Home Assistant cu ZHA. L-am dezmembrat cu toată delicatețea posibilă pentru a nu-i distruge sau zgâria carcasa, chiar dacă știam că-l voi monta ulterior într-un loc destul de ferit vederii.

Pentru sudarea pinilor mi-ar fi prins bine o stație de lipit, dar m-am descurcat, zic eu, destul de bine și cu letconul chinezesc. Deși știam că voi avea nevoie de cel mult patru, RX, TX, GND și 3.3V, mi-a fost mai ușor să-i sudez pe toți șase (până la urmă am avut nevoie doar de trei).

M-am asigurat că niciunui pin nu-i lipsește pastă și m-am apucat de lipit, începând cu pinii extremi. Pentru curățarea surplusului de pastă am folosit niște spray de curățarea a contactelor, o periuță de dinți și câteva bețișoare nazale, astfel obținând rezultatul vizibil în fotografiile din galeria inferioară.

Pentru obținerea parolei root și înlocuirea firmware-ului original am folosit un convertor USB la serial TTL FT232BL luat de pe AliExpress în urmă cu mulți ani, dar puteți folosi orice modul similar, eventual o placă de dezvoltare Arduino UNO. Tot ce contează e să aveți acces la consolă pentru a-i trimite comenzi și citi răspunsurile pe care le primiți prin aceasta.

Desigur, conectarea convertorului se face având gateway-ul și cablul USB al convertorului neconectate la PC, mutând în prealabil, în cazul în care există, jumper-ul acestuia pe poziția 3.3V.

Nu folosiți un convertor de 5V, ci de 3.3V altfel veți arde placa gateway-ului.

Dacă nu dispuneți de un convertor la 3.3V puteți să vă încercați norocul fără conectarea pin-ului VCC (3.3V), eu n-am avut nevoie să o fac pentru a putea programa fără probleme gateway-ul.

Țineți cont de faptul că pinii RX și TX trebuie inversați. Așadar, conductorul care pleacă de pe RX-ul convertorului va trebui conectat la pin-ul TX al gateway-ului și respectiv, pinul TX la RX. Eu n-am fost atent la acest aspect și mi-am dat seama destul de târziu, după aproape 30 de minute în care încercam în zadar să obțin acces la consola gateway-ului.

Pentru comunicarea cu placa, inițial folosiți doar pinii RX, TX și GND.

Obținerea parolei ROOT

Pentru obținerea parolei root, conectați cablul convertorului la PC (evident, mai întâi îi instalați driverele și vă asigurați că este detectat corect de către computer). Pentru a-i trimite comenzi, puteți folosi PuTTY sau orice alt monitor serial (viteza de transmisie: 38400bps, bit de start: 8, fără paritate).

Pentru identificarea portului serial asociat convertorului USB la UART verificați administratorul de dispozitive al sistemului sau Arduino IDE.

Fiindcă am făcut operația de pe Mac, am folosit tio, așadar comanda de conectare include și parametrii menționați mai devreme:

tio [portul_serial] -b 38400 -d 8 -p none -s 1 --flow none

După lansarea comenzii, conectați cablul de alimentare al gateway-ului la portul USB al plăcii și apăsați în consolă tasta Esc până când în aceasta va fi afișat mesajul „Booting…”:

În caz contrar, sistați alimentarea plăcii și reîncercați, dar de data asta încercați să fiți mai rapizi în apăsarea tastei Esc, altfel va trebui să reluați procedeul de la capăt până când veți reuși.

Dacă și consola voastră arată precum cea din screenshot-ul superior, puteți încerca obținerea informațiilor de care veți avea nevoie pentru obținerea parolei ROOT.

Executați mai întâi:

FLR 80000000 401802 16

Apoi:

DW 80000000 4

După care:

FLR 80000000 402002 32

Iar în cele din urmă:

DW 80000000 8

Și copiați răspunsurile într-un document text. Veți avea nevoie de acestea pentru a obține parola ROOT.

Pentru calcularea parolei va trebui să utilizați acest script Python. Dacă nu dispuneți de acestea, instalați și modulele Python cryptography, xmodem și bellows înainte de executarea scriptului.

La rulare, scriptul vă va cere să-i indicați cele trei răspunsuri pe care le-ați copiat mai devreme. În funcție de informațiile din respectivele răspunsuri vă va decoda parola ROOT a gateway-ului.

După obținerea parolei ROOT, sistați alimentarea plăcii gateway-ului, deconectați convertorul UART, conectați cablul de rețea și alimentați. După câteva minute, veți putea vedea în rooter, sau scanând rețeaua, IP-ul local al gatewa-ului. Veți avea nevoie de acesta pentru a vă conecta la gateway prin SSH.

Îl veți identifica ușor căutând în listă un dispozitiv cu denumirea „Tuya”:

dispozitiv tuya retea

Pentru a vă fi mai ușor, pentru operațiile următoare vă recomand să utilizați Linux, dar puteți face asta și din Windows (folosind Windows Terminal), sau mac OS, dacă dispuneți de cunoștințele necesare.

Înlocuirea firmware-ului

Înlocuirea firmware-ului se va realiza prin SSH, așadar conectați-vă la gateway folosind aplicația preferată (PuTTY, iTerm, etc) și portul 2333 pentru a confirma că parola pe care tocmai ați obținut-o funcționează.

ssh -p2333 -oHostKeyAlgorithms=+ssh-rsa root@[IP_GATEWAY]

conectare la gateway prin ssh

Dacă ați reușit conectarea prin SSH, deschideți o nouă fereastră în Terminal, descărcați și trimiteți acest fișier în gateway.

cat serialgateway.bin | ssh -p22 -oHostKeyAlgorithms=+ssh-rsa root@[IP_GATEWAY] "cat >/tuya/serialgateway"

trimitere fisier la gateway

Sau, dacă preferați o metodă mai simplă, folosiți WinSCP ori FileZilla pentru a vă conecta la gateway și trimite respectivul fișier în /tuya/.

Executați comanda:

if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi

Apoi:

echo "#!/bin/sh" >/tuya/ssh_monitor.sh

Permiteți rularea fișierului serialgateway dându-i permisiunile necesare:

chmod 755 /tuya/serialgateway

Și reporniți gateway-ul:

reboot

Dacă primiți vreo eroare în timpul executării comenzilor de mai sus, accesați folderul /tuya/ și listați-i conținutul pentru a vă asigura că fișierul serialgateway a fost creat și dispune de permisiunile necesare.

confirmare fisier

Folosind modulul bellows al Python, verificați conexiunea încercând să identificați versiunea firmware-ului instalat în gateway (6.5.0.0):

bellows -d socket://[IP_GATEWAY]:8888 info

Apoi accesați bootloader-ul:

python3 bellows -d socket://[IP_GATEWAY]:8888 info

python3 - bellows

Descărcați scriptul de actualizare și noul firmware și salvați-le în același folder. Executați scriptul python de actualizare și răspundeți cu „UPGRADE” atunci când vi se va cere confirmarea.

actualizare firmware gateway

După actualizarea firmware-ului veți vedea următorul mesaj, iar gateway-ul va trebui repornit:

firmware gateway actualizat

Pot apărea probleme la executarea comenzii, caz în care va trebui să reporniți gateway-ul și să reîncărcați.

De asemenea, puteți încerca altă metodă: creați un script cu numele „firmware_upgrade.sh” și conținutul:

#!/bin/bash
GATEWAY_HOST="$1"
SSH_PORT="$2"
FIRMWARE_FILE="$4"
EZSP_VERSION="$3"
CONFIGURATION_FRAME="\x00\x42\x21\xA8\x53\xDD\x4F\x7E"

if [ $EZSP_VERSION = "V8" ]; then
  CONFIGURATION_FRAME="\x00\x42\x21\xA8\x5C\x2C\xA0\x7E"
fi

cat sx | ssh -p${SSH_PORT} root@${GATEWAY_HOST} "cat > /tmp/sx"
cat ${FIRMWARE_FILE} | ssh -p${SSH_PORT} root@${GATEWAY_HOST} "cat > /tmp/firmware.gbl"

ssh -p${SSH_PORT} root@${GATEWAY_HOST} "
chmod +x /tmp/sx
killall -q serialgateway
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb -ixon crtscts raw
echo -en '\x1A\xC0\x38\xBC\x7E' > /dev/ttyS1
echo -en '$CONFIGURATION_FRAME' > /dev/ttyS1
echo -en '\x81\x60\x59\x7E' > /dev/ttyS1
echo -en '\x7D\x31\x43\x21\x27\x55\x6E\x90\x7E' > /dev/ttyS1
stty -F /dev/ttyS1 115200 cs8 -cstopb -parenb -ixon -crtscts raw
echo -e '1' > /dev/ttyS1
/tmp/sx /tmp/firmware.gbl < /dev/ttyS1 > /dev/ttyS1
reboot
"

echo "Successfully flashed new EZSP firmware! The device will now reboot."

Permiteți rularea lui:

chmod +x ./firmware_upgrade.sh

Apoi executați-l indicând în comandă fișierul firmware-ului nou:

./firmware_upgrade.sh [IP_GATEWAY] 22 V7 NCP_UHW_MG1B232_678_PA0-PA1-PB11_PA5-PA4.gbl

La mine a funcționat prima metodă, după repornirea gateway-ului. Rețineți că actualizarea firmware-ului nu va fi posibilă dacă acesta nu este în modul bootloader.

Instalarea Zigbee Home Automation

Gestionare gateway-ului Lidl prin intermediul Home Assistant se face cu ajutorul integrării Zigbee Home Automation. Instalați-o din setări căutând după „zha„:

adaugare ntegrare zha

Indicând că este vorba de un dispozitiv cu care se poate comunica prin protocolul EZSP:

zha - ezsp - home assistant

Înainte de a putea adăuga primele dispozitive Zigbee, va mai trebui să indicați adresa IP a gateway-ului și parametrii conexiunii:

parametrii conexiun gateway

Când veți fi întrebați despre setările de rețea, alegeți prima opțiune, respectiv pastrarea celor actuale.

configurari retea gateway

Ajunși în acest punct, gateway-ul este pregătit pentru a putea fi utilizat cu Home Assistant.

gateway integrat home assistant

Pentru adăugarea dispozitivelor Zigbee accesați integrarea ZBA din Home Assistant » Configurare » Dispozitive și servicii » Zigbee Home Automations » Dispozitive » Adăugare dispozitiv.

adaugare dispozitive zigbee

Pentru început am adăugat doar șase dispozitive, iar pe unele dintre acestea le-am configurat în diverse automatizări simple pentru aprinderea și stingerea luminilor de veghe în funcție de diverși factori.

harta dispoztive zigbee

Intenția e să-l folosesc astfel câteva luni bune, timp suficient pentru a-i cunoaște toate slăbiciunile. Dacă se adeverește a fi un sistem fiabil, voi migra la Zigbee toate dispozitivele inteligente din casă.

Pentru înlocuirea firmware-ului și integrarea gateway-ului cu Home Assistant mi-au prins bine informațiile găsite aici, aici și aici. Aruncați o privire peste acestea dacă întâmpinați dificultăți urmând indicațiile mele.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.