Hace unos días compre un Gateway Zigbee SilverCrest vendido por Lidl por unos 15€ ( lo podéis encontrar aquí ) para tenerlo como backup del Gateway zigbee que tengo actualmente , para poder integrarlo en Home Assistant tendremos que modificarlo , extraer la clave de root y cambiarle el firmware
El equipo para el precio que tiene viene exquisitamente embalado

En el interior nos encontramos con el Gateway , un adaptador de 220 a 5V USB , un cable USB a micro USB y un cable ethernet plano

Abriremos el equipo con cuidado desde la parte inferior hasta liberar la tapa de las ocho grapas que sujetan ambas caras

Una vez abierto , extraemos la placa soltando dos grapas laterales de plástico

En la parte trasera de la placa podemos serigrafiadas las señas procedentes de la uart donde nos conectaremos

Para mayor comodidad soldaremos una ristra de cuatro pines empezado a contar desde el centro de la placa hacia el exterior

Conectaremos a la ristra de pines nuestro adaptador teniendo en cuenta que RX y TX van cruzados y que la alimentación es de 3,3Vdc

Así quedarían conectadas las señales de nuestro adaptados 232 TTL

Mediante Hyperterminal , Putty o cualquier otro programa similar crearemos una sesión con los siguientes datos de comunicación , Velocidad 38400 , 8 bits de datos , 1 bit de stop , sin paridad y sin control de flujo.
Ahora viene el tema divertido , sin alimentar previamente daremos alimentación al adaptador USB , pulsaremos conectar en la pantalla de hyperterminal , y pulsaremos repetidamente la tecla ESC , deberíamos ver el mensaje “Escape booting by user” , si no somos lo suficientemente rápidos veremos en la pantalla todo el log de inicialización y luego los mensajes de “Sendig discover” , yo tuve que repetirlo unas cinco veces ya que estos tres pasos hay que hacerlos en menos de un segundo aproximadamente.
Una vez que esta en modo de arranque por usuario , introduciremos estos dos comandos
FLR 80000000 401802 16 DW 80000000 4

Anotaremos toda la linea que nos devuelve el comando
Ahora introduciremos estos dos comandos
FLR 80000000 402002 32 DW 80000000 8

Anotaremos las dos líneas que nos da como respuesta a la lectura de la memoria flash
Decodificando la contraseña de root
Descargaremos este fichero y extraeremos el fichero lidl_auskey_decode.py
Al ejecutarlo nos pedirá una a una las tres líneas que hemos guardado previamente , nos devolverá la clave de encriptación y la contraseña del usuario root que apuntaremos bien ya que la usaremos varias veces posteriormente

Ahora conectaremos el gateway a nuestra red , localizaremos la ip que le ha asignado nuestro router y entraremos vía SSH a través del puerto 2333 con usuario root y la contraseña previamente extraída y ejecutaremos el siguiente comando comando

Una vez dentro ejecutaremos este comando y al acabar nos volveremos a conectar por SSH pero por el puerto 22 en lugar del 2333
if [ ! -f /tuya/ssh_monitor.original.sh ]; then cp /tuya/ssh_monitor.sh /tuya/ssh_monitor.original.sh; fi echo "#!/bin/sh" >/tuya/ssh_monitor.sh reboot

Descargaremos este fichero
Desde una maquina con Linux ( yo use la misma maquina donde tengo home assistant y el resto de dockers ) subiremos el fichero con este comando
cat serialgateway.bin | ssh root@[gateway_ip] "cat >/tuya/serialgateway"

Entraremos en el Gateway y ejecutaremos este comando
if [ ! -f /tuya/tuya_start.original.sh ]; then cp /tuya/tuya_start.sh /tuya/tuya_start.original.sh; fi cat >/tuya/tuya_start.sh <<EOF #!/bin/sh /tuya/serialgateway & EOF chmod 755 /tuya/serialgateway reboot

Descargaremos y descomprimiremos estos ficheros
Nos aseguraremos que el scritp sea ejecutable con chmod +x ./firmware_upgrade.sh
Ejecutaremos el siguiente comando
./firmware_upgrade.sh [gateway_ip] 22 V7 NCP_UHW_MG1B232_678_PA0-PA1-PB11_PA5-PA4.gbl
Durante la ejecución nos pedirá la contraseña del root varias veces
Empezara a enviar los ficheros

Y al acabar nos deberemos reiniciar el Gateway

Integración con zigbee2mqtt
En la pagina de Zigbee2mqtt aparecen inventos para montarlo sobre ser2net y otras cosas diferentes , pero realmente es mucho mas sencillo , basta con configurarlo como puerto TCP y poner el puerto 8888 como el puerto de comunicación en el fichero configuration.yaml de nuestro zigbee2mqtt
serial: # port: /dev/ttyACM0 adapter: ezsp port: tcp://192.168.1.243:8888
Nada mas arrancarlo veremos en los logs como ya esta funcionando a la perfección

Con esto y un bizcocho ………….
Enlaces de interes :