
En esta entrada voy a explicar cómo configurar un bridge ZB-GW03, que contiene un ESP32, wifi, ethernet 10/100Mb y módulo Zigbee ZYZBP008 (SM-011), para conectarlo a Home Assistant a través de ZHA o de Zigbee2MQTT, de forma que podamos instalar el dispositivo en el punto de la vivienda adecuado para dar la mejor cobertura de radio posible y mantener el software en el servidor. Así tendremos centralizado todo el sistema para favorecer los backups y restauraciones, especialmente en el caso de Zigbee2MQTT, evitando tener una Raspberry PI o similar junto a un dongle USB Zigbee descentralizada, como tenía yo hasta ahora.
El dispositivo ZB-GW03 debe de estar flasheado con la última versión de Tasmota32 para Ewelink, que a fecha de creación de esta entrada, era la versión 12.2.0.
Recomiendo la adquisición del módulo con este firmware ya flasheado (en Aliexpress hay vendedores donde ya venden el módulo flasheado con Tasmota), ya que para hacerlo desde el firmware original, hay que realizar unos pasos previos donde es necesario desmontar el dispositivo, realizar unas soldaduras y conectar un convertidor USB/Serial TTL 3.3v.
En caso que venga con el firmware original de Ewelink, debemos flashearlo con la versión no oficial de Tasmota Zbbridge para ESP32, para ello debemos seguir las instrucciones de flasheo de la entrada titulada «Como flashear el ZB-GW03 con Tasmota» de este mismo Blog.
Esquema eléctrico del ZB-GW03

Como se puede apreciar, observando el esquema, los pines de interconexión entre el ESP32 y el módulo zigbee ZYZBP008 son los siguientes:

Y esta tabla la vamos a utilizar para configurar correctamente el firmware de Tasmota del bridge más adelante.
Configuración Tasmota
Conexión a red
Una vez conectado el dispositivo, bien por ethernet o a través de wifi, en este caso el propio Tasmota generará un modo AP con una ESSID sin encriptar, a la cual tendremos que conectarnos, accedemos a su IP mediante el navegador web y obtenemos una página similar a ésta:

Crear Template Zigbee
Lo primero que vamos a hacer es añadir un Template tecleando lo siguiente dentro de la Consola de Tasmota. Para ello debemos acceder desde el Main Menu -> Consoles -> Console e introduciremos lo siguiente (sin comillas) donde indica «Enter command»:
‘backlog Template {«NAME»:»ZB-GW03-V1.3″,»GPIO»:[0,0,3552,0,3584,0,0,0,5793,5792,320,544,5536,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,608,640,32,0,0,0,0,0],»FLAG»:0,»BASE»:1} ; module 0’
Una vez hecho esto, el módulo se reinicia y a partir de este momento, tendremos conexión ethernet y obtendremos una IP por DHCP.
El módulo tendrá doble conectividad de red, una por cable (ethernet) y la otra por wifi, que es la que se configuró inicialmente y que posteriormente desactivaremos, para que sea únicamente conexión cableada.
EmberZNet NCP EZSP Firmware
Una vez llegados a este punto, debemos actualizar el firmware del módulo Zigbee, para ello seleccionamos Firmware Upgrade e introducimos el firmware que podemos descargar aquí:

Pichamos en Start upgrade y esperamos a que termine el proceso y se reinicie Tasmota.
El firmware de Tasmota instalado en el módulo Zigbee nos permite tener una versión estable compatible con el protocolo EZSP v8, el cual usaremos para Zigbee2MQTT.
Broker MQTT
Por un lado, hay que configurar el Broker MQTT, para ello accedemos a Configuration – > Configure MQTT y tendremos la siguiente pantalla:

donde introduciremos la IP o url del broker en HOST() y el user&pass si lo tenemos securizado con credenciales. El resto vale por defecto, salimos con Save.
Crear Template para Zigbee2MQTT
Una vez que ya hemos actualizado el módulo Zigbee con el firmware EZSP, vamos a crear el Template definitivo donde conectaremos los pines de TX y RX del módulo al servidor TCP que necesita Zigbee2MQTT para emular un puerto serie.
De forma similar a la vez anterior, añadimos un Template tecleando lo siguiente dentro de la Consola de Tasmota. Para ello debemos acceder desde el Main Menu -> Consoles -> Console e introduciremos lo siguiente (sin comillas) donde indica «Enter command»:
backlog template {«NAME»:»Zigbee2MQTT-bridge»,»GPIO»:[0,0,5472,0,5504,0,0,0,5793,5792,320,544,5536,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,608,640,32,0,0,0,0,0],»FLAG»:0,»BASE»:1} ; module 0
Como se puede observar, el cambio del mapeo con el template anterior está en la tercera y quinta posición, que en este caso, apuntará a TCP Tx y TCP Rx como se ha comentado anteriormente.
Una vez hecho esto, el módulo se reinicia de nuevo y seguimos con conexión ethernet y obtendremos una IP por DHCP.
Ahora tenemos que activar el servidor de socket para que actúe el brigde como servidor TCP en el puerto que queramos y pueda conectarse Zigbee2MQTT y reconocer el módulo. Para ello debemos ir a la consola de Tasmota, accediendo desde el Main Menu -> Consoles -> Console e introduciremos los siguientes (sin comillas) comandos, donde indica «Enter command»:
‘rule1 on system#boot do TCPStart 8888 endon’ y pulsamos ENTER
‘rule1 on‘ y pulsamos ENTER
Con esto lo que hacemos es crear la regla 1 indicando que al iniciar el sistema, arranque el servidor de socket TPC en el puerto 8888 (este número puerto podemos poner otro, pero debe ser coherente con lo que pongamos después en Zigbe2MQTT) y después se indica que se active la regla (rule1 on).
Una vez que tengamos el sistema funcionando, si vamos a utilizar la conexión ethernet, debemos desactivar el wifi al arrancar ya que es una fuente de interferencias para Zigbee, y lo podremos hacer con el siguiente comando:
‘rule2 on system#boot do Wifi 0 endon’ y pulsamos ENTER
‘ rule2 on’ y pulsamos ENTER
Debemos reiniciar el módulo para que se activen ambas reglas.
Con esto ya quedaría configurado el Bridge como servidor de socket TCP en el puerto 8888 de su IP de la conexión serie del módulo Zigbee integrado, por lo que sólo quedaría instalar y configurar correctamente Zigbee2MQTT para indicarle cual es su puerto serie y protocolo a usar.
Configuración de Zigbee2MQTT
Nos vamos a la instalación de Zigbee2MQTT y editamos el fichero configuration.yaml que está ubicado en /docket/data del servidor Docker (en caso de que la instalación esté hecha en Docker) y dentro del apartado serial, quitamos el puerto que tuviera anteriormente y ponemos lo siguiente:
serial:
port: tcp://IP_del_bridge_tasmota:8888
adapter: ezsp
Esto último es importante indicarlo ya que éste es el protocolo del módulo ZYZBP008 que tiene instalado el bridge.
Reiniciamos Zigbee2MQTT y debería de encontrar el bridge zibgee y a partir de aquí, hay que ir asociando los dispositivos de la misma forma que se ha hecho siempre, cuando teníamos el dongle USB 3.0 por ejemplo.