Recientemente comencé a hacer partes de mi SmartHome cambie al estándar Zigbee.
En el pasado todavía usaba sensores y actuadores basados en la simple radio de 433Mhz. Desafortunadamente, cada vez hay menos sensores o actuadores para este "estándar de radio".
Por último, pero no menos importante, los precios muy bajos de los accesorios Zigbee en Ikea fueron el argumento decisivo para cambiarme a este estándar.
Además de estas ventajas, existen, por supuesto, otras ventajas del estándar Zigbee. Los actuadores que están permanentemente conectados a la red eléctrica (por ejemplo, un enchufe compatible con Zigbee) también funcionan automáticamente como repetidores (llamados "enrutadores" en la jerga de Zigbee). De esta manera, también se pueden configurar redes Zigbee muy grandes (por ejemplo, en varios pisos).
Los dispositivos Zigbee que funcionan con batería pueden, gracias a la arquitectura más adecuada, lograr una vida útil muy larga de la batería. Un sensor de puerta o ventana, por ejemplo, puede funcionar durante varios años con una sola pila de botón CR2032.
Bueno, pero ¿cómo puede integrar sensores y actuadores Zigbee en su propio SmartHome ¿integrar?
Un proyecto de código abierto muy interesante y útil sobre esto es Zigbee2MQTT.
Como sugiere el nombre, zigbee2mqtt es una especie de adaptador que evalúa los datos recibidos a través de Zigbee y los envía a través de un servidor MQTT. SmartHome hacia adelante.
Luego puede acceder a estos datos, como puede hacerlo a partir de Tasmota y EspFácil sensores/actuadores basados – reaccionar.
Dale me gusta a tu zigbee2mqtt en el tuyo RaspberryPi instalado que he descrito en el siguiente artículo.
Instrucciones de seguridad
Sé que las siguientes notas siempre son un poco molestas y parecen innecesarias. Desafortunadamente, muchas personas que sabían "mejor" han perdido ojos, dedos u otras cosas debido a un descuido o se lesionaron. La pérdida de datos es casi insignificante en comparación, pero incluso estos pueden ser realmente molestos. Por lo tanto, tómese cinco minutos para leer las instrucciones de seguridad. Porque incluso el proyecto más genial no vale la pena lesionarse u otros problemas.
https://www.nerdiy.de/sicherheitshinweise/
Enlaces afiliados / enlaces publicitarios
Los enlaces a las tiendas en línea enumerados aquí son los llamados enlaces de afiliados. Si hace clic en dicho enlace de afiliado y realiza una compra a través de este enlace, Nerdiy.de recibirá una comisión de la tienda en línea o el proveedor correspondiente. El precio no cambia para usted. Si realiza sus compras a través de estos enlaces, ayuda a Nerdiy.de a poder ofrecer otros proyectos útiles en el futuro. 🙂
Requisitos
Artículos útiles:
Antes de empezar con este artículo, deberías haber preparado una RaspberryPi para que sea accesible a través de la red y controlable vía SSH. También debe tener un Servidor MQTT ya instalado ser.
Los siguientes artículos describen lo que se debe hacer para preparar la RaspberryPi.
- RaspberryPi: ¡configuración para nerdiys!
- RaspberryPi – ¡La primera configuración!
- RaspberryPi: controle el RaspberryPi a través de SSH
En las siguientes listas encontrará todas las piezas que necesita para implementar este artículo.
Herramienta requerida:
Material requerido:
Inicie sesión en RaspberryPi a través de SSH
Para comenzar, primero debe iniciar sesión en Rasp Pi con Putty a través de SSH. Cómo hacer esto está en el artículo. RaspberryPi - Controle el RaspberryPi a través de SSH descrito.
Gestión de paquetes de actualización
La gestión de paquetes en Linux es un "lugar central" a través del cual se pueden instalar varios paquetes de software. Para que esto funcione de manera confiable, las listas y fuentes de administración de paquetes deben actualizarse antes de cada instalación de nuevos paquetes.
sudo apt-obtener actualización && sudo apt-obtener actualización
Preparar la instalación en la Raspberry Pi
La instalación de zigbee2mqtt se puede iniciar con unos simples comandos bash.
Pero antes de que pueda comenzar con la instalación real de zigbee2mqtt, primero debe instalar algunas dependencias/bibliotecas requeridas.
Para hacer esto, ejecute el siguiente comando. Esto prepara la instalación de NodeJs.
sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash-
El siguiente comando luego instala NodeJs, incluidos varios compiladores.
sudo apt-get install -y nodejs git make g++ gcc
Después de eso, debe instalar Yarn Package Manager. Para hacer esto, ejecute los siguientes comandos en su Raspberry Pi.
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [firmado por=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list<br>
sudo apt-get update sudo apt-get install yarn -y
Luego puede usar los siguientes comandos para descargar el repositorio zigbee2mqtt y establecer los derechos de directorio requeridos.
clon de sudo git https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt
Establecer la configuración de Zigbee2mqtt
Después de descargar los archivos zigbee2mqtt, ahora debe adaptar el archivo de configuración a su sistema.
Para que su adaptador zigbee2mqtt (coordinador) pueda direccionarse correctamente, debe especificar la ruta correcta en el archivo de configuración.
Por supuesto, el adaptador ya debería estar flasheado con el firmware zigbee2mqtt y conectado a la Raspberry Pi. Puede encontrar información al respecto en el siguiente artículo del blog, por ejemplo.
Una vez que el Coordinador Zigbee esté conectado, debe averiguar la ruta del dispositivo y guardarla.
Puede mostrar la ruta del dispositivo de los adaptadores conectados con el siguiente comando.
ls /dev/serial/by-id/
Si solo tiene un adaptador conectado, aquí solo se muestra la ruta del dispositivo a su adaptador Zigbee. Si hay varias entradas enumeradas aquí, la forma más fácil es eliminar primero todos los demás dispositivos USB, recuperar la lista nuevamente y luego copiar la única entrada existente.
En el ejemplo que se muestra, la ruta del dispositivo que se busca es la siguiente.
- usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_019758DF-if00-port0
Es mejor guardar esto en un archivo de texto. Necesita la ruta del dispositivo para ingresarla más tarde en el archivo de configuración.
Ahora cree o abra el archivo de configuración de zigbee2mqtt ingresando el siguiente comando.
nano /opt/zigbee2mqtt/data/configuration.yaml
El contenido del archivo debería verse así. Sin embargo, debe ajustar las posiciones dadas a continuación en consecuencia.
# MQTT settings mqtt: # MQTT tema base para mensajes Zigbee2MQTT MQTT base_topic: zigbee2mqtt # MQTT server URL servidor: 'mqtt://localhost' # MQTT autenticación del servidor, descomentar si es necesario: # usuario: my_user # contraseña: my_password # Serial settings serial : # Ubicación del adaptador (consulte el primer paso de esta guía) puerto: /dev/ttyACM0 advanced: network_key: GENERATE ikea_ota_use_test_url: true legacy_api: false log_level: debug frontend: port: 8038 host: 0.0.0.0 auth_token: secretPassword123 url: http ://localhost
Es importante que adapte algunas configuraciones en el archivo de configuración a su situación.
Personalizar el servidor Mqtt:
Establezca correctamente el nombre de dominio en su servidor MQTT. Necesitas el trabajo para eso. 'mqtt://host local' Adáptese en consecuencia (si el servidor mqtt no se ejecuta en la misma RaspberryPi que zigbee2mqtt).
Ajustar la contraseña del tablero:
Para proteger el acceso al panel de zigbee2mqtt, debe establecer la contraseña en un valor que solo usted conozca. cambiar esa parte auth_token: contraseña secreta123 respectivamente.
Personaliza la ruta a tu Coordinador Zigbee:
Proporciona la ruta del dispositivo en la entrada
- puerto: /dev/ttyACM0
luego al valor correcto. Debería haber copiado la ruta del dispositivo correspondiente en el paso anterior.
Iniciar instalación
Una vez que haya completado todas las configuraciones, ahora puede comenzar la instalación de zigbee2mqtt.
Luego inicia la instalación de zigbee2mqtt usando el comando bash
cd /opt/zigbee2mqtt
cambios en el directorio y la instalación con
npm ci
empieza.
instalación de prueba
Si quieres, ya puedes probar la instalación de zigbee2mqtt en este punto.
Para hacer esto, simplemente ejecute los siguientes comandos.
cd /opt/zigbee2mqtt
inicio de npm
Esto inicia zigbee2mqtt y puede ver la salida del registro.
Zigbee2mqtt luego se ejecuta siempre que la ventana de la consola esté abierta y conectada o finalice el flujo del programa con CTRL-C.
Configurar Zigbee2mqtt como un servicio del sistema
Para que zigbee2mqtt se ejecute sin una ventana de consola abierta, debe instalar un servicio del sistema.
Para hacer esto, cree un nuevo archivo de configuración para el servicio del sistema ingresando el siguiente comando.
sudo nano /etc/systemd/system/zigbee2mqtt.servicio
Luego pegue el texto a continuación y guarde el archivo con los atajos de teclado CTRL-X, Y y Enter.
[Unidad] Descripción=zigbee2mqtt After=network.target [Servicio] ExecStart=/usr/bin/npm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit # O use StandardOutput=null si no desea que los mensajes de Zigbee2MQTT llenen syslog, para más opciones ver systemd.exec(5) StandardError=inherit Restart=always User=pi [Install] WantedBy=multi-user.target
Configurar el inicio automático de Zigbee2mqtt
Con el siguiente comando puedes activar el inicio automático de zigbee2mqtt. Esto iniciará zigbee2mqtt automáticamente después de iniciar RaspberryPi.
Gracias al servicio del sistema ya configurado, solo tiene que ejecutar el siguiente comando para iniciar zigbee2mqtt junto con Raspberry Pi.
sudo systemctl habilitar zigbee2mqtt.servicio
Reiniciar Zigbee2mqtt
Puede reiniciar su instancia zigbee2mqtt con el siguiente comando.
Ingrese el siguiente comando para reiniciar zigbee2mqtt.
sudo systemctl reiniciar zigbee2mqtt
Detener Zigbee2mqtt
Puede usar el siguiente comando para detener su instancia zigbee2mqtt.
Ingrese el siguiente comando para detener zigbee2mqtt.
sudo systemctl detener zigbee2mqtt
Mostrar registro Zigbee2mqtt
El siguiente comando muestra el archivo de registro existente de zigbee2mqtt. Esta vista también se actualiza automáticamente. Por ejemplo, también puede monitorear el proceso de inicio y encontrar errores o mostrar mensajes de error.
Para hacer esto, ingrese el siguiente comando.
sudo journalctl -f -u zigbee2mqtt
Más artículos sobre el tema.
Después de configurar zigbee2mqtt, por supuesto, debe integrar sensores y actuadores en su red Zigbee.
El tablero zigbee2mqtt se puede usar muy bien para esto. Además, el tablero también es una forma muy conveniente de administrar zigbee2mqtt. El artículo en el que se presenta brevemente el tablero se puede encontrar aquí.
En la siguiente categoría, he enumerado algunos dispositivos Zigbee que se pueden controlar o leer con el código NodeRed que se ofrece allí.
He resumido otros artículos sobre el tema de Zigbee y zigbee2mqtt en la siguiente categoría.
Diviértete con el proyecto.
Espero que todo te haya funcionado como se describe. Si no es así, o si tiene alguna pregunta o sugerencia, hágamelo saber en los comentarios. Si es necesario, lo añadiré al artículo.
Las ideas para nuevos proyectos siempre son bienvenidas. 🙂
PS Muchos de estos proyectos, especialmente los proyectos de hardware, cuestan mucho tiempo y dinero. Por supuesto que hago esto porque lo disfruto, pero si crees que es genial que comparta la información contigo, me encantaría hacer una pequeña donación al fondo del café. 🙂
¡Gracias por las excelentes instrucciones! Desafortunadamente, no puedo conectar ninguna lámpara de Ikea, Touchlink reconoce las lámparas y también puede restablecerlas, pero la lámpara no aparece debajo de los dispositivos después. Tampoco aparece nada sobre un enlace en el registro. He integrado con éxito 2 botones diferentes (E2001/E2002 y E1743), pero no quiere funcionar con dos lámparas diferentes (LED1836G9 y LED2003G10)...
Hola mario,
¿has probado ya a acoplar las lámparas "convencionalmente" sin touch link?
Actualmente estoy trabajando en las instrucciones para las lámparas LED de Ikea, y probablemente las pondré en línea pronto.
Conecté las lámparas de tal manera que primero habilité el acceso a mi red Zigbee (a través del tablero zigbee2mqtt) y luego reinicié las lámparas (encendiéndolas y apagándolas varias veces).
Esto ha funcionado bien para todas las lámparas hasta ahora. tal vez puedes intentarlo? 🙂
Atentamente
Fabian
Hola Fabián,
funciona el acoplamiento directo entre lámparas e interruptores, incluso varias (ambas) lámparas en un interruptor. Pero noté que tenía que mantener presionado el botón de emparejamiento durante unos 10 segundos para el emparejamiento directo. Para emparejar un interruptor con z2m, tengo que presionar el botón de emparejamiento 4 veces en rápida sucesión. Eso en realidad correspondería a un reinicio. Es decir, ¿no puedo asignar un botón a z2m y al mismo tiempo una o más lámparas (directamente)? Una vez que se empareja un botón con el z2m, ni siquiera el LED rojo se encenderá cuando se intente emparejar con otros dispositivos. Solo después de un reinicio (presione 4 veces) el botón vuelve a estar "libre". ¿Puede ser que mi z2m esté funcionando en un "modo no Ikea" que solo puede usar los botones y no las lámparas?
Al conectar las lámparas con z2m probé 2 procesos:
* Primero active el aprendizaje (luego cuenta regresivamente desde 255 segundos) y luego reinicie la lámpara reconocida en la pestaña Touchlink. En la pestaña de registros, veo que el restablecimiento fue exitoso, pero no hay un solo mensaje de que hubo un intento de emparejamiento después. También he probado a apagar y volver a encender la lámpara.
* Con el segundo proceso, también activé primero el aprendizaje y luego reinicié la lámpara apagándola y volviéndola a encender 6 veces. (Un poco complicado, pero puede ver el éxito cuando la lámpara se atenúa hacia arriba y hacia abajo) Aquí, también, no hay nada en el registro ni acoplamiento.
La única diferencia en su configuración que no he mencionado todavía es que mi z2m + Mosquitto + NodeRED (para más adelante) no se ejecuta en un RPi sino en un Debian 11 recién instalado en una máquina KVM virtual. ¿Puede ser que reaccione demasiado rápido en comparación con Pi y tenga un problema de tiempo de ejecución en alguna parte?
Hola de nuevo,
Inmediatamente después de mi publicación anterior, me bloqueé de la interfaz intentando y probando cosas estúpidas. Es por eso que edité el archivo configuration.yaml varias veces para obtener acceso nuevamente. Luego probé un emparejamiento nuevamente y ¡ahora funcionó! – con ambas lámparas. Desafortunadamente, todavía no estoy seguro de lo que cambié...
Solo con el reset en el touchlink el acoplamiento sigue sin funcionar.
En cualquier caso, gracias por tu esfuerzo.
Saludos
mario
Hola mario,
muy bien. Oh, lo principal es que funciona. 🙂
Gracias por la info.
Atentamente
Fabian
Gracias por este tutorial.
zigbee2mqtt requiere un servidor mqtt. No tenía ninguno preinstalado (Raspberry PI OS 64 bit lite). Probablemente la forma más fácil sería:
sudo apt install -y mosquitto mosquitto-clientes
sudo systemctl habilitar mosquitto.servicio
Y 2 pasos aquí todavía podrían corregirse un poco:
– En este paso, se puede quitar el "":
echo "deb [firmado por=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian principal estable" | sudo tee /etc/apt/sources.list.d/yarn.list
– En este paso, el "sudo apt-get update" se puede eliminar o se debe conectar con un lionebreak o "y":
sudo apt-get update sudo apt-get install yarn -y
Parece que se filtró algo de mi comentario... entre las comillas estaba la etiqueta de salto de línea.
Hola Fabián,
Dietmar aquí otra vez.
Aún tengo el problema de no poder acceder al tablero. Corrí el diario de nuevo. Me da el error: "zigbee2mqtt.service: Failed with result 'exit-code'.". ¿Qué debo hacer con eso?
Además, ¿qué ingreso en Zigbee2mqtt "configuration.yaml" en Url:? ¿Existe el host local?
Está atenuado en sus instrucciones.
Atentamente
Dietmar
Hola Dietmar,
Exactamente, la configuración de URL permanece en "localhost".
¿Puedes copiar el número completo de la revista aquí? Entonces puedo ver si noto algo. 🙂
Atentamente
Fabian
Buenos días Fabián,
Tuve tiempo durante el fin de semana largo para solucionar algunos problemas nuevamente. 😉
¡Eureka! ¡Se metió un PUNTO durante la configuración! Ahora la cosa funciona. Puedo acceder a la interfaz.
Pero ahora aparece el siguiente problema, obtuvimos un termostato de MOES "BHT-002" para el inicio de nuestra casa inteligente. (Punto clave: ahorro de energía) Pero no puedo emparejar la cosa. Obviamente es la parte. La descripción (manual) se mantiene muy simple y la investigación en la red tampoco aportó mucho. El problema es que la temperatura ambiente se registra 1,5 grados demasiado alta. Ese fue el detonante del proyecto Zigbee.
Es así a veces, una cosa desencadena una cadena de eventos.
Pero gracias por tus esfuerzos.
Atentamente
Dietmar
Hola Dietmar,
Eso suena bien. 🙂
¿Cómo hiciste para enseñar el BHT-002?
¿Viste las instrucciones de emparejamiento aquí? https://www.zigbee2mqtt.io/devices/BHT-002-GCLZB.html Específicamente, "Apague el termostato. Mantenga presionado el botón para bajar la temperatura durante +- 8 segundos para habilitar el modo de emparejamiento (la pantalla se ilumina y un ícono similar a WiFi parpadea). Después de una entrevista exitosa, vuelva a encender el termostato".
¿Y cambió Zigbee2mqtt al modo de emparejamiento de antemano? 🙂
También he descrito cómo hacer esto aquí: https://nerdiy.de/howto-zigbee-geraete-bzw-sensoren-und-aktoren-an-zigbee2mqtt-anmelden/
Atentamente
Fabian
Hola, chicos,
No consigo probar la instalación. Un SONOFF Zigbee 3.0 USB dongle está conectado a la Raspberry y he seguido las instrucciones paso a paso. Sin embargo, Zigbee2MQTT no se puede conectar:
¿Alguien tiene algún consejo?
Gracias de antemano
> zigbee2mqtt@1.33.2 inicio
> node index.js
Zigbee2MQTT:debug 2023-11-28 21:14:00: Estado cargado desde el archivo /opt/zigbee2mqtt/data/state.json
Zigbee2MQTT:info 2023-11-28 21:14:00: Registro en consola y directorio: '/opt/zigbee2mqtt/data/log/2023-11-28.21-13-59' nombre de archivo: log.txt
Zigbee2MQTT:info 2023-11-28 21:14:00: Iniciando Zigbee2MQTT versión 1.33.2 (commit #311ea070)
Zigbee2MQTT:info 2023-11-28 21:14:00: Iniciando zigbee-herdsman (0.21.0)
Zigbee2MQTT:debug 2023-11-28 21:14:00: Usando zigbee-herdsman con ajustes: '{"adapter":{"concurrent":null, "delay":null, "disableLED":false}, "backupPath":"/opt/zigbee2mqtt/data/coordinator_backup.json", "databaseBackupPath":"/opt/zigbee2mqtt/data/database.db.backup", "databasePath":"/opt/zigbee2mqtt/data/database.db", "network":{"channelList":[11], "extendedPanID":[221,221,221,221,221,221,221,221], "networkKey": "HIDDEN", "panID":6754}, "serialPort":{"path":"/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_1ca5d6628045ed119031cf8f0a86e0b4-if00-port0″}}‘
Zigbee2MQTT:info 2023-11-28 21:14:02: zigbee-herdsman iniciado (reanudado)
Zigbee2MQTT:info 2023-11-28 21:14:02: Versión del firmware del coordinador: '{"meta":{"maintrel":1, "majorrel":2, "minorrel":7, "product":1, "revision":20210708, "transportrev":2}, "type": "zStack3x0″}'
Zigbee2MQTT:debug 2023-11-28 21:14:02: Parámetros de red Zigbee: {"channel":11, "extendedPanID": "0x00124b002a9a882a", "panID":6754}
Zigbee2MQTT:info 2023-11-28 21:14:02: Actualmente hay 0 dispositivos unidos:
Zigbee2MQTT:warn 2023-11-28 21:14:02: `permit_join` set to `true` in configuration.yaml.
Zigbee2MQTT:warn 2023-11-28 21:14:02: Permitiendo que se unan nuevos dispositivos.
Zigbee2MQTT:warn 2023-11-28 21:14:02: Establece `permit_join` a `false` una vez que hayas unido todos los dispositivos.
Zigbee2MQTT:info 2023-11-28 21:14:02: Zigbee: permitiendo que se unan nuevos dispositivos.
Zigbee2MQTT:info 2023-11-28 21:14:02: Conectando con servidor MQTT en mqtt://localhost:1883
Zigbee2MQTT:debug 2023-11-28 21:14:02: Usando login anónimo MQTT
Zigbee2MQTT:error 2023-11-28 21:14:02: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:02: MQTT no pudo conectarse, saliendo...
Zigbee2MQTT:info 2023-11-28 21:14:02: Deteniendo zigbee-herdsman...
Zigbee2MQTT:error 2023-11-28 21:14:03: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:04: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:05: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:06: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:07: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:09: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:10: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:11: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:12: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:error 2023-11-28 21:14:13: Error MQTT: connect ECONNREFUSED ::1:1883
Zigbee2MQTT:info 2023-11-28 21:14:13: Detenido zigbee-herdsman
Hola Schlikkes,
Probablemente el problema es que no has instalado un servidor MQTT.
Yo tampoco lo mencioné muy claramente en el artículo (y ahora lo he ajustado un poco), gracias.
Encontrará el artículo aquí: https://nerdiy.de/de_de/mosquitto-auf-der-himbeere-mqtt-server-auf-dem-raspberrypi-installieren/
Atentamente
Fabian