Sensor / termostato Aqara W100 Sensor de temperatura y humedad Zigbee Matter Thread

He probado con

sudo docker run \
   --name gladys-z2m-zigbee2mqtt \
   --restart=unless-stopped \
   --network=host \
   --device=/dev/serial/by-id/usb-1a86_TubesZB_971207DO-if00-port0 \
   -v /var/lib/gladysassistant/zigbee2mqtt/z2m:/app/data \
   -v /run/udev:/run/udev:ro \
   -e TZ=Europe/Paris \
   ghcr.io/koenkk/zigbee2mqtt:2.3.0

Sigue dando error de conexión.

He añadido

--cgroupns=host \

Igual

--group-add dialout \

Igual

--privileged \

Igual

--user 1001:1001 \
--group-add dialout \

Error: EACCES: permission denied, mkdir ‹ /app/data/log/2025-05-19.22-57-37 ›
at Object.mkdirSync (node:fs:1364:26)
at Logger.init (/app/lib/util/logger.ts:75:16)
at new Controller (/app/lib/controller.ts:46:16)
at start (/app/index.js:147:18)

Por lo tanto, sigue sin conexión a mqtt

Acabo de ir a ver lo que puse para node-red.
Hay

--privileged \
-u root \
--network=host \

Tendré que probar, ya que no es Gladys quien hace la instalación de zigbee2mqtt, puede que haya incompatibilidad de permisos en los archivos.

Bueno, eso no funcionó.
He puesto comillas alrededor de la contraseña y el usuario como se menciona aquí
MQTT failed to connect: Connection refused: Not authorized · Issue #11148 · Koenkk/zigbee2mqtt · GitHub

En Integración > Configuración > MQTT

La contraseña no coincide con la registrada en mi archivo configuration.yaml de zigbee2mqtt, ¿es normal?
Lo he intentado cambiar pero aún no hay conexión.
También me pregunto si he puesto el puerto correcto

También noto que en mis intentos, si vuelvo a poner

sudo docker run \
   --name gladys-z2m-zigbee2mqtt \
   --restart=unless-stopped \
   --device=/dev/serial/by-id/usb-1a86_TubesZB_971207DO-if00-port0 \
   -p 8080:8080 \
   -v /var/lib/gladysassistant/zigbee2mqtt/z2m:/app/data \
   -v /run/udev:/run/udev:ro \
   -e TZ=Europe/Paris \
   ghcr.io/koenkk/zigbee2mqtt:2.3.0

He obtenido

error: 	z2m: MQTT failed to connect, exiting... ()

Y no

error: 	z2m: MQTT failed to connect, exiting... (Connection refused: Not authorized)

Sí, es normal, Gladys lanza 2 contenedores Mosquitto distintos, uno para la integración MQTT y otro para la integración Zigbee2mqtt, no es el mismo broker.

El de la integración Zigbee2mqtt está disponible en el puerto 1884.

Si no pones network=host, físicamente no puede funcionar :slight_smile: Gladys debe poder acceder al contenedor mosquitto.

@pierre-gilles
Cuando se « Activar o desactivar el servicio » de « Configuración del servicio Zigbee2mqtt »
¿Esto cambia la contraseña, porque noto que no es la misma que tengo en producción en comparación con la que tengo en la copia de seguridad. En resumen, probablemente he realizado todas mis pruebas con una contraseña incorrecta.

Esta vez con la contraseña correcta funcionó la segunda vez, la primera tuve el problema de los 600 ms.

Los enchufes NOUS y un interruptor inteligente D2Z NOUS también piden una actualización, he visto que aún no lo has hecho y que funciona, así que espero, probaré con un enchufe no crucial.

Genial, ¡me alegro de que haya funcionado! ¿El termostato Aqara se gestiona bien entonces?

Para los enchufes NOUS, es el Child Lock el que desaparece de Gladys como lo he puesto aquí.
De mi parte no he hecho la actualización porque el Child Lock solo será accesible a través de la interfaz de z2m.

Un poco de lectura sobre la prueba del Aqara W100.

Sí




Sin embargo, el botón para autorizar la asociación no ha querido funcionar;
Si lo activaba en Gladys, en zigbee2mqtt aparecía desactivado.

No he intentado configurar el termostato, de momento tengo un problema con una electroválvula

Que no era reconocida y había encontrado una extensión externa para hacerla funcionar.
Pero ahora en la versión 2.3.0 mi archivo está vacío con una extensión .invalide al final.
No he encontrado ningún archivo modificado para la versión 2.3.0
Esta válvula inunda mi caldera de pellets si la temperatura supera un cierto umbral.
Probablemente tendré que cambiarla, si conocen alguna que funcione bien, sea reactiva y no se desconecte inesperadamente, estaré encantado de probarla.

¡Vale, gracias por el comentario! Seguro que hay que hacer algunos ajustes en Gladys con esta nueva versión de Zigbee2mqtt :slight_smile:

Mientras tanto, ¡usa el botón de emparejamiento en Zigbee2mqtt!

Bueno, he pedido esta:

Pero @pierre-gilles, si pudieras añadir en Gladys, a la izquierda de nuestro nombre y foto, por ejemplo, un botón « Tienda » con los enlaces de afiliados que redirijan a Amazon, domadoo, tu mini PC Gladys+.
Porque aún he tenido que ir a buscar en el foro para saber qué código añadir al enlace de domadoo, ahí sería directo.

@pierre-gilles tengo un problema grave.
He saltado los plomos, por lo que no hay corriente para Gladys.
Al reiniciar, Gladys me ha instalado la versión 1.42.0
y zigbee2mqtt está en problemas porque el archivo configuration.yaml es para la 2.3.0

argh no es genial :frowning:
Para evitar todos estos inconvenientes, paso por docker compose y portainer.
Docker compose me permite poner lo que quiero y fijar las versiones, y portainer me permite gestionar todo eso con una interfaz gráfica agradable (con acceso a los registros, estadísticas de cpu/ram/disco, etc.).
Crea una vez el repositorio para portainer:

docker volume create portainer_data

Y el docker run que lanzas es:

docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Luego puedes conectarte a http://monipdemachine:9000
He creado una Stack llamada gladys-assistant donde he puesto dentro el docker compose:

version: "3"

services:
  gladys:
    image: gladysassistant/gladys:v4
    container_name: gladys
    restart: always
    privileged: true
    network_mode: host
    cgroup: host
    logging:
      driver: "json-file"
      options:
        max-size: 10m
    environment:
      NODE_ENV: production
      SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
      SERVER_PORT: 80
      TZ: Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/gladysassistant:/var/lib/gladysassistant
      - /dev:/dev
      - /run/udev:/run/udev:ro

  watchtower:
    image: containrrr/watchtower
    restart: always
    container_name: watchtower
    command: --cleanup --include-restarting
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

et a esto puedes añadir tu Matterbridge, tu z2m dedicado, tu broker MQTT, tu zwavejs-ui, node-red, etc. si bien, por supuesto, quieres gestionarlo en lugar de Gladys.

  matterbridge:
    container_name: matterbridge
    image: luligu/matterbridge:latest # Matterbridge image with the latest tag
    network_mode: host # Ensures the Matter mdns works
    restart: always # Ensures the container always restarts automatically
    volumes:
      - "${HOME}/Matterbridge:/root/Matterbridge" # Mounts the Matterbridge plugin directory
      - "${HOME}/.matterbridge:/root/.matterbridge" # Mounts the Matterbridge storage directory

  zigbee2mqtt:
    image: koenkk/zigbee2mqtt:2.2.1
#    image: koenkk/zigbee2mqtt:1.42.0
    container_name: zigbee2mqtt
    restart: unless-stopped
    environment:
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      - NODE_ENV=production
      - TZ=Europe/Berlin
    volumes:
      - ./data:/app/data:rw
      - /run/udev:/run/udev:ro
    ports:
      - 12000:12000
    network_mode: host
    devices:
        # Make sure this matched your adapter location
        - /dev/serial/by-id/usb-Txxxxxxxyyyyyyyy:/dev/ttyACM0
# run a rootless container with Docker Compose by adding the following attributes
    # group_add:
    #     - dialout
    # user: 1000:1000

Estos son ejemplos que debemos ajustar a nuestra configuración y, en particular, en la creación de estos directorios.

En cualquier caso, es lo que hago y funciona bastante bien en mi casa, puedo « jugar » con las diferentes versiones, siempre haciendo una copia de seguridad antes.
Con este método también puedo crear un gladys de prueba, por ejemplo:

version: '3'

services:
  gladys:
#    image: cicoub13/gladys:tuya-rain
    image: gladysassistant/gladys:matter-integration
#    image: sescandell/gladys-test:zjs-battery
#    image: sescandell/gladys-test:pr-zwaveJsMeter
#    image: gladysassistant/gladys:zigbee2mqtt-tuya-me201wz
#    image: gladysassistant/gladys:dashboad-add-other-aggregate-functions
    container_name: gladys-test
    restart: always
    privileged: true
    network_mode: host
    logging:
      driver: "json-file"
      options:
        max-size: 10m
    environment:
      NODE_ENV: production
      SQLITE_FILE_PATH: /var/lib/gladysassistant/gladys-production.db
      SERVER_PORT: 8001
      TZ: Europe/Paris
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./gladysassistant-test:/var/lib/gladysassistant
      - /dev:/dev
      - /run/udev:/run/udev:ro

  mosquitto:
    image: eclipse-mosquitto:2.0.20
    container_name: gladys-test-mqtt
    restart: unless-stopped
#    command: mosquitto -c /mosquitto-no-auth.conf
    environment:
      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      - VERSION=2.0.20
      - DOWNLOAD_SHA256=azszderzbenrac6
      - GPG_KEYS=azszderzbenr
      - LWS_VERSION=4.2.1
      - LWS_SHA256=azszderzbenr
    volumes:
      - ./mqtt-test/config:/mosquitto/config:rw
      - ./mqtt-test/data:/mosquitto/data:rw
      - ./mqtt-test/log:/mosquitto/log:rw
    ports:
      - 1888:1888
    network_mode: host

  matterbridge:
    image: luligu/matterbridge:latest
    container_name: gladys-test-matterbridge
    restart: always
    network_mode: host
    volumes:
      - ./matterbridge-test/Matterbridge:/root/Matterbridge
      - ./matterbridge-test/.matterbridge:/root/.matterbridge

Para tu caso, creo que sería bueno gestionar z2m desde allí.
Sin embargo, debes desactivar la gestión de z2m por Gladys, luego haces tu portainer, inicias una pila (con z2m con 2.3.0 para la versión, por ejemplo) y la lanzas. Luego vuelves a Gladys y añades tu docker externo z2m:


Espero que recuperes todos tus pequeños.

He hecho tantas reinstalaciones que solo me toma 5 minutos hacer una nueva,
Tengo todos los comandos en un archivo.

y yo 5s :joy:

Tengo que instalar el docker en otro lugar que no sea /var/lib/gladysassistant/zigbee2mqtt/z2m
Porque no funcionó
Tengo
error: z2m: MQTT no pudo conectar, saliendo... (connect ECONNREFUSED 127.0.0.1:1884)

@mutmut no sé por qué había visto que el final de tu mensaje.
Por lo tanto, como no había funcionado, volví a instalar desde Gladys
Tuve que volver a indicar dónde estaba conectado mi coordinador y el modelo, pero el puerto se cambió automáticamente a 12000
Recuperé un Gladys funcional pero zigbee2mqtt en 12000
en versión 1.42.0 seleccioné conexión a una instalación existente, ingresé la dirección IP para mqtt
Detuve el docker, modifiqué el archivo configuration.yaml, eliminé docker e instalé la 2.3.0 primera tentativa error 600ms elimino docker vuelvo a instalar y funciona.
Desconecto mi MiniPC para simular un corte de energía y se reinicia en 2.3.0
Por lo tanto, está OK

Bueno, empecé a configurar mi W100

El objetivo es gestionar el control de la calefacción de un radiador eléctrico (tipo tostadora) del baño por los clientes.

De arriba a abajo
He creado un dispositivo MQTT ficticio termostato al que he llamado:
ref-temperature-sb-chambre-6
El valor actual es de 27° C
Debajo, el interruptor NOUS 4-1-20
Que proporciona o no corriente al radiador eléctrico.
Luego la intensidad de la señal del interruptor NOUS 4-1-20
A continuación, la temperatura de la habitación registrada por el W100 aquí 77.2 °F (ver explicación aquí)
Luego el valor de humedad registrado por el W100
El botón central del W100
y para terminar la intensidad de la señal del W100

He creado una escena Contador temperatura Ch6
con el disparador de la presión del botón + del W100
en la configuración he elegido Botón Más presionado

Luego recupero el valor de referencia de la temperatura deseada en mi termostato ficticio.

Continuo el procedimiento si el valor es inferior a 35°C

Verificación del buen funcionamiento de la escena;
Me envío por telegrama el valor recuperado del termostato y espero 1 segundo para continuar.

Añado +1 al valor de mi termostato

Recupero el nuevo valor de mi termostato

Verificación del buen funcionamiento de la escena;
Me envío por telegrama el nuevo valor recuperado del termostato.

Lo pruebo, no funciona.
Modifico el disparador por un botón clic simple Xiaomi.
Funciona, el valor de mi termostato se incrementa en 1, de 27°C pasa a 28°C
Quería hacer luego una escena que compare el valor de referencia con el valor de la temperatura de la habitación y, en función de ello, active o no el interruptor NOUS 4-1-20.
Y tratar de mostrar el valor de la temperatura de referencia en el W100 como se muestra la temperatura del agua de la piscina en el enlace compartido por @mutmut

Un poco de lectura sobre la prueba del Aqara W100.

El problema seguramente viene del (clic del botón) del W100 que devuelve Ningún valor registrado en Gladys.
en zigbee2MQTT tenemos

Presión del botón Resultado Zgbee2MQTT Liberación del botón Resultado Zgbee2MQTT
Botón + 1 presión corta single_plus
Botón centro 1 presión corta single_center
Botón - 1 presión corta single_minus
Botón + 2 presiones cortas double_plus
Botón centro 2 presiones cortas double_center
Botón - 2 presiones cortas double_minus
Botón + 1 presión larga hold_plus Botón + liberación larga release_plus
Botón centro 1 presión larga hold_center Botón centro liberación larga release_center
Botón - 1 presión larga hold_minus Botón - liberación larga release_minus

Según yo no funcionará así directamente porque no se puede enviar un cálculo a un sensor.
Te aconsejo echar un vistazo al tutorial de @prohand sobre la domotización del lavavajillas.
De hecho, necesitarás crear 2 funcionalidades para tu temperatura del termostato: 1 para obtener la temperatura (sensor), 1 para hacer los cálculos (actuador).
En el tutorial, se llama sender (sensor) y listener (actuador).

EDITO: después de releer tu mensaje, parece que funciona porque obtienes 28 después del +1.
Si te envías por telegram el valor de tu botón, ¿qué número te devuelve? (no devolverá el resultado z2m sino un número normal)
Si no hay nada, entonces hay que crear un nuevo tema para añadir las especificaciones del Aqara W100 en Gladys.

Esto es lo que me devuelve mi escena a través de Telegram con el clic del botón Xiaomi

Y en el panel de control, el valor de mi termostato ficticio ha aumentado.

Al hacer clic en W100 no ocurre nada, no hay notificación de Telegram y la escena no se activa.