Icono del sitio Home Assistant Fácil

Primeros pasos con Zigbee y Zigbee2MQTT

Básicos Zigbee y Home Assistant

Estoy seguro que te suena la frase anglosajona plug & play, allá por 1995 Microsoft lanzo Windows 95 que fue su primera versión compatible con esta funcionalidad. Como ves me he ido muy lejos, tan lejos como la primera versión de Zigbee que data del 2003. Además, te he dado una pista plug & play, nada es más fácil que añadir un dispositivo Zigbee a tu controlador Zigbee, en segundos lo incluyes en tu red y en segundos lo tienes operativo para poderlo añadir a tus escenas con el controlador domótico de tu elección.

En este artículo no voy a profundizar en el protocolo Zigbee, porque lo que me interesa es que tengas la visión de como se interactúa desde un punto de vista práctico con este protocolo (Zigbee) desde otro protocolo como MQTT.

Para ello nos vamos a apoyar en la pasarela zigbee2mqtt.

Esta pasarela es Open Source y muy básicamente traduce mensajes MQTT a comandos Zigbee.

Si has leído alguno de mis otros artículos sobre Tasmota o ESPHome, te darás cuenta de que sitúo al protocolo MQTT por delante de todos los demás, es un protocolo integrador, donde cabe todo y de todo. Prueba de ello es la cantidad de pasarelas MQTT (gateways) que han aparecido.

Existen pasarelas con el protocolo BLE (bluetooth), Lora, 433 MHz/315 MHz, protocolo Z-Wave, GSM o Zigbee, que básicamente integran tus dispositivos de cualquier protocolo con MQTT, controlándolos publicando mensajes.

Lógicamente, los dispositivos deben de ser compatibles, el personal de zigbee2mqtt sabe que cuántos más dispositivos existan, más se utilizara su plataforma. A día de hoy indican 2149 de 295 fabricantes distintos.

Mira este enlace de la web de zigbe2mqtt por si quieres más información.

Sin más introducción, disfruta del artículo.

¿Qué es Zigbee?

Zigbee es un protocolo que se utiliza para vincular dispositivos inteligentes como luces, enchufes y cerraduras a una red doméstica.

Pero no todo es idílico, Zigbee no es un protocolo Open Source, existe una organización Connectivity Standards Alliance (antes Zigbee Alliance) que vela por el estándar Zigbee de la cual debes de ser miembro para poder certificar tus productos.

Hasta aquí todo aceptable, el problema sucede cuando los fabricantes de dispositivos añaden capas propietarias a sus dispositivos, es decir, código fuera del estándar, provocando (solo es un ejemplo) que los dispositivos de un fabricante como IKEA no sean compatibles con el controlador de AQARA y viceversa, ya que sus dispositivos solo saben comunicarse con sus propios controladores Zigbee.

Resumiendo:

Mucho cuidado con lo que compras, procura verificar antes su compatibilidad, puede encontrar sorpresas.

Características sobre Zigbee

¿Cómo funciona Zigbee?

Cada dispositivo tiene un transmisor que utiliza la frecuencia 2.4 GHz para comunicarse entre ellos en una distancia entre 10 y 20 metros en interiores, es poco, pero gracias a esto tiene un muy bajo consumo, que es clave en el despegue que ha tenido este protocolo en los 2 últimos años.

Los dispositivos Zigbee pueden comunicarse entre ellos. Incluso pueden repetir o enrutar una comunicación enviándola a otro dispositivo, esto hace que puedan existir varios caminos alternativos para llegar a un dispositivo, es la esencia de una red en malla.

¿Qué es una red en malla?

Una red en malla es una red donde uno o varios dispositivos pueden actuar como repetidores o enrutadores, si lo piensas un poco te darás cuenta que al repetir la señal pueden alcanzar distancias más largas que los rangos por defecto que tiene, que son entre 10 y 20 metros. Es poco, pero con el uso de repetidores/enrutadores puedes aumentar esa distancia. Esto es un dato importante, no debe de asustarte la distancia.

Al existir dispositivos Zigbee que enrutan tráfico dentro de la red tipo malla implica que estos dispositivos actualizan de una manera dinámica su tabla de rutas, aportando robustez y eficiencia, puede haber más de un camino para llegar de un nodo a otro. Por otro lado, tú, como usuario, no puedes indicar que dispositivo se conecta con otro de una manera implícita, es la propia red tipo malla quien se encarga de esta tarea.

Es verdad que podemos interactuar a bajo nivel con los dispositivos Zigbee, pero no mucho más allá del comando tipo: actualiza a tus vecinos (actualiza tu tabla de rutas) o reiníciate, redescubrir dispositivo, etc.

Desde la consola de zigbee2mqtt existen opciones para leer y escribir atributos a vuestros dispositivos

¿Qué hay en una red Zigbee?

Llegados a este punto, es el momento en el que todas las piezas empiecen a encajar, ya verás.

En esta imagen puedes ver la estructura de la red tipo malla que te explico más adelante

En la estructura de una red Zigbee existen 3 tipos de roles para cada dispositivo

Ejemplo con Zigbee y Zigbee2MQTT

Para ver este ejemplo voy a montar un pequeño laboratorio en una Raspberry Pi 3+ y para facilitarme el montaje voy a echar mano de Docker y Docker-compose. Repito es un laboratorio, aunque os voy a indicar paso a paso como hacerlo, no lo voy a explicar en detalle, no es la finalidad de este artículo.

Lo verdaderamente importante es que veas como podemos interactuar con el protocolo Zigbee con zibee2mqtt, añadir dispositivos y manejarlos

Para este laboratorio vamos a montar sobre una RPI 3+:

Pero si eres un echao o echada pa lante, sígueme.

Hardware necesario

Paso 1. Descarga e instalación del sistema operativo para RPI 3+

Paso 2 Instalación docker

Estado del servicio Docker

Pertenencia al grupo docker

Paso 3. Instalación docker-compose

Ejemplo:

Ya lo tienes, todo preparado para instalar MQTT y zigbee2mqtt

Paso 4. Instalación de MQTT

Te debe de aparece en estado UP

Te debe de aparecer algo asi

Ahora vas a conectarte desde dos sesiones diferentes a tu RPI, para ver las pantallas simultáneamente voy a utilizar iTerm2 para MAC, si utilizas Windows Mobaterm es muy buena elección y si eres usuario de Linux TMUX debe de ser tu elección.

En uno de los terminales subscríbete a todos los mensajes, cuando lo ejecutes, el programa mosquitto_sub se queda a la espera de mensajes.

En el otro terminal publica un mensaje.

Automáticamente, aparece el mensaje en el primer terminal.

Paso 5. Instalación zigbee2mqtt

Modificamos el fichero para adecuarlo a nuestra instalación

Y añadimos la parte del servicio zigbee2mqtt

Comprobamos la sintaxis y si todo va bien arrancamos el servicio zigbee2mqtt

Ya tienes todo el tinglado montado:

Ahora vamos a salirnos fuera del terminal y vas a configurar un entorno web para poder interactuar con zigbee2mqtt, añadiendo dispositivos a tu red zigbee

Paso 6. Instalación entorno FrontEnd: la consola zigbee2mqtt

Para y arranca el servicio zigbee2mqtt

Y vuelve a lanzar el comando para visualizar los LOGs en tiempo real, este comando déjalo activo siempre porque volveremos una y otra vez.

En la salida del comando anterior busca esta línea, que te indica que la parte frontend de zigbee2mqtt está levantada y a la escucha.

Has llegado al punto donde podemos añadir dispositivos a nuestro entorno para interactuar con ellos, que es la idea de este articulo. Voy a trabajar con dos dispositivos, uno que solo envía mensajes SONOFF SNZB-03 (sensor de movimiento) y otro que envía y recibe SONOFF BASICZBR3 (conmutador)

Paso 6. Añadir dispositivos

El añadir dispositivos es muy simple y rápido, esta es la secuencia:

Añadir dispositivo SONOFF SNZB-03

Este dispositivo es un detector de presencia. Pocas cosas en domótica son tan sencilla como añadir un dispositivo a un entorno Zigbee.

Abre el SNZB-03 para quitar el papelito que aísla la pila para que no consuma y ciérralo

Verás que por un lateral tiene un pequeño orificio, con un clip o similar presiónalo durante 5 segundos, el LED que lleva debe de parpadear tres veces. Y ya está.

Vista LOGs zigbee2mqtt

Vista FrontEnd

Además, en el fichero configuratio.yaml de Zigbee también se ha añadido el dispositivo descubierto

Vista LOGs

Vista desde MQTT Explorer

Añadir dispositivo SONOFF BASICZBR3

Este dispositivo es un conmutador, que admite lectura y escritura de comandos /get y /set y algunos más como verás a continuación.

Para emparejarlo, como este dispositivo no tiene batería, debes de conectarlo a la red eléctrica, para ello debes de abrirlo, aflojar los tornillos y conectar los cables.

Importante no confundir la entrada Line IN de la salida Line OUT del conmutador, en Line IN conectará los cables que van a tu red eléctrica y en el conector Line OUT la bombilla, lámpara, o el aparato que hayas decidido encender/apagar.

Una vez conectado los cables, conéctalo a cualquier enchufe de casa y pulsa durante más de 5 segundos el botón del conmutador que está en la parte superior del dispositivo. El relé conmuta varias veces. Y ya está.

Vista de los LOGs

También en la consola aparece este nuevo dispositivo.

Voy a aprovechar para personalizar los nombres de ambos dispositivos, lo puedes hacer desde los botones azules a la derecha de los dispositivos. Así aparecerán con estos nombres tanto en MQTT-Explorer como el LOG de zigbee2mqtt

Todo lo que hemos realizado hasta ahora es para llegar a este momento, el momento en el cual podemos interactuar con nuestros dispuestos a través de mensajes MQTT que nuestra pasarela zigbee2mqtt traduce para que el dispositivo Zigbee nos obedezca.

Si abres la página de este dispositivo en zigbee2mqtt ves que expone dos tipos de datos.

Datos expuestos:

Hemos llegado al punto deseado y principal motivo del artículo, has añadido dispositivos y vamos a interactuar con ellos, cuya operativa es similar a los otros 2000 dispositivos compatibles, es decir, aprendido uno, aprendido todos.

Abre el terminal para conectarte a tu RPI y vas a comprobarlo tu mismo. Mantén dos sesiones simultáneas, para así ver en tiempo real la ejecución de los comandos y su resultado.

Comandos:

Y su resultado:

En el dispositivo se encenderá un LED rojo cada vez que pases por el estado ON

También la consola de zigbe2mqtt te permite dibujar mapas de conexión, indicando aparte la calidad de la conexión (255), el rol que cumple cada dispositivo. Los mapas están muy bien, aunque cuando tienes muchos dispositivos se puede convertir en una telaraña de conexiones.

Conclusión sobre Zigbee y Zigbee2MQTT

Al margen de la dificultad que puede implicar montar el laboratorio, pero que si tienes algún conocimiento sobre plataformas Docker y unas horas de haber trasteado con una RPI, no te va a resultar nada complejo, te he mostrado de una manera práctica como añadir dispositivos e interactuar con ellos.

La red tipo malla que soporta el protocolo Zigbee es robusta y efectiva. El precio de los dispositivos es muy bajo (10-20 €) y su consumo eléctrico es muy bajo (batería/pilas duran 6 meses – 1 año).

Es verdad que solo con zigbee2mqtt no puedes crear automatizaciones o escenas, por el simple hecho que no es su cometido, para poner la guinda en el pastel necesitaras de Home Assistant, OpenHAB o Jeedom aunque te vale cualquier plataforma que sepa trabajar con un broker MQTT. Así de simple.

Zigbee2mqtt tiene más de 2000 dispositivos compatibles, y has visto lo fácil que es añadir dispositivos, pero ojo tiene mucha miga, la consola tiene muchas opciones que su investigación podría ser tu siguiente paso.

Por último, quédate con esta palabra MATTER, es un protocolo, pero lo importante es lo que está detrás, fabricantes, desarrolladores y vendedores, todos de la mano para estandarizar la conectividad entre dispositivos y controladores. No digo más que luego todo se sabe.

Me ha encantado hacer este artículo, espero lo disfrutes igualmente.

Gracias a Depositphotos por la cesión de las imágenes.

Salir de la versión móvil