Ubuntu/Docker - Zigbee2mqtt est en train de m'achever!

Le contexte

Bonjour la communauté,
J’ai découvert HA il y a qq mois (HAOS sur une rpi 3 qui fonctionnait nickel!).
J’ai franchi le cap fin aout en achetant un petit HP ProDesk pour y faire tourner Ubuntu (actuellement 22.04.3 LTS) et installer mon HA avec docker (Que je découvre…)

Mon problème

Je tente sans succès depuis plus d’une semaine de faire fonctionner un container zigbee2mqtt…
Ma configuration actuelle est un stack avec les services suivants:

  • portainer
  • homeassistant
  • mosquitto
  • nodered (que je n’ai pas encore utilisé mais j’ai un front end qui fonctionne j’imagine que c’est deja pas mal)
  • vscode

Initialement pour problème étant que je n’arrivais pas à accéder au frontend de zigbee2mqtt…
J’ai cherché sans succés un moment puis j’ai eu la bonne idée de mettre à jour les paquets d’Ubuntu…au cas où…
Depuis je n’arrive même plus à me connecter à mosquitto… Z2M reste indéfiniment bloqué sur

> Connecting to MQTT server at mqtt://xxxxx  

:exploding_head:

Voilà le log au complet:

Using '/app/data' as data directory
> Zigbee2MQTT:info  2023-09-24 16:17:49: Logging to console and directory: '/app/data/log/2023-09-24.16-17-49' filename: log.txt
> Zigbee2MQTT:info  2023-09-24 16:17:49: Starting Zigbee2MQTT version 1.33.0 (commit #7ee207f)
> Zigbee2MQTT:info  2023-09-24 16:17:49: Starting zigbee-herdsman (0.18.5)
> Zigbee2MQTT:info  2023-09-24 16:17:51: zigbee-herdsman started (resumed)
> Zigbee2MQTT:info  2023-09-24 16:17:51: Coordinator firmware version: '{"meta":{"maintrel":"3 ","majorrel":"6","minorrel":"10","product":8,"revision":"6.10.3.0 build 297"},"type":"EZSP v8"}'
> Zigbee2MQTT:info  2023-09-24 16:17:51: Currently 0 devices are joined:
> Zigbee2MQTT:warn  2023-09-24 16:17:51: `permit_join` set to  `true` in configuration.yaml.
> Zigbee2MQTT:warn  2023-09-24 16:17:51: Allowing new devices to join.
> Zigbee2MQTT:warn  2023-09-24 16:17:51: Set `permit_join` to `false` once you joined all devices.
> Zigbee2MQTT:info  2023-09-24 16:17:51: Zigbee: allowing new devices to join.
> Zigbee2MQTT:info  2023-09-24 16:17:52: Connecting to MQTT server at mqtt://192.168.8.200

Mon mosquitto fonctionne sans soucis avec les quelques module tasmota dont je dispose et je m’y connecte sans soucis via MQTT Explorer…

Avant ma bonne idée de mise a jour des paquets… j’y voyais même des messages estampillés zigbee2mqtt :sob:

Est ce que ça inspire quelqu’un?
J’imagine qu’on ne peut pas vraiement imaginer revenir en arrière dans la mise a jour de paquets… :expressionless:
Merci ++ pour votre aide!

Voila le contenu de mon docker-compose.yaml (j’ai viré le code concernant nodered et vscode pour alléger un peu…

version: '3.0'

services:
  portainer:
    container_name: portainer
    image: portainer/portainer-ce
    restart: always
    ports:
      - "9000:9000/tcp"
    environment:
      - TZ=Europe/London
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /opt/portainer:/data

  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /opt/homeassistant/config:/config
      - /etc/localtime:/etc/localtime:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    depends_on:
      - mosquitto
      - vscode

  zigbee2mqtt:
    container_name: zigbee2mqtt
    image: koenkk/zigbee2mqtt
    restart: unless-stopped
    volumes:
      - /opt/zigbee2mqtt/data:/app/data
      - /run/udev:/run/udev:ro
    ports:
      - 8080:8080
    environment:
      - TZ=Europe/Berlin
    devices:
      # Make sure this matched your adapter location
      - /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221029150352-if00:/dev/ttyACM0

  mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    volumes:
      - /opt/mosquitto:/mosquitto
      - /opt/mosquitto/data:/mosquitto/data
      - /opt/mosquitto/log:/mosquitto/log
    restart: always
    ports:
      - 1883:1883
      - 9001:9001

et le contenu de mon fichier de config de zigbee2mqtt:

# Home Assistant integration (MQTT discovery)
homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.8.200'
  #server: '!secret.yaml server'
  user: '!secret.yaml user'
  password: '!secret.yaml password'

# Serial settings
serial:
  port: /dev/ttyACM0
  adapter: ezsp

Ma configuration

version core-2023.8.3
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.11.4
os_name Linux
os_version 6.2.0-33-generic
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 1
resources 0
views 2
mode storage
Recorder
oldest_recorder_run 16 septembre 2023 à 06:07
current_recorder_run 24 septembre 2023 à 14:50
estimated_db_size 189.02 MiB
database_engine sqlite
database_version 3.41.2
[/center]

Bj

a mon avis il essai de se connecté en anonyme , je crois que cela est plus possible

fais une recherche sur google/autre pour un connexion en 1883 mosquitto en anonyme.
regarde aussi sur le forum y’a deja eu les meme souci

Merci pour ton aide
J’avais effectivement vu sur internet que mosquitto refusait les connections anonymes… mais je ne sais pas bien ce que ça veux dire…
mon mosquitto est sensé autoriser les connections anonymes…j’y arrive sans pb via MQTTExplorer
Je vais continuer a creuser un peu cette hostoire de connexion anonyme!

config mosquitto:

persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883

## Authentication ##
allow_anonymous true
password_file /mosquitto/config/password.txt

Hello

Ajoute le port danz ta config mqtt de z2m

Mqtt://192.168.8.200:1883

@+

Hello,

Déjà essayé:

Using '/app/data' as data directory
Zigbee2MQTT:info  2023-09-24 18:52:42: Logging to console and directory: '/app/data/log/2023-09-24.18-52-42' filename: log.txt
Zigbee2MQTT:info  2023-09-24 18:52:42: Starting Zigbee2MQTT version 1.33.0 (commit #7ee207f)
Zigbee2MQTT:info  2023-09-24 18:52:42: Starting zigbee-herdsman (0.18.5)
Zigbee2MQTT:info  2023-09-24 18:52:47: zigbee-herdsman started (resumed)
Zigbee2MQTT:info  2023-09-24 18:52:47: Coordinator firmware version: '{"meta":{"maintrel":"3 ","majorrel":"6","minorrel":"10","product":8,"revision":"6.10.3.0 build 297"},"type":"EZSP v8"}'
Zigbee2MQTT:info  2023-09-24 18:52:47: Currently 0 devices are joined:
Zigbee2MQTT:warn  2023-09-24 18:52:47: `permit_join` set to  `true` in configuration.yaml.
Zigbee2MQTT:warn  2023-09-24 18:52:47: Allowing new devices to join.
Zigbee2MQTT:warn  2023-09-24 18:52:47: Set `permit_join` to `false` once you joined all devices.
Zigbee2MQTT:info  2023-09-24 18:52:47: Zigbee: allowing new devices to join.
Zigbee2MQTT:info  2023-09-24 18:52:47: Connecting to MQTT server at mqtt://192.168.8.200:1883

C’est la meme chose avec:
server: 'mqtt://localhost
server: 'mqtt://localhost:1883
server: 'mqtt://172.17.0.1
server: 'mqtt://172.17.0.1:1883

@+

Ta essayé avec ceci :
server: mqtt://core-mosquitto

Sinon install mqtt explorer est essai de te connecter pour voir .

Et les logs côté mosquitto après avoir lancé z2m?

J’avais deja essayé core-mosquitto et core-mosquitto:1883 c’est encore pire.
il ne trouve carrement pas l’adresse core-mosquitto

Using '/app/data' as data directory
Zigbee2MQTT:info  2023-09-24 19:17:34: Logging to console and directory: '/app/data/log/2023-09-24.19-17-33' filename: log.txt
Zigbee2MQTT:info  2023-09-24 19:17:34: Starting Zigbee2MQTT version 1.33.0 (commit #7ee207f)
Zigbee2MQTT:info  2023-09-24 19:17:34: Starting zigbee-herdsman (0.18.5)
Zigbee2MQTT:info  2023-09-24 19:17:36: zigbee-herdsman started (resumed)
Zigbee2MQTT:info  2023-09-24 19:17:36: Coordinator firmware version: '{"meta":{"maintrel":"3 ","majorrel":"6","minorrel":"10","product":8,"revision":"6.10.3.0 build 297"},"type":"EZSP v8"}'
Zigbee2MQTT:info  2023-09-24 19:17:36: Currently 0 devices are joined:
Zigbee2MQTT:warn  2023-09-24 19:17:36: `permit_join` set to  `true` in configuration.yaml.
Zigbee2MQTT:warn  2023-09-24 19:17:36: Allowing new devices to join.
Zigbee2MQTT:warn  2023-09-24 19:17:36: Set `permit_join` to `false` once you joined all devices.
Zigbee2MQTT:info  2023-09-24 19:17:36: Zigbee: allowing new devices to join.
Zigbee2MQTT:info  2023-09-24 19:17:37: Connecting to MQTT server at mqtt://core-mosquitto
Zigbee2MQTT:error 2023-09-24 19:17:37: MQTT error: getaddrinfo ENOTFOUND core-mosquitto
Zigbee2MQTT:error 2023-09-24 19:17:37: MQTT failed to connect, exiting...
Zigbee2MQTT:info  2023-09-24 19:17:37: Stopping zigbee-herdsman...
Zigbee2MQTT:info  2023-09-24 19:17:37: Stopped zigbee-herdsman

J’arrive bien à me connecter a mosquitto via MQTT-Explorer, avec un login/password que j’utilise pour les devices tasmota (cf ci dessous) ou en anonyme…

j’ai essayé toute les combinaisons imaginales et rien…

Le core-mosquitto ne fonctionne que si z2m et mosquitto sont en addon HA.

Remets mqtt avec ip:1883
Lance le et vas voir les logs côté mosquitto.
Y a certainement un reject quelque part

1 « J'aime »

Autant pour moi , j’ai zappe sa config.

l’adresse 192.168.8.200 un module

mais ton reseau sous HA est aussi en 192.168.8.xxx ou 192.168.1.xx ou 192.168.0.xxx

ok j’ai été jeté un coup d’oeil aux log de mosquitto. C’est un peu obscure pour moi…
Est ce que tu penses que mon problème pourrait être le client « unknown » qui essaye de se connecter via 172.18.0.1

1692814439: mosquitto version 2.0.17 starting
1692814439: Config loaded from /mosquitto/config/mosquitto.conf.
1692814439: Opening ipv4 listen socket on port 1883.
1692814439: Opening ipv6 listen socket on port 1883.
1692814439: mosquitto version 2.0.17 running
1692814567: New connection from 172.18.0.1:48058 on port 1883.
1692814572: Client <unknown> closed its connection.
1692814573: New connection from 172.18.0.1:46124 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46138 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46148 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46158 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46174 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46176 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46188 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46196 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46212 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814574: New connection from 172.18.0.1:46226 on port 1883.
1692814574: Client <unknown> disconnected due to protocol error.
1692814579: New connection from 172.18.0.1:46238 on port 1883.
1692814584: Client <unknown> closed its connection.
1692815029: mosquitto version 2.0.17 terminating
1692815029: Saving in-memory database to /mosquitto/data//mosquitto.db.
1692815059: mosquitto version 2.0.17 starting
1692815059: Config loaded from /mosquitto/config/mosquitto.conf.
1692815059: Opening ipv4 listen socket on port 1883.
1692815059: Opening ipv6 listen socket on port 1883.
1692815059: mosquitto version 2.0.17 running
1692815179: mosquitto version 2.0.17 terminating
1692815179: Saving in-memory database to /mosquitto/data//mosquitto.db.
1692817758: mosquitto version 2.0.17 starting
1692817758: Config loaded from /mosquitto/config/mosquitto.conf.
1692817758: Opening ipv4 listen socket on port 1883.
1692817758: Opening ipv6 listen socket on port 1883.
1692817758: mosquitto version 2.0.17 running

192.168.8.200 c’est l’IP fixe de ma machine Ubuntu qui fait tourner mon docker avec ses différents containers

L’adresse 172.18.0.1 est l’adresse de docker.
Z2m utilise cette adresse pour communiquer avec mqtt.
Je pense que c’est juste un pb de user et mot de passe.

Dans mosquitto retire l’accès anonymous.
Dans z2m tu peux mettre en server mqtt 172.18.0.1 ( autant les faire communiquer directement) et en user/mdp ceux definis dans mqtt

@+

Ca peut marcher aujourd’hui… mais pas forcément demain. Les adresses IP sur les réseaux internes de docker ne sont pas fixes (sauf si on veut le forcer et ce n’est pas le cas ici).

J’ai quasiment la même config avec cette clé sonoff.

Deux choses:

  • mon mosquitto est démarré en network: host
  • dans la config de z2m je n’ai pas adapter: ezsp

Et la config pour se connecter à mqtt dans z2m c’est:

server: mqtt://192.168.8.200:1883

Dans secret.yaml tu as bien user: xxx et password: yyy ?

Et vu que tu as autorisé anonyme, pour un test tu peux les virer…

Hello
j’ai remplacé l’adresse du server dans la config Z2M et modifié le fichier de config de mosquitto avec

allow_anonymous false

Ca ne change rien :sweat:

Hello
J’ai viré adapter: ezsp du fichier de config de Z2M et l’autorisation d’accès anonyme de la config de mosquitto…ça ne change rien
J’ai remplacé mon docker-compose.yaml pour passer mon mosquitto en network-mode: host
Après cette modif, je n’arrive plus à me connecter à mosquitto vient MQTT Explorer.
Je regarderais en rentrant du boulot ce soir mais j’imagine que mes modules sous tasmota n’y arrivent pas non plus :sweat:

mosquitto:
    image: eclipse-mosquitto
    container_name: mosquitto
    volumes:
      - /opt/mosquitto:/mosquitto
      - /opt/mosquitto/data:/mosquitto/data
      - /opt/mosquitto/log:/mosquitto/log
    restart: always
    network_mode: host
    #ports:
    #  - 1883:1883
    #  - 9001:9001

Hello,

De retour du boulot…je regarde un peu mieux.

Effectivement en indiquant :

network_mode: host

dans mon fichier docker-compose.yaml pour le service mosquitto…ça ne fonctionne clairement pas.

Capture d’écran de la section network de mon container mosquitto dans portainer:

Mes modules Tasmota ne répondent plus dans HA et je perd l’accès mosquitto via MQTT explorer… :expressionless:

Quand tu dis:

mon mosquitto est démarré en network: host

T’as fait la même chose que moi avec ton fichier docker-compose.yaml en y ajoutant network_mode: host ou c’est un paramètre que tu ajoutes dans ton fichier de config de mosquitto ? (désolé si la question semble un peu bête :grimacing:

Merci ++ pour ton aide

Dans le compose.
Tu es toujours sans authentification ?
Parce que normalement, sans authentification et en mode host, c’est basique…
Que dit MQTT explorer ?

Non, j’ai supprimé la possibilité de se connecter à mosquitto en anonyme dans le fichier de config de mosquitto

allow_anonymous false

Justement MQTT explorer ne dit rien (ou peut etre qu’il y a des logs que je ne sais pas trouver…) je ne peux juste pas me connecter et je reste sur l’écran de connexion

Dès que je repasse en port binding…ça refonctionne

Déjà, principe de base, il ne faut pas tout changer en même temps: enlever anonymous et changer des trucs dans la config docker. Quand, ça ne marche pas, c’est pas simple de savoir ce qui coince…

Mon compose:

version: '3'
services:
  mosquitto:
    image: eclipse-mosquitto:2.0.15
    container_name: mosquitto
    volumes:
      - /home/perso/mosquitto:/mosquitto
      - /home/perso/mosquitto/data:/mosquitto/data
      - /home/perso/mosquitto/log:/mosquitto/log
    user: 1000:1000
    restart: always
    network_mode: host

Et le fichier de config de mosquitto:

persistence true
persistence_location /mosquitto/data/

log_dest stdout
log_dest file /mosquitto/log/mosquitto.log
log_type warning
log_timestamp true
connection_messages true

listener 1883
allow_anonymous true

Et c’est tout. Et ça marche…

Et la copie d’écran de la partie network dans portainer est correcte. Ca affiche exactement ça.