Llevo ya unos cuantos artículos hablando sobre mi sistema de domótica, y hasta ahora he omitido uno de los puntos centrales del mismo: el concentrador zigbee. Mi sistema de domótica es algo sui generis, ya que es un compendio de distintas piezas que he ido amalgamando con el paso del tiempo. El punto central del mismo es el estupendo software Home Assistant, junto con un servidor MQTT. Sobre este núcleo he ido añadiendo diversos dispositivos, empezando por hardware basado en NodeMCU programados por mí mismo. Empecé con ello en 2016, en Irlanda, pero realicé algunos proyectos preliminares aún antes, pero completamente desacoplados. Pero todo lo hecho ha tenido como hilo común el experimentar con diversas tecnologías.
Como parte de ese proceso de experimentación acabé introduciendo dispositivos Zigbee. Son unos elementos interesantes, y la tecnología en la que se basan ha tenido gran difusión en el ámbito de la domótica doméstica. Para transmitir la señal se basan el frecuencia de 2’4GHz, lo que provoca que en entornos saturados de redes WiFi y Bluetooth estemos añadiendo más elementos que pueden provocar perturbaciones. Sin embargo, no es ese su gran problema. El gran problema que tienen es que estos dispositivos necesitan de un aparato que realice las veces de concentrador de señales, actuando como pasarela entre los dispositivos en sí y el software de control que nos permite interactuar con ellos. Y si este concentrador fuera genérico, no sería demasiado malo, pero cada fabricante requiere que uses el suyo y nada más que el suyo, lo que implica que no es posible mezclar, por ejemplo, luces del sistema TRÅDFRI de Ikea con sensores de temperatura Xiaomi, o interruptores Silvercrest de Lidl, a menos que quieras tener que usar tres concentradores y tres aplicaciones distintas para cada componente. Un verdadero rollo.
Y es aquí donde entra nuestro amigo el software libre. Existe un magnífico proyecto de desarrollo de un concentrador multifabricante que permite precisamente eso: utilizar un solo concentrador abierto para gestionar dispositivos de diversos fabricantes. Ese es el proyecto zigbee2mqtt. La idea de partida es sencilla: escuchar las señales Zigbee de los diversos dispositivos, procesarlas, e inyectarlas en un servidor MQTT para poder ser utilizadas posteriormente como mejor convenga a tus intereses. Sencilla, pero brillante. Y en mi caso, dado que ya disponía de un Home Assistant configurado y mi servidor MQTT, algo que me venía como anillo al dedo.
Sin embargo, hasta ahora he hablado sólo de sofware, y para construir un concentrador que reciba señales físicas es preciso de algo de hierro. El hardware esencial es el adaptador Zigbee que recibe las señales de los dispositivos. En mi caso hago uso de un adaptador CC2531, que se conecta por USB. Es preciso programarlo con un firmware que en la propia página de zigbee2mqtt se encargan de proporcionar. Y además de eso, hace falta un dispositivo linux donde instalarlo. La respuesta más obvia es una Raspberry Pi, pero hay otras alternativas:
Una vez determinada qué opción para componer el concentrador, el resto es sencillo: ya hemos hablado del primer paso, que es cargar el firmware en el CC2531. El segundo es desplegar el software zigbee2mqtt en el concentrador. El proceso es bastante sencillo, ya que se trada de una aplicación Node.jsm y se instala tan sólo haciendo uso de un comando npm, una vez preparado el entorno para que pueda ejecutar este tipo de aplicaciones.
Por último, para tener el concentrador listo, hay que integrarlo con un servidor MQTT, que se hace mediante un fichero de configuración. Y a partir de ahí, tan sólo es cuestión de sacarle partido. Y es aquí donde entra de nuevo Home Assistant: zigbee2mqtt tiene una integración excelente con este sistema de domótica, siendo posible integrarlo con Home Assistant, y hacer que el proceso de descubrimiento en éste de los dispositivos registrados en zigbee2mqtt sea automático.
Pero he dejado lo mejor de todo para el final. Comentaba que el problema de utilizar concentradores de fabricante es que cada uno soporta solo y exclusivamente sus propios dispositivos. ¿Cuántos dispositivos soporta zigbee2mqtt? Literalmente cientos. A día de hoy, 1217 dispositivos de 189 fabricantes distintos. Y es una lista que no para de crecer. Hace algunas semanas han sido añadidos los Silvercrest de Lidl de los que escribí recientemente, solucionando el problema de que el botón físico de los interruptores no era reconocido dentro de las acciones: ahora sí lo reconoce.
¿Qué cuál es mi configuración? Bueno, a día de hoy es pelín compleja, pero tiene su gracia. Estrictamente hablando, hago uso de dos concentradores zigbee2mqtt, uno en Santiponce, y otro en Forcarey, que reportan a mi servidor MQTT, ubicado en Santiponce. Y manejo los dispositivos desde un único Home Assistant, también ubicado en Sevilla. Cada zigbee2mqtt escribe en el servidor MQTT bajo un topic diferenciado, ya que la cantidad de dispositivos es pelín larga ya. En Santiponce hago uso de:
…y en el caso de Forcarey:
No está mal, ¿no?
Etiquetas: aldi, aqara, aqara cube, arduino, asus tinker board, debian, domótica, home assistant, ikea, lidl, mqtt, nodemcu, orange pi zero, proxmox, raspberry pi, zigbee, zigbee2mqtt
Hace algunas semanas el supermercado Lidl sacó una gama de dispositivos de control domótico bajo su marca Silvercrest. . El esquema de conexión es el habitual de estos dispositivos: constan de un gateway zigbee que permite interactuar con él desde el teléfono móvil, a través de una plataforma propietaria, y controlar los distintos dispositivos desplegados en el hogar.
Lo interesante de este sistema es que, aparte de los dispositivos normales como control de enchufes y luces, dispone de algunos añadidos no tan comunes un calefactor cerámico. Así que no podía dejar de probar si podrían funcionar en mi sistema de domótica basado en zigbee2mqtt. Y, en efecto, funcionan, aunque hay que pelearse un poco con ellos. En mi caso estoy haciendo uso de ellos en el sistema de domótica delegado que tengo montado en Forcarey. Estoy utilizando mi misma plataforma Home Assistant desplegada en Santiponce, pero tengo un receptor zigbee separado, montado con una Orange Pi Zero que tenía sin usar, ubicada en Forcarey. Este receptor separado vuelca los datos en mi servidor MQTT bajo un topic distinto, y a correr.
Bueno, en realidad no ha sido tan sencillo. El primer problema es que estos dispositivos, en la fecha en que escribo esto, aún no están incorporados como dispositivos propios en la lista de dispositivos reconocidos por zigbee2mqtt. No es demasiado problemático, porque al parecer Lidl está vendiendo bajo su marca dispositivos TuYa, que sí son reconocidos. Eso sí, para que los reconozca es imprescindible tener zigbee2mqtt actualizado a su última versión. Otro punto ha sido que los dispositivos dan algo de guerra al negociar la conexión a la red, incluso ya reconocidos. En mi caso, para que terminaran la fase de interview correctamente, tuve que añadir un cable extensor USB para separar el receptor de la Orange Pi Zero. Y el tercer punto complicado es que estos dispositivos son Zigbee 3.0, y para que el sistema sea estable, es necesario utilizar el firmware del receptor zigbee con capacidades de enrutado, en vez del normal.
Con todo esto en pie, los dispositivos funcionan correctamente, tanto la luz de colores regulable como los interruptores de pared, que son con los que he experimentado. El único punto ligeramente molesto en que con estos últimos el pulsador manual no genera eventos, por lo que el uso del mismo no se registra en el sistema de domótica. Pero es algo con lo que puedo vivir.
Etiquetas: home assistant, lidl, mqtt, orange pi zero, silvercrest, zigbee, zigbee2mqtt