Contenido
Zigbee2MQTT (Z2M)
Si miráis por ahí artículos sobre el uso de Z2M en Home Assistant veréis que la mayoría lo hacen sobre la versión Supervisada de HA por lo que tienen acceso a los «add-ons». Nosotros que seguimos utilizando la versión de HA en contenedores no podemos hacer lo mismo por lo que nos ha tocado crear los correspondientes dockers para Mosquitto y otra más para el Zigbee2MQTT propiamente dicho.
Instalación de Mosquitto
Mosquitto es sin duda el «broker» MQTT open source y multiplataforma más utilizado en la actualidad.
Podéis ver en el código del correspondiente fichero yaml que hemos decidido instalar la versión 1.6 de mosquitto en lugar de la más actual. A partir de la versión 2.0 se «complica» demasiado el tema de seguridad que inicialmente no es un tema que nos preocupe demasiado.
1 2 3 4 5 6 7 8 9 10 11 12 13 | services: mqtt: container_name: mosquitto image: eclipse-mosquitto:1.6 # image: eclipse-mosquitto:latest ports: - "1883:1883" - "9001:9001" volumes: - /opt/mydockers/mosquitto/config:/mqtt/config - /opt/mydockers/mosquitto/log:/mqtt/log - /opt/mydockers/mosquitto/data/:/mqtt/data restart: unless-stopped |
Para terminar la configuración de este contenedor basta con modificar ligeramente el fichero mosquitto.conf indicando que permita acceso de anónimos allow_anonymous true … por cuanto (valientes de nosotros) no hemos puesto ni usuario ni contraseña al servicio de MQTT.
1 2 3 4 5 6 7 8 9 10 11 12 | pi@PalmShell:~$ cd /opt/mydockers/mosquitto pi@PalmShell:/opt/mydockers/mosquitto$ ls config data log pi@PalmShell:/opt/mydockers/mosquitto$ cd config pi@PalmShell:/opt/mydockers/mosquitto/config$ ls mosquitto.conf mosquitto.passwd pi@PalmShell:/opt/mydockers/mosquitto/config$ cat mosquitto.conf persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log password_file /mosquitto/config/mosquitto.passwd allow_anonymous true |
Instalación del docker de Zigbee2MQTT
En este hemos tenido más problemas y tampoco hemos encontrado ningún experto que nos pudiese echar una mano ya que utilizando la instalación usando los «add-ons» y un coordinador tipo USB es más sencillo.
En cualquier caso este es el fichero correspondiente al compose válido para usar docker y coordinador conectado vía Ethernet (wifi ó red cableada)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | version: '3.8' services: zigbee2mqtt: container_name: zigbee2mqtt image: koenkk/zigbee2mqtt:latest restart: unless-stopped volumes: - /opt/mydockers/zigbee2mqtt/data:/app/data - /run/udev:/run/udev:ro ports: - 8080:8080 # Puerto para la interfaz web environment: - TZ=Europe/Madrid network_mode: host |
Como se puede ver, a diferencia de cuando se usa USB cuyo puerto se define en la configuración del contenedor en este caso la configuración viene, como parece lógico, en el correspondiente fichero de configuración
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | homeassistant: true permit_join: true frontend: true mqtt: base_topic: zigbee2mqtt server: mqtt://localhost include_device_information: true keepalive: 60 reject_unauthorized: true version: 4 serial: port: tcp://192.168.10.20:6638 baudrate: 115200 advanced: transmit_power: 20 |
Justo al final del fichero es donde se incluyen los parámetros de configuración del puerto serie ocupado por el Coordinador Z2C que, en nuestro caso, corresponde a la IP 192.168.10.20, puerto 6638 tal y como se puede ver en la pestaña de ayuda a la configuración de Coordinador tal y como ya habíamos visto antes.
Sin más que cargar la integración MQTT «automágicamente» se empezarán a cargar los correspondientes dispositivos, etc, etc.
Tal y como decíamos al principio la información a la que tiene acceso esta integración es superior a la (más sencilla) de HomeAssistant. Por ejemplo, existe una visualización vía WEB que te permite ver detalles de los correspondientes dispositivos Zigbee conectados donde cambiar, por ejemplo, su nombre.
Incluso se tiene acceso a los datos recogidos sin necesidad de disponer de visualización alguna en Home Assistant y así se puede ver un consumo actual de 0.08A y no de cientos como se veía en la integración anterior.
También la batería del sensor LUMI se ve con una batería casi totalmente llena como sería de esperar y no como aparecía antes. Incluso aparece una ristra inmensa de caracteres alfanuméricos en el apartado de código aprendido en el Universal Remote Control de MOES que también hemos comprado para automatizar el AC de la casa del pueblo.
La posibilidad de ver un «mapa» de los diferentes cacharritos en nuestra red sería interesante si dispusiésemos de muchos más sensores y/o coordinadores ¿no?
También la posibilidad de poder actualizar vía OTA la versión del firmware de los diferentes dispositivos desde una única pantalla es algo de agradecer.
3314