30-12-2022, 08:24 PM
(This post was last modified: 03-02-2023, 11:36 PM by Ganekogorta.)
Hola
Vamos a describir como instalar tres contenedores distintos para la gestión de dispositivos zigbee de cara domotizar un entorno.
Inicialmente con tener sólo HomeAssistant y un adaptador wifi para comunicarse con los dispositivos, nos serviría.
Pero vamos a usar un contenedor llamado zigbee2mqtt.
Este contenedor aporta un entorno más abierto, extendido e independiente se HA de cara a la adicción de dispositivos.
La gran ventaja es que podemos hacer cambios y reinicios en Home Assitant, y no afecta a los dispositivos y la red que se ha formado entre ellos, ya que estos quedan gestionados por zigbee2mqtt.
Y el tercer docker llamado MQTT (mosquito) es para intercomunicar los otros dos.
MQTT aparece como una integración de Home Assistant.
Todos los contenedores van a usar carpetas persistentes que se crearán en la carpeta compartida DockerData de QTS.
Las carpetas que se crean, serán homeassistant, mosquitto y zigbee2mqtt.
En los ejemplos, estarán dentro de la carpeta compartida de QTS llamada DockerData.
Vamos a comenzar con el docker de HomeAssistant (HA)
Usamos el puerto 8123 para acceder a su web, la primera vez nos pide crear un usuario, y dar datos de nuestra instalación.
Es importante que esté el parámetro -- privileged, si no está no dejará detectar/agregar dispositivos. Aunque en nuestro caso lo haremos desde zigbee2mqtt.
Si ya tenemos un adaptador wifi que nos haga de pasarela, HomeAssistant nos lo sugerirá para añadir y gestionar los dispositivos ZigBee que tengamos, pero NO no lo vamos a hacer ya que tenemos previsto hacerlo con otro docker.
El archivo configuration.yaml tendrá un contenido similar a éste
Para el despliegue del docker de MQTT lanzamos la siguiente cadena
Simplemente definimos los puertos que usará y las carpetas persistentes.
El contenido del archivo de configuración de mosquitto /share/DockerData/mosquitto/conf/mosquito.conf es el siguiente:
La última línea hace que puedan acceder sólo los usuarios que creamos en el contenedor. Es decir añadimos una pequeña capa de seguridad para evitar que otros usuarios puedan acceder a nuestro MQTT.
Para crear usuarios de mosquito nos metemos en el docker con el siguiente comando
Luego lanzamos este otro para crear al usuario de nombre "usuario"
Nos pedirá la clave y dejará el nombre y su clave cifrada dentro del archivo mosquitto.passwd.
Ese nombre y la clave que dimos, habremos de usarla a la hora de agregarlo como integración desde Home Assistant (Ajustes, dispositivos y servicios)
Ahora vamos a definir el docker de zigbee2mqtt
Para hacer pruebas he usado una pasarela de Sonoff modelo ZBDongle Zigbee 3.0 USB Dongle Plus.
Pero antes hemos de asegurarnos que nuestra pasarela usb está asociada a un puerto serie y para añadir un poco mas de dificultad hemos de crear un archivo especial sin búferes e insertar unos módulos en el kernel que no son permanentes y no sobreviven a los reinicios de QTS.
Primero comprobaremos si tenemos o no tres archivos en nuestro QTS. Con un "ls" por archivo nos servirá para saber si los tenemos.
Si alguno de ellos no nos aparece, habremos de crearlos.
Los comandos que tenemos que hacer para crear los tres son:
Me he encontrado nas que tienen los dos últimos, y otras que tienen sólo el segundo archivo.
En cualquier caso, hay que agregar en el inicio de la nas para que los archivos que nos faltan, sean creados de forma automática.
Para eso usaremos el autoexec.sh de QTS y agregaremos de las tres líneas anteriores, las que necesitemos en nuestros archivo.sh
Una vez existan los tres archivos, podemos ejecutar la cadena de creación del docker:
----
Nota:
He visto que en algún modelo de nas no funciona bien cuando creamos el archivo ttyUSB0 y he encontrado un paquete qpkg que los agrega.
Ha sido bajado de qnapclu.eu, pero como suele tener bastantes caídas agrego este enlace de mega con el qpkg.
gracias a Oroimenak por avisarme de ello.
----
Luego detenemos el contenedor con
modificamos el archivo zigbee2mqtt-data/configuration.yaml con el siguiente contenido:
Lo de permit_join: true es algo temporal para permitir agregar los dispositivos ZigBee que tengamos, pero una vez agregados en zigbee2mqtt, lo cambiaremos a false.
Luego arrancamos de nuevo el docker con
Vamos por un navegador web a la dirección http://ip_de_la_nas:9250 y se nos presentará la web de zigbee2mqtt
Si ponemos un dispositivo en modo descubrimiento, lo veremos en la lista y podremos ir renombrarlos y describiéndolos a nuestro gusto.
Zigbee2mqtt está bastante al día y nos presentará el fabricante y su catálogo
incluso una imagen del tipo de dispositivo que ha detectado
Si ya hemos agregado en HomeAssistant a MQTT, veremos que esos dispositivos ya están accesibles y podemos hacer mas gestiones, automatizaciones e interaccionar con eventos y otros integradores desde Home Assistant.
En función del tipo de dispositivo que coloquemos podemos automatizar y domotizar infinidad de cosas.
Hay sensores de apertura de puertas/ventanas, detectores de presencia, pulsadores, interruptores eléctricos con y sin control de consumo, sensores de temperatura, humedad y viento, ...
Y con reglas mas o menos sencilla podemos hacer reglas del tipo:
-si hay mas de x velocidad del viento, se recoja el toldo de la terraza.
-si es de noche (sabe cuando anochece), sabe por nuestro móvil que estamos en las cercanías y detecta que hay movimiento en determinada habitación, que se active esa luz,...
-que apague luces cuando no haya nadie en casa y conecte las videocámaras.
- o lo que se nos ocurra con nuestros sensores y dispositivos.
Convienen echar una ojeada a otro hilo, Oroimenak. Que cuenta como instalar el componente HACS.
Vamos a describir como instalar tres contenedores distintos para la gestión de dispositivos zigbee de cara domotizar un entorno.
Inicialmente con tener sólo HomeAssistant y un adaptador wifi para comunicarse con los dispositivos, nos serviría.
Pero vamos a usar un contenedor llamado zigbee2mqtt.
Este contenedor aporta un entorno más abierto, extendido e independiente se HA de cara a la adicción de dispositivos.
La gran ventaja es que podemos hacer cambios y reinicios en Home Assitant, y no afecta a los dispositivos y la red que se ha formado entre ellos, ya que estos quedan gestionados por zigbee2mqtt.
Y el tercer docker llamado MQTT (mosquito) es para intercomunicar los otros dos.
MQTT aparece como una integración de Home Assistant.
Todos los contenedores van a usar carpetas persistentes que se crearán en la carpeta compartida DockerData de QTS.
Las carpetas que se crean, serán homeassistant, mosquitto y zigbee2mqtt.
En los ejemplos, estarán dentro de la carpeta compartida de QTS llamada DockerData.
Vamos a comenzar con el docker de HomeAssistant (HA)
Code:
docker run -d --name homeassistant --privileged -p 8123:8123 --restart=unless-stopped -e TZ=Europe/Madrid -v /share/DockerData/homeassistant:/config ghcr.io/home-assistant/home-assistant:stable
Usamos el puerto 8123 para acceder a su web, la primera vez nos pide crear un usuario, y dar datos de nuestra instalación.
Es importante que esté el parámetro -- privileged, si no está no dejará detectar/agregar dispositivos. Aunque en nuestro caso lo haremos desde zigbee2mqtt.
Si ya tenemos un adaptador wifi que nos haga de pasarela, HomeAssistant nos lo sugerirá para añadir y gestionar los dispositivos ZigBee que tengamos, pero NO no lo vamos a hacer ya que tenemos previsto hacerlo con otro docker.
El archivo configuration.yaml tendrá un contenido similar a éste
Code:
default_config:
tts:
- platform: google_translate
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
mqtt:
discovery: true
birth_message:
topic: 'homeassistant/status'
payload: 'online'
will_message:
topic: 'homeassistant/status'
payload: 'offline'
Para el despliegue del docker de MQTT lanzamos la siguiente cadena
Code:
docker run -d --name=mosquitto -p 1883:1883 -p 9001:9001 --privileged -v /share/DockerData/mosquitto/conf:/mosquitto/config -v /share/DockerData/mosquitto/data:/mosquitto/data -v /share/DockerData/mosquitto/log:/mosquitto/log eclipse-mosquitto
Simplemente definimos los puertos que usará y las carpetas persistentes.
El contenido del archivo de configuración de mosquitto /share/DockerData/mosquitto/conf/mosquito.conf es el siguiente:
Code:
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
password_file /mosquitto/config/mosquitto.passwd
listener 1883
allow_anonymous false
La última línea hace que puedan acceder sólo los usuarios que creamos en el contenedor. Es decir añadimos una pequeña capa de seguridad para evitar que otros usuarios puedan acceder a nuestro MQTT.
Para crear usuarios de mosquito nos metemos en el docker con el siguiente comando
Code:
docker exec -it contenedor /bin/sh
Luego lanzamos este otro para crear al usuario de nombre "usuario"
Code:
mosquitto_passwd -c /mosquitto/config/mosquitto.passwd usuario
Ese nombre y la clave que dimos, habremos de usarla a la hora de agregarlo como integración desde Home Assistant (Ajustes, dispositivos y servicios)
Ahora vamos a definir el docker de zigbee2mqtt
Para hacer pruebas he usado una pasarela de Sonoff modelo ZBDongle Zigbee 3.0 USB Dongle Plus.
Pero antes hemos de asegurarnos que nuestra pasarela usb está asociada a un puerto serie y para añadir un poco mas de dificultad hemos de crear un archivo especial sin búferes e insertar unos módulos en el kernel que no son permanentes y no sobreviven a los reinicios de QTS.
Primero comprobaremos si tenemos o no tres archivos en nuestro QTS. Con un "ls" por archivo nos servirá para saber si los tenemos.
Code:
ls /dev/ttyUSB0
ls /usr/local/modules/usbserial.ko
ls /usr/local/modules/cp210x.ko
Si alguno de ellos no nos aparece, habremos de crearlos.
Los comandos que tenemos que hacer para crear los tres son:
Code:
mknod /dev/ttyUSB0 c 188 0
insmod /usr/local/modules/usbserial.ko
insmod /usr/local/modules/cp210x.ko
Me he encontrado nas que tienen los dos últimos, y otras que tienen sólo el segundo archivo.
En cualquier caso, hay que agregar en el inicio de la nas para que los archivos que nos faltan, sean creados de forma automática.
Para eso usaremos el autoexec.sh de QTS y agregaremos de las tres líneas anteriores, las que necesitemos en nuestros archivo.sh
Una vez existan los tres archivos, podemos ejecutar la cadena de creación del docker:
Code:
docker run -d --name zigbee2mqtt --restart=unless-stopped -e TZ=Europe/Madrid -v /share/DockerData/zigbee2mqtt/data:/app/data -v /run/udev:/run/udev:ro --device=/dev/ttyUSB0:/dev/ttyUSB0 -p 9250:8080 --privileged koenkk/zigbee2mqtt:latest
----
Nota:
He visto que en algún modelo de nas no funciona bien cuando creamos el archivo ttyUSB0 y he encontrado un paquete qpkg que los agrega.
Ha sido bajado de qnapclu.eu, pero como suele tener bastantes caídas agrego este enlace de mega con el qpkg.
gracias a Oroimenak por avisarme de ello.
----
Luego detenemos el contenedor con
Code:
docker stop zigbee2mqtt
modificamos el archivo zigbee2mqtt-data/configuration.yaml con el siguiente contenido:
Code:
homeassistant: true
permit_join: true
mqtt:
base_topic: zigbee2mqtt
server: mqtt://ip_nas_donde_este_mosquitto:1883
user: usuario_de_mosquito
password: clave_usuario_de_mosquito
version: 5
include_device_information: true
serial:
port: /dev/ttyUSB0
advanced:
pan_id: 9876
channel: 15
log_directory: /var/log/zigbee2mqtt
homeassistant_legacy_entity_attributes: false
legacy_api: false
legacy_availability_payload: false
experimental: {}
frontend:
port: 8080
host: 0.0.0.0
update_check_interval: 10
device_options:
legacy: false
Lo de permit_join: true es algo temporal para permitir agregar los dispositivos ZigBee que tengamos, pero una vez agregados en zigbee2mqtt, lo cambiaremos a false.
Luego arrancamos de nuevo el docker con
Code:
docker start zigbee2mqtt
Vamos por un navegador web a la dirección http://ip_de_la_nas:9250 y se nos presentará la web de zigbee2mqtt
Si ponemos un dispositivo en modo descubrimiento, lo veremos en la lista y podremos ir renombrarlos y describiéndolos a nuestro gusto.
Zigbee2mqtt está bastante al día y nos presentará el fabricante y su catálogo
incluso una imagen del tipo de dispositivo que ha detectado
Si ya hemos agregado en HomeAssistant a MQTT, veremos que esos dispositivos ya están accesibles y podemos hacer mas gestiones, automatizaciones e interaccionar con eventos y otros integradores desde Home Assistant.
En función del tipo de dispositivo que coloquemos podemos automatizar y domotizar infinidad de cosas.
Hay sensores de apertura de puertas/ventanas, detectores de presencia, pulsadores, interruptores eléctricos con y sin control de consumo, sensores de temperatura, humedad y viento, ...
Y con reglas mas o menos sencilla podemos hacer reglas del tipo:
-si hay mas de x velocidad del viento, se recoja el toldo de la terraza.
-si es de noche (sabe cuando anochece), sabe por nuestro móvil que estamos en las cercanías y detecta que hay movimiento en determinada habitación, que se active esa luz,...
-que apague luces cuando no haya nadie en casa y conecte las videocámaras.
- o lo que se nos ocurra con nuestros sensores y dispositivos.
Convienen echar una ojeada a otro hilo, Oroimenak. Que cuenta como instalar el componente HACS.
Un saludo
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
Agur eta ondo ibili
Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η