Home Instalación y configuración de receptor Zigbee en Home Assistant
Post
Cancel

Instalación y configuración de receptor Zigbee en Home Assistant

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:

Router propietario de Zigbee

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

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).

Receptor Zigbee CC2531

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.

CC Debugger con adaptador para CC2531

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.

Registro en Texas Instrument

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:

Ficheros necesarios

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:

CC Debugger con adaptador CC Debugger y CC2531

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.

CC Debugger y CC2531 conectados mediante adaptador

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:

Administrador de dispositivos

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í:

Texas Instrument SmartRF Flash Programmer

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.

CC Debugger con luz verde encendida

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:

Ajustes del SmartRF Flash Programmer

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:

Progreso flasheo completado

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).

Añadir usuario a Home Assistant

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):

Configuración Mosquitto Broker

Si todo está idéntico, volvemos a los detalles del add-on y hacemos click en Iniciar.

Add-on Mosquitto Broker funcionando

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.

Repositorios personalizados

Añadimos la URL: https://github.com/zigbee2mqtt/hassio-zigbee2mqtt y aceptamos; deberíamos ver que se añaden dos add-ons nuevos:

Add-ons añadidos

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».

Listado de Hardware

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í:

Interfaz Zigbee2MQTT

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.

Sensor Sonoff SNZB-04 Zigbee

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).

Instrucciones para el sensor Sonoff SNZB-04 Zigbee

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)».

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.

Dispositivos añadidos

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

Vistazo desde Lovelace

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:

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.

This post is licensed under CC BY 4.0 by the author.

Instalación de Docker en Raspberry Pi 4

Servidor de impresión mediante CUPS en una Raspberry Pi