¿Que es Zigbee2mqtt?

ZigBee es un conjunto de protocolos de alto nivel de comunicación. Se utiliza para la radiodifusión digital de datos buscando ahorrar lo máximo posible en energía. Una tecnología basada en el estándar de la IEEE, el IEEE 802.15.4.

La tecnología de comunicación inalámbrica ZigBee utiliza la banda ISM y por lo general, adapta la banda 2.4GHz para comunicarse con el resto de dispositivos ya que esta se adapta en todo el mundo.

¿Porque lo instalo?

En Zigbee, hay tres tipos diferentes de dispositivos: dispositivo, enrutadores y coordinador. Una red Zigbee siempre tiene un coordinador (y no más) y puede tener múltiples enrutadores y dispositivos. En el caso de zigbee2mqtt, el coordinador es su memoria USB CC2531.

Los dispositivos finales no enrutan el tráfico. También se ponen en reposo, lo que hace que los dispositivos finales sean una opción adecuada para los dispositivos que funcionan con batería. Un dispositivo final solo tiene un padre, ya sea el coordinador o un enrutador, generalmente el dispositivo más cercano cuando se emparejó. Todas las comunicaciones hacia y desde el dispositivo final se realizan a través de sus padres. Si un enrutador principal se desconecta, todo el tráfico hacia sus secundarios cesará hasta que los dispositivos finales se desconecten e intenten encontrar un nuevo padre. Algunos modelos de dispositivos finales, especialmente Xiaomi, no intentan encontrar un nuevo padre, por lo que permanecerán aislados hasta que se vuelvan a emparejar con la red.

El firmware del coordinador de sniffer USB CC2531 tiene un límite de 25 hijos directos . Esto significa 1 coordinador + 25 dispositivos finales y 0 enrutadores.

Sin embargo, al agregar enrutadores a su red, puede superar el límite de 25 dispositivos. Esto significa que, por ejemplo, es posible una red de 1 coordinador, 4 enrutadores y 50 dispositivos finales.

¡La cantidad de dispositivos que un enrutador admite difiere por dispositivo final. Por lo tanto, el aumento de tamaño de una red al agregar un enrutador es arbitrario.

Requisitos Previos

Se necesitan los siguientes pasos para instalar un sistema Zigbee2mqtt.

  • Raspberry Pi.
  • Depurador CC.
  • CC2531 USB sniffer.
  • Cable de descarga CC2531.

Se puede comprar Aqui en aliexpres.

Flasear el dispositivo CC2531 USB sniffer

    1. Descargar e instalar el programador SmartRF Flash (NO V2). Este software es gratuito pero requiere una cuenta para descargar.
    2. Instalar el controlador del depurador CC en su PC (solo Windows). Antes de continuar, verifique que el controlador CC Debugger se haya instalado correctamente. Al enchufar el debugger el puerto USB se tiene que encender el piloto VERDE . En caso de que el CC Debugger no se reconozca correctamente, instale el controlador manualmente .
    3. Conecte CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer.
    4. Conecte el CC2531 USB sniffery el CC debuggeral PC mediante USB.
    5. Si la luz en el depurador de CC es ROJA, presione el botón de restablecimiento de configuración en el depurador de CC. La luz en el depurador CC ahora debería ponerse VERDE. Si no es así, utilice la guía del usuario del depurador CC o pregunta en el foro para solucionar su problema.
      Como conectar
  1. Descarga el firmware CC2531_20190425.zip
  2. Inicia SmartRF Flash Programmer, configura como se muestra a continuación y presione Perform actions. Asegúrese de seleccionar el archivo .hex, no el archivo .bin!
    Programador Flash SmartRF

Conectar el dispositivo CC2531 USB sniffer al USB de la Raspberry

Primero debemos determinar en que USB se encuentra el CC2531. Conecte el CC2531 a la Raspberry Pi. Normalmente la ubicación del CC2531 es/dev/ttyACM0. Lo verificamos con:

pi@raspberry:~ $ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 May 16 19:15 /dev/ttyACM0  # <-- CC2531 on /dev/ttyACM0

Instalar Zigbee2MQTT

# Setup Node.js repository
sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

# Install Node.js
sudo apt-get install -y nodejs git make g++ gcc

# Verify that the correct nodejs and npm (automatically installed with nodejs)
# version has been installed
node --version # Should output v10.X
npm --version # Should output 6.X

# Clone zigbee2mqtt repository
sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt

# Install dependencies
cd /opt/zigbee2mqtt
npm install

Si todo salió correctamente, la salida de npm install es similar a:

node-pre-gyp info ok
added 383 packages in 111.613s

Tenga en cuenta que el npm install produce algunos warning que pueden ser ignorados.

Configurar Zigbee2MQTT

Antes de que podamos iniciar Zigbee2mqtt necesitamos editar el archivo configuration.yaml. Este archivo contiene la configuración que será utilizada por Zigbee2mqtt.

Abrir el archivo de configuración:

nano /opt/zigbee2mqtt/data/configuration.yaml

Lo único que debemos cambiar es la url y la autenticación del servidor MQTT (si corresponde). Esto se puede hacer cambiando la sección a continuación. Resalto que no es recomendable el Uso de Usuario y Password en el sevidor MQTT.

# Permitimos el acceso de los dispositivos
permit_join: true
# MQTT settings
mqtt:
  # MQTT base topic for zigbee2mqtt MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user: my_user
  # password: my_password
# Incluimos informacion de los dispositivos
include_device_information: true
# Ponemos el puerto del USB para mayor seguridad
serial:
  port: /dev/ttyACM0
# Desabilitar el led
disable_led: true
devices:

Guarda el archivo y cierra.

Iniciar servicio zigbee2mqtt

Ahora que hemos configurado todo correctamente, podemos probar que el servicio zigbee2mqtt funciona.

cd /opt/zigbee2mqtt
npm start

Cuando se inicia con éxito, verás:

2018-5-18 20:35:07 INFO Starting zigbee-shepherd
2018-5-18 20:35:09 INFO zigbee-shepherd started
2018-5-18 20:35:09 INFO Currently 0 devices are joined:
2018-5-18 20:35:09 INFO Connecting to MQTT server at mqtt://localhost
2018-5-18 20:35:09 INFO zigbee-shepherd ready
2018-5-18 20:35:09 INFO Connected to MQTT server

Lo detenemos presionando CTRL + C.

Ejecutar como un demonio con systemctl

Para ejecutar zigbee2mqtt como demonio (en segundo plano) e iniciarlo automáticamente en el arranque, ejecutaremos Zigbee2mqtt con systemctl.

# Create a systemctl configuration file for zigbee2mqtt
sudo nano /etc/systemd/system/zigbee2mqtt.service

Agregue lo siguiente a este archivo:

[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

Guarda el archivo y cierra.

Verifique que la configuración funcione:

# Start zigbee2mqtt
sudo systemctl start zigbee2mqtt

# Show status
systemctl status zigbee2mqtt.service

La salida debe verse algo como:

● zigbee2mqtt.service - zigbee2mqtt
Loaded: loaded (/etc/systemd/system/zigbee2mqtt.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2018-06-07 20:27:22 BST; 3s ago
Main PID: 665 (npm)
CGroup: /system.slice/zigbee2mqtt.service
├─665 npm
├─678 sh -c node index.js
└─679 node index.js

Jun 07 20:27:22 raspberry systemd[1]: Started zigbee2mqtt.
Jun 07 20:27:23 raspberry npm[665]: > [email protected] start /opt/zigbee2mqtt
Jun 07 20:27:23 raspberry npm[665]: > node index.js
Jun 07 20:27:24 raspberry npm[665]: 2018-6-7 20:27:24 INFO Starting zigbee-shepherd
Jun 07 20:27:25 raspberry npm[665]: 2018-6-7 20:27:25 INFO zigbee-shepherd started

Ahora que todo funciona, queremos que systemctl inicie zigbee2mqtt automáticamente en el arranque, esto se puede hacer ejecutando:

sudo systemctl enable zigbee2mqtt.service

Algunos consejos que pueden ser útiles más adelante:

# Stopping zigbee2mqtt
sudo systemctl stop zigbee2mqtt

# Starting zigbee2mqtt
sudo systemctl start zigbee2mqtt

# View the log of zigbee2mqtt
sudo journalctl -u zigbee2mqtt.service -f

Actualizar Zigbee2MQTT a la última versión.

Para actualizar Zigbee2MQTT a la última versión, ejecutar lo siguiente:

# Stop zigbee2mqtt and go to directory
sudo systemctl stop zigbee2mqtt
cd /opt/zigbee2mqtt

# Backup configuration
cp -R data data-backup

# Update
git checkout HEAD -- npm-shrinkwrap.json
git pull
rm -rf node_modules
npm install

# Restore configuration
cp -R data-backup/* data
rm -rf data-backup

# Start zigbee2mqtt
sudo systemctl start zigbee2mqtt

Instalar Plugin de DomoticZ

Clonar de repositorio de GitHub:

cd domoticz/plugins
git clone https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin.git zigbee2mqtt

# Reiniciamos el servicio DomoticZ
sudo systemctl restart domoticz.service

Comprobar que «Aceptar nuevos dispositivos de hardware» esté habilitado en la configuración de Domoticz

Ir a la página «Hardware» y agregar un nuevo elemento con el tipo «Zigbee2MQTT»
Establezca la dirección y el puerto de su servidor MQTT a la configuración del complemento

Plugin Zigbee2MQTT

Una vez que el complemento reciba la lista de dispositivos del servidor zigbee2mqtt, se crearán los dispositivos domóticos adecuados. Encontrarás estos dispositivos en la página Configuración -> Dispositivos.

Actualización del plugin

Ir a la carpeta de plugins y sacar nueva versión

cd domoticz/plugins/zigbee2mqtt
git pull

# Reiniciamos el servicio DomoticZ
sudo systemctl restart domoticz.service

Fuente Aquí.

Visita el FORO Aquí donde puedes realizar todas las preguntas…



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *