Modificar e integrar Gateway Zigbee SilverCrest (LIDL) en Home Assistant

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 :