¿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
-
- Descargar e instalar el programador SmartRF Flash (NO V2). Este software es gratuito pero requiere una cuenta para descargar.
- 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 .
- Conecte
CC debugger --> Downloader cable CC2531 --> CC2531 USB sniffer
. - Conecte el
CC2531 USB sniffer
y elCC debugger
al PC mediante USB. - 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.
- Descarga el firmware CC2531_20190425.zip
- 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
!
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]: > zigbee2mqtt@0.1.0 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
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…