Vamos a configurar un receptor Zigbee CC2531 en Home Assistant para poder controlar dispositivos domóticos Zigbee desde nuestro sistema domótico sin pasar por un sistema de terceros.
¿Qué es Zigbee?
Los primeros sensores domóticos a la venta para el gran público llegaron con tecnologías ya conocidas cómo Wifi y/o Bluetooth, pero según crece el número de dispositivos en una red, y dado que los routers domésticos no están pensados para soportar un elevado número de clientes, resulta imperativo buscar una alternativa.
Así surge Zigbee, al igual que otras alternativas cómo Z-Wave, cómo un protocolo nuevo de comunicación enfocado a la domótica. Zigbee en si mismo es un conjunto de protocolos de bajo consumo, fácil de implementar y con una topología en malla. Veremos que esto último es importante a la hora de elegir cual de los dos métodos queremos flashear.
Alrededor de Zigbee y en base a esta tecnología nace la Zigbee Alliance, una asociación de empresas del sector tecnológico de la talla de Amazon, Google, Ikea, Huawei, Xiaomi, Tuya, etc. que apuestan por emplear esta tecnología para sus productos; razón por la cual cada vez se ven más soluciones domóticas que emplean Zigbee en lugar de Wifi o Bluetooth.
¿Qué vamos a hacer y qué no?
Resulta imperativo recalcar esto; muchas empresas (cómo Tuya, Sonoff, Ikea, etc.) venden dispositivos Zigbee (sensores de temperatura, contacto, movimiento, bombillas, etc.) y, además, venden controladores Zigbee. Esto es, un dispositivo adicional que se conecta a la red y permite a sus clientes controlar los anteriores dispositivos (ya que no podemos conectarnos a un dispositivo Zigbee directamente desde nuestro móvil por ejemplo).
Nosotros NO queremos eso, ya que implica usar un dispositivo de terceros que se conectará a nuestra red y toda la información de los sensores domóticos pasará por la nube de una empresa, escapando a nuestro control.
El siguiente es un ejemplo de un “"”router””” propietario de Tuya:
Nosotros vamos a “"”crear””” nuestro propio router, solo que el dispositivo que actuará como router ya lo tenemos; es el dispositivo dónde ejecutamos Home Assistant; lo único que estamos haciendo aquí es añadir un adaptador Zigbee al mismo.
Lista de componentes
- Nuestro sistema domótico Home Assistant instalado en una Raspberry Pi, Intel NUC o similar.
- Un coordinador Zigbee CC2531 con o sin antena (existen otras versiones pero vamos a decantarnos por esta).
- Un programador/flasheador CC Debugger para programar el coordinador.
- Un sensor Zigbee del tipo que sea; en este caso, un sensor de contacto para puertas/ventanas.
- Nuestro ordenador de trabajo con conexión a internet.
- Aproximadamente una hora de tiempo libre.
“PATROCINADO - Prueba los productos de Proton Privacy para proteger tu privacidad y seguridad y estarás contribuyendo al desarrollo de este sitio web sin ningún costo adicional - Proton Mail - Proton Drive - Proton Pass - Proton VPN”
Flashear; dos opciones
Vamos a flashear el CC2531. Existen otros receptores, cómo el CC2530, CC291, etc. pero para esta guía nos vamos a decantar con el CC2531 que sigue siendo el más barato (aunque el de menor alcance).
Ahora bien, este dispositivo necesita que carguemos el firmware adecuado para funcionar, para lo cual necesitamos un CC Debugger, un dispositivo específico para programar esta clase de dispositivos.
No nos confundamos, aunque tenga una interfaz USB, esta NO sirve para programar el dispositivo sino para suministrar corriente a este una vez lo hayamos configurado. El CC Debugger es OBLIGATORIO.
Ahora que tenemos todo listo a nivel de hardware, necesitamos preparar el software. Por un lado necesitamos los drivers correctos para la conexión del dispositivo y el programa necesario para el flasheo y por otro, tenemos que elegir cual de los dos firmwares vamos a cargar en el CC2531. Empezamos por los drivers.
El CC Debugger hace uso de los drivers de su fabricante Texas Instruments, que podemos encontrar en ESTE link. Instalar y listo.
De la misma forma, necesitamos el programa que provee Texas Instrument para realizar el proceso, que podemos encontrar AQUÍ. Nos descargamos la versión 1.12.8, NO la que se llama SmartRF Flash Programmer v2. OJO con eso. Nuevamente, aceptar e instalar.
OJO, descargar este software REQUIERE de una cuenta gratuita en Texas Instruments, aceptar los acuerdos pertinentes, correo electrónico, nombre, etc y verificar la dirección de correo. Es posible que el proceso de registro nos pida especificar si el uso que vamos a hacer del software es civil o militar, es perfectamente normal.
Por último, vamos a elegir el firmware adecuado y aquí tenemos DOS opciones:
- Default: ideal para redes pequeñas de unos pocos dispositivos (aquí vamos a usar este).
- Source routing: ideal para redes grandes, hablamos de alrededor de 20 dispositivos en una casa lo suficientemente grande.
Descargamos el .zip correspondiente desde ESTE link (si consultamos el resto del repositorio podemos ver que hay más coordinadores distintos cada uno con su firmware correspondiente).
En mi caso descargo el CC2531_DEFAULT; una vez descargado descomprimimos el .zip y debemos tener lo siguiente ya listo:
Flasheando que es gerundio
Vamos a empezar por lo más simple, instalar los drivers necesarios para el CC Debugger. Dentro de la carpeta CC Debugger Firmware disponemos de un .exe llamado Setup_SmartRF_Drivers-1.2.0 que no tiene ningún misterio, simplemente lo ejecutamos, aceptamos y damos en Siguiente hasta finalizar.
Vamos a «montar» el CC Debugger junto al CC2531 y verificar que los drivers se han instalado y por tanto funciona. Para ello disponemos primero el adaptador y el CC2531 de forma que el puerto USB del coordinador mira a la derecha:
Conectamos con cuidado de forma que el cable del adaptador, que tiene una marca roja, queda a la izquierda mientras que el puerto USB está a la derecha.
La conexión del adaptador con el CC Debugger no presenta mayor misterio porque sólo hay una forma posible de conectarlo; una vez todo conectado, vamos a conectar SÓLO el CC Debugger al ordenador. De nuevo SÓLO el CC Debugger con su cable microUSB a USB.
Abrimos el «Administrador de Dispositivos de Windows» y deberíamos ver lo siguiente:
Esto verifica que los drivers se han instalado correctamente. La luz del CC Debugger se habrá encendido, pero no nos preocupemos ahora mismo si está en verde o en rojo, no es relevante ahora. Desconectamos el CC Debugger y pasamos al siguiente paso.
Siguiente paso: instalar el software de Texas Instrument para el flasheo. Abrimos la carpeta de flash-programmer-1.12.8 y ejecutamos el fichero Setup_SmartRF_Flash_Programmer-1.12.8.exe. Nuevamente, seguimos las instrucciones, seleccionamos donde queremos instalarlo y damos a Siguiente hasta completar. Al acabar, ejecutamos el programa y veremos algo así:
Ahora si, vamos a conectar (en este orden) primero el CC2531 a un puerto USB del ordenador y seguidamente, el CC Debugger a otro puerto del ordenador. Cuando ambos dispositivos estén conectados, el led del CC Debugger debe encenderse en verde.
¿Y si se enciende en rojo?, pulsamos el botón de Reset del dispositivo hasta que se encienda en verde; si aún así no funciona, es posible que los drivers no estén bien instalados, que la conexión de los cables no sea correcta o (en el peor de los casos) que tengamos un dispositivo defectuoso.
Descomprimimos el .zip del firmware a flashear y disponemos de dos ficheros, un .bin y un .hex. SÓLO queremos el .HEX!!! Vamos seguidamente a la interfaz del programador y tenemos que seleccionar lo siguiente:
Nos aseguramos de lo siguiente (de arriba a abajo):
- ¿What do you want to program? –> «Program CCxxx SoC or MSP430» y nos quedamos en la pestaña «System-on-Chip» no en «MSP430».
- En la ventana del medio debe aparecer (cómo se ve aquí en azul) el CC Debugger conectado así cómo el CC2531 bajo el campo «Chip type».
- Interface –> Seleccionamos «Fast».
- Flash image –> seleccionamos el .hex que hemos descomprimido previamente. (De nuevo, el .hex NO el .bin).
- Location –> Seleccionamos «Primary».
- IEEE 0x –> Lo dejamos en blanco.
- Retain IEEE address when programming –> NO (desmarcado).
- Actions –> «Erase, program and verify».
- Write protect –> NO (desmarcado y lo dejamos en blanco).
Una vez estamos seguros de que está todo correcto, hacemos click en «Perform actions». La barra inferior comienza a cargar y en unos pocos segundos debemos ver lo siguiente:
Llegados a este punto ya podemos desconectar el CC2531 y el CC Debugger; el flasheo está completo y el dispositivo está listo para usarse.
Conexión a Home Assistant
Vamos a instalar sólo DOS cosas en Home Assistant: un broker de MQTT (para interpretar los mensajes MQTT, esto es, el protocolo mediante el que se va a comunicar Zigbee con Home Assistant) y el add-on Zigbee2mqtt.
Existe una integración nativa en Home Assistant llamada Zigbee Home Automation (Ajustes > Integraciones > Añadir) pero el add-on Zigbee2mqtt me parece mejor opción. En cualquier caso, no es relevante cual instalemos pero no podemos usar los dos.
MQTT Broker
Vamos primero con la instalación del broker MQTT para lo cual disponemos de un add-on oficial llamado Mosquitto broker desde Supervisor > Tienda de complementos > Mosquitto broker. Hacemos click en Instalar y no lo iniciamos directamente, antes vamos a configurar un usuario nuevo para MQTT.
Para hacer esto, vamos a Configuración > Usuarios > Añadir usuario y se nos abre una ventana en la que especificaremos:
- Nombre: mqtt
- Nombre de usuario: mqtt
- Contraseña: una contraseña que tendremos que usar luego (suficientemente segura).
Guardamos y volvemos a Supervisor > Add-ons > Mosquitto broker (ya instalado) > Configuración del add-on y nos aseguramos que la configuración luzca igual que en la imagen (los puertos por defecto no los tocamos):
Si todo está idéntico, volvemos a los detalles del add-on y hacemos click en Iniciar.
Cuando pasen unos segundos/minutos, vamos a Configuración > Integraciones y Home Assistant nos habrá detectado automáticamente (si no es el caso, podemos darle a «Añadir integración» y buscar MQTT) una integración nueva lista para integrar, a lo que le damos a «Configurar», marcamos la casilla que dice «Habilitar descubrimiento» y por último en «Enviar». Listo; ya está configurado todo lo relativo a MQTT.
Zigbee2mqtt
Para instalar el add-on de Zigbee2mqtt hay que añadir el repositorio. Desde Supervisor > Tienda de add-ons > damos en los tres puntos de la esquina superior derecha y en «Repositorios» añadimos la siguiente URL.
Añadimos la URL: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt y aceptamos; deberíamos ver que se añaden dos add-ons nuevos:
Seleccionamos el add-on de la izquierda e instalamos (tarda unos minutos).
Una vez instalado vamos a su panel de configuración y aquí por suerte, desde hace unas cuantas versiones ya no tenemos que editar gran cosa:
- En data_path: /config/zigbee2mqtt
- En socat:
1
2
3
4
5
enabled: false
master: pty,raw,echo=0,link=/tmp/ttyZ2M,mode=777
slave: tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5
options: "-d -d"
log: false
- En mqtt:
1
base_topic: zigbee2mqtt
- En serial:
1
port: /dev/ttyACM0
Casi siempre será /dev/ttyACM0 pero para asegurarnos vamos a Supervisor > Sistema > Host (damos en los tres puntos) > Hardware y buscamos dónde aparezca «Texas Instrument».
En anteriores versiones teníamos muchos más campos que editar, ahora el add-on provee configuraciones por defecto bastantes más apañadas. Además, una vez instalado podremos acceder a su interfaz gráfica dónde los ajustes son más visuales.
Con estos cambios guardados iniciamos el add-on y vamos a la pestaña de «Registro», de haber hecho todo correctamente, en unos segundos / minutos deberemos ver un mensaje que diga algo parecido a Connected to MQTT server.
Si esto es así, hemos acabado la configuración, el led del CC2531 probablemente esté encendido (o no, depende de la versión) y si hemos marcado la opción «Mostrar en la barra lateral», tendremos a la izquierda la interfaz del add-on que podemos abrir y se ve tal que así:
Enlazando el primer dispositivo
Para esta entrada voy a usar un sensor de contacto para puertas/ventanas o similares, concretamente el SONOFF SNZB-04 pero cualquier sensor Zigbee nos valdría.
La forma de emparejar dispositivos Zigbee es de lo más sencilla, aunque depende del dispositivo en concreto, todos cuentan o bien con un pequeño botón o con un pequeño orificio por el cual introducir un pulsador (cómo las ranuras para tarjetas SIM de los smartphones).
Una vez sepamos cómo entra en «modo de emparejamiento» el dispositivo que queramos añadir, sólo tenemos que ir a la interfaz de Zigbee2MQTT que vimos antes y pulsar el botón de «Permit join (All)».
Podemos entonces pulsar el botón o activador del sensor que hace que entre en modo de emparejamiento. En unos segundos (podemos consultar los «Logs» desde el propio add-on o desde el supervisor si queremos) veremos cómo aparece un mensaje indicando que el dispositivo ha sido emparejado satisfactoriamente y ahora aparece listado en la interfaz.
Podemos (y es recomendable) darle un nombre descriptivo al dispositivo para trabajar con el en Home Assistant luego. Desde la interfaz podemos ver el estado del dispositivo, la batería (decir que estos dispositivos duran mucho dado su bajo consumo), la calidad del enlace (dependiendo de la distancia y la densidad de la red) y otros detalles. También podemos pedir al add-on que nos genere un mapa de la red desde la pestaña «Map».
NO OLVIDEMOS, UNA VEZ VINCULADO EL DISPOSITIVO, DESACTIVAR EL EMPAREJAMIENTO PULSANDO DE NUEVO EL BOTÓN «PERMIT JOIN (ALL)».
Verificando y mostrando información
Ahora que tenemos un dispositivo emparejado podemos ver que desde Ajustes > Integraciones aparecerá listado bajo la integración de MQTT y también se habrán creado nuevas entidades en nuestro sistema (que dependerán del tipo de dispositivo añadido lógicamente).
Podemos visualizar los datos desde la interfaz, cómo el estado, la calidad del enlace, etc. En mi caso estoy usando esta configuración usando las tarjetas personalizadas de stack-in-card, zigbee2mqtt-networkmap y mini-graph-card (todas ellas disponibles desde HACS).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
type: custom:stack-in-card
title: Sensores Zigbee
mode: vertical
cards:
- type: glance
entities:
- entity: binary_sensor.puerta_contact
name: Sensor
state_color: true
- type: custom:zigbee2mqtt-networkmap
entity: sensor.zigbee2mqtt_networkmap
mqtt_base_topic: zigbee2mqtt
force: 3000
node_size: 16
font_size: 12
link_width: 2
height: 400
css: |
:host {
--zigbee2mqtt-networkmap-node-color: rgba(18, 120, 98, .7);
--zigbee2mqtt-networkmap-node-fill-color: #dcfaf3;
--zigbee2mqtt-networkmap-node-pinned-color: rgba(190, 56, 93, .6);
--zigbee2mqtt-networkmap-link-color: rgba(18, 120, 98, .5);
--zigbee2mqtt-networkmap-hover-color: #be385d;
--zigbee2mqtt-networkmap-link-selected-color: rgba(202, 164, 85, .6);
--zigbee2mqtt-networkmap-label-color: #127862;
--zigbee2mqtt-networkmap-arrow-color: rgba(18, 120, 98, 0.7);
--zigbee2mqtt-networkmap-node-coordinator-color: rgba(224, 78, 93, .7);
--zigbee2mqtt-networkmap-node-router-color: rgba(0, 165, 255, .7);
}
- type: custom:mini-graph-card
entities:
- entity: sensor.puerta_linkquality
name: Sensor
color: green
line_width: 5
font_size: 60
Variedad de sensores
La tecnología Zigbee cada vez está más extendida, de ahí que encontremos bastante variedad de dispositivos domóticos y similares controlables mediante este protocolo. Aquí voy a listar algunos de los que yo considero más interesantes:
- Sensor movimiento Sonoff SNZB-03
- Sensor movimiento Xiaomi Aqara
- Sensor puertas/ventanas Sonoff SNZB-04
- Sensor puertas/ventanas Xiaomi
- Sensor puertas/ventanas Xiaomi Aqara
- Sensor vibración Xiaomi Aqara
- Botón Sonoff SNZB-01
- Sensor temperatura y humedad Sonoff SNZB-02
- Sensor temperatura y humedad Xiaomi Aqara
- Conmutador Sonoff ZBMINI
- Conmutador Sonoff BASICZBR3
- Controlador de persianas Ledlux
- Controlador de cortinas Haudang
- Controlador de tiras LED RGB/RGBW GLEDOPTO
- Controlador de tiras LED RGB/RGBW Ledlux
- Controlador de tiras LED RGB/RGBW Lighteu
- Válvula agua/gas Kaxofang
- Válvula agua/gas Luqun
- Sensor escape agua eMylo
- Sensor escape agua Trust Smart Home
- Sensor fuga de gas M0L0
- Sensor fuga gas HEIMAN
- Sensor Monóxido de carbono M0L0
- etc…
Comentarios finales
La clave de una red Zigbee no es la potencia del coordinador, si bien esto ayuda en redes pequeñas donde la distancia entre coordinador y dispositivos es grande, sino la densidad (por ser una red en malla). El CC2531 es quizás una mejor opción para redes grandes siempre que se use el firmware de source_routing, lo cual no quiere decir que sea una mala opción para redes pequeñas.
Por ejemplo, el CC2591 es un modelo superior en potencia, pero no aporta muchas ventajas si la red que estamos montando tiene sus dispositivos a poca distancia (es una mejor opción en el caso de casas o recintos grandes que coloquen dispositivos a bastantes metros de distancia).
¿Porqué no usar Z-wave? Z-wave es otra opción enfocada a la comunicación de sensores domóticos pero, si bien es igualmente válida, es una opción privativa desarrollada por la empresa Zensys y los dispositivos certificados para funciona con Z-wave suelen ser por lo general bastante más caros que aquellos que emplean Zigbee (que es abierto). Si aún así queremos usar Z-wave una opción es este coordinador con este add-on oficial para HASS.
Nada nos impide usar Zigbee y Z-wave a la vez mientras que nuestro dispositivo que ejecuta Home Assistant tenga suficientes puertos USB disponibles.
¿Existen coordinadores previamente flasheados? Si; una opción es el Conbee II que puede integrarse automáticamente con el add-on de Home Assistant dispuesto para este dispositivo. La razón de usar un add-on distinto es que Conbee es privativo y usa su propio sistema de comunicación que no es MQTT. Este tipo de soluciones son más sencillas de integrar pero tenemos que recordar que por un lado no dejan de ser privativas y por otro, son mucho más caras.
“Los enlaces a productos de Amazon que encuentras en esta página son enlaces de afiliado. Esto significa que si decides realizar una compra a través de estos enlaces, recibiré una pequeña comisión sin ningún costo adicional para ti. Estas comisiones ayudan a mantener y apoyar mi trabajo en este sitio web. ¡Gracias por tu apoyo!”
“PATROCINADO - Prueba los productos de Proton Privacy para proteger tu privacidad y seguridad y estarás contribuyendo al desarrollo de este sitio web sin ningún costo adicional - Proton Mail - Proton Drive - Proton Pass - Proton VPN”