[RESOLU] Problème de connexion mqtt avec sonoff

Voici :

CONTAINER ID   IMAGE                                COMMAND                  CREATED       STATUS       PORTS      NAMES
9e9a56caf879   eclipse-mosquitto:latest             "/docker-entrypoint.…"   5 hours ago   Up 2 hours              eclipse-mosquitto
0087650424a3   containrrr/watchtower:armhf-latest   "/watchtower --clean…"   3 weeks ago   Up 2 hours   8080/tcp   watchtower
7959384793d9   gladysassistant/gladys:v4-arm        "docker-entrypoint.s…"   4 weeks ago   Up 2 hours              gladys

Et la console de Tasmota dit:

01:02:54 MQT: Attempting connection...
01:02:54 MQT: Connect failed to 192.168.1.55:1883, rc -2. Retry in 10 sec
01:02:55 QPC: Reset
01:03:07 MQT: Attempting connection...
01:03:07 MQT: Connect failed to 192.168.1.55:1883, rc -2. Retry in 20 sec
01:03:28 MQT: Attempting connection...
01:03:28 MQT: Connect failed to 192.168.1.55

L’adresse du broker est bonne ?

Que raconte mosquitto ? => docker logs eclipse-mosquitto

1612550948: mosquitto version 2.0.7 starting
1612550948: Config loaded from /mosquitto/config/mosquitto.conf.
1612550948: Starting in local only mode. Connections will only be possible from clients running on this machine.
1612550948: Create a configuration file which defines a listener to allow remote access.
1612550948: Opening ipv4 listen socket on port 1883.
1612550948: Opening ipv6 listen socket on port 1883.
1612550948: mosquitto version 2.0.7 running
1612561344: mosquitto version 2.0.7 terminating
1612561486: mosquitto version 2.0.7 starting
1612561486: Config loaded from /mosquitto/config/mosquitto.conf.
1612561486: Starting in local only mode. Connections will only be possible from clients running on this machine.
1612561486: Create a configuration file which defines a listener to allow remote access.
1612561486: Opening ipv4 listen socket on port 1883.
1612561486: Opening ipv6 listen socket on port 1883.
1612561486: mosquitto version 2.0.7 running
1612562801: mosquitto version 2.0.7 terminating
1612562937: mosquitto version 2.0.7 starting
1612562937: Config loaded from /mosquitto/config/mosquitto.conf.
1612562937: Starting in local only mode. Connections will only be possible from clients running on this machine.
1612562937: Create a configuration file which defines a listener to allow remote access.
1612562937: Opening ipv4 listen socket on port 1883.
1612562937: Opening ipv6 listen socket on port 1883.
1612562937: mosquitto version 2.0.7 running

Pas super intéressant, non?
Sauf si cela vient du ‹ local only mode ›…

Le log de Gladys au moment de l’exécution du Apt upgrade:

npm ERR! errno 1
npm ERR! gladys-server@ start:prod: `cross-env NODE_ENV=production node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-server@ start:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-02-05T21_42_24_248Z-debug.log

> gladys-server@ start:prod /src/server
> cross-env NODE_ENV=production node index.js

Initialising OpenZWave 1.6.1051 binary addon for Node.JS.
        OpenZWave Security API is ENABLED
        ZWave device db    : /usr/local/etc/openzwave
        User settings path : /src/server/services/zwave/node_modules/openzwave-shared/build/Release/../../
        Option Overrides : --Logging false --ConsoleOutput false --SaveConfiguration true
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service example was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service philips-hue was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service xiaomi was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service zwave was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service ewelink was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> service.startAll.js:30 () Service tp-link was manually stopped, so it is ignored at startup
2021-02-05T22:45:08+0100 <info> index.js:13 (Object.start) Starting usb service
2021-02-05T22:45:09+0100 <info> connect.js:38 (MqttClient.<anonymous>) Connected to MQTT server mqtt://localhost
2021-02-05T22:45:09+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic gladys/master/#
2021-02-05T22:45:09+0100 <info> index.js:20 (Object.start) Starting Open Weather service
2021-02-05T22:45:09+0100 <info> index.js:19 (Object.start) Starting telegram service
2021-02-05T22:45:09+0100 <info> index.js:15 (Object.start) Starting Bluetooth service
2021-02-05T22:45:10+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic stat/+/+
2021-02-05T22:45:10+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T22:45:10+0100 <info> index.js:63 (Server.<anonymous>) Server listening on port 80 
2021-02-05T22:54:48+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic stat/+/+
2021-02-05T22:54:48+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic tele/+/+
2021-02-05T22:54:50+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic stat/+/+
2021-02-05T22:54:50+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T22:59:56+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic tele/+/+
2021-02-05T22:59:56+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T23:00:58+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic stat/+/+
2021-02-05T23:00:58+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic tele/+/+
2021-02-05T23:01:05+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic stat/+/+
2021-02-05T23:01:05+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T23:02:00+0100 <info> unsubscribe.js:10 (MqttHandler.unsubscribe) Unsubscribing to MQTT topic tele/+/+
2021-02-05T23:02:00+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T23:06:41+0100 <warn> connect.js:60 (MqttClient.<anonymous>) Disconnected from MQTT server
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! gladys-server@ start:prod: `cross-env NODE_ENV=production node index.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the gladys-server@ start:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-02-05T22_06_41_570Z-debug.log

> gladys-server@ start:prod /src/server
> cross-env NODE_ENV=production node index.js

Initialising OpenZWave 1.6.1051 binary addon for Node.JS.
        OpenZWave Security API is ENABLED
        ZWave device db    : /usr/local/etc/openzwave
        User settings path : /src/server/services/zwave/node_modules/openzwave-shared/build/Release/../../
        Option Overrides : --Logging false --ConsoleOutput false --SaveConfiguration true
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service example was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service xiaomi was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service zwave was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service ewelink was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service tp-link was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> service.startAll.js:30 () Service philips-hue was manually stopped, so it is ignored at startup
2021-02-05T23:09:18+0100 <info> index.js:13 (Object.start) Starting usb service
2021-02-05T23:09:19+0100 <info> index.js:19 (Object.start) Starting telegram service
2021-02-05T23:09:19+0100 <info> connect.js:38 (MqttClient.<anonymous>) Connected to MQTT server mqtt://localhost
2021-02-05T23:09:19+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic gladys/master/#
2021-02-05T23:09:19+0100 <info> index.js:20 (Object.start) Starting Open Weather service
2021-02-05T23:09:19+0100 <info> index.js:15 (Object.start) Starting Bluetooth service
2021-02-05T23:09:20+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic stat/+/+
2021-02-05T23:09:20+0100 <info> subscribe.js:12 (MqttHandler.subscribe) Subscribing to MQTT topic tele/+/+
2021-02-05T23:09:20+0100 <info> index.js:63 (Server.<anonymous>) Server listening on port 80 

Bon, j’ai trouvé une solution mais il y a quelque chose de pas normal.
J’ai installé le broker mosquitto externe (hors docker) et désactivé celui de Gladys.
Tout refonctionne (les périphériques mqtt ne fonctionnaient plus non plus) !
Mais il serait intéressant de savoir si c’est de ma faute ou si ça risque d’arriver à d’autres !
Je peux fournir tous les logs que vous désirez, si vous voulez investiguer :wink:

Bah c’est clairement ça, tout ce qui se connecte depuis une autre machine est refusé.

A mon avis c’est une nouvelle option par défaut.

EDIT:

Après un peu de lecture et d’expérimentation de mon côté , j’ai réussi à reproduire.
Il y’a peu une nouvelle option a vue le jour. Bon en fait elle existait déjà mais le comportement par défaut a changer.

Par défaut les conteneurs mosquitto n’écoute que sur localhost.

Pour modifier ce comportement il faut ajouter ça dans la conf mosquitto

listener 1883
1 Like

Pour confirmer avant d’allez plus loin, est ce que l’un de vous deux peux executer cette commande:

grep -qF -- "listener 1883" /var/lib/gladysassistant/mosquitto/mosquitto.conf || sudo echo "listener 1883" >> /var/lib/gladysassistant/mosquitto/mosquitto.conf

Puis redémarrer

@GBoulvin dans ton cas il faudra stopper ton mosquitto installé manuellement

Alors…
La commande me renvoie systématiquement un « Permission non accordée ». Je l’ai donc ajouté manuellement.
Mais en plus, je n’arrive plus à désactiver le mosquitto installé :crazy_face:
Toujours est-il que ça fonctionne, mais je ne sais pas comment (c’est la philosophie de Gladys, non ? :stuck_out_tongue: )

Bon, finalement, j’ai réussi à désactiver mon « second » broker et exécuter la commande proposée.
Voici ce que le log issu de docker dit :

1612709888: mosquitto version 2.0.7 starting
1612709888: Config loaded from /mosquitto/config/mosquitto.conf.
1612709888: Opening ipv4 listen socket on port 1883.
1612709888: Opening ipv6 listen socket on port 1883.
1612709888: mosquitto version 2.0.7 running
1612710037: mosquitto version 2.0.7 terminating
1612710038: mosquitto version 2.0.7 starting
1612710038: Config loaded from /mosquitto/config/mosquitto.conf.
1612710038: Opening ipv4 listen socket on port 1883.
1612710038: Opening ipv6 listen socket on port 1883.
1612710038: mosquitto version 2.0.7 running
1612710090: mosquitto version 2.0.7 terminating
1612710157: mosquitto version 2.0.7 starting
1612710157: Config loaded from /mosquitto/config/mosquitto.conf.
1612710157: Opening ipv4 listen socket on port 1883.
1612710157: Opening ipv6 listen socket on port 1883.
1612710157: mosquitto version 2.0.7 running

Super !
Mais en fait, ça ne fonctionne pas. Malgré plusieurs reboot, aucun accès à mes périphériques mqtt :cry:
Et pourtant :


Une autre idée ?

Salut, ça aurait été bien de faire un nouveau sujet sur ton soucis, parce que là depuis hier ça dénature un peu le [tutoriel]…

1 Like

Ton mosquitto crash en boucle.

Peux tu me donner le contenu du fichier suivant ?
/var/lib/gladysassistant/mosquitto/mosquitto.conf

Voici :

allow_anonymous false
connection_messages false
password_file /mosquitto/config/mosquitto.passwd
listener 1883

Est-ce qu’à terme, cela pose un problème que j’utilise eclipse-mosquitto en tant que service hors de Docker ou je peux sans souci laisser ça comme ça?
Est-ce possible que j’aie une latence qui n’existait pas avant ou suis-je parano?

Bonjour à tous, j’ai les mêmes symptômes: aucune config ou paramètre supplémentaire sur une installation qui marchait bien et plus de comm mqtt sur les radiateurs sonoff. Je suis en Gladys 4.0.8 sur une rasp installée via l’image Gladys Assistant.

Suivant les conseils ci-dessus.
Je me suis connecté en ssh sur la rasp
En utilisant vi, j’ai ajouté « listener 1883 » au fichier /var/lib/gladysassistant/mosquitto/mosquitto.conf
J’ai ensuite redémarré ma rasp

Dans Gladys Assistant, j’ai dû reconfigurer mon service mqtt.

Tout refonctionne comme avant. :slight_smile:

merci

2 Likes

Pour information, le problème a été réglé avec Gladys v4.1.0.

@AlexTrovato a codé une routine qui met à jour automatiquement le fichier de conf + bloque la version du container a mosquitto 2.0 pour éviter tout problème à l’avenir.

Juste pour info, après avoir recommencé une énième fois, je suis arrivé à remettre le bon mosquitto en route et je vais vous expliquer comment…
Le mot de passe du serveur via Docker avait été remis à zéro, dans doute que aux nombreuses manipulations !
A aucun moment je n’ai été vérifié ce qu’il y avait derrière les petits points du mot de passe et ça avait été remplacé par ******.
Donc en effet, ça ne pouvait pas marcher…
Je suis un génie…
Enfin…
En fait…
Non.

1 Like

Mince, c’est peut être un bug du service MQTT ça non @AlexTrovato ?

le front remplace le contenu du mot de passe par des **** a un moment non ?

Le front reçoit le vrai mot de passe uniquement si MQTT embarqué est utilisé (sinon c’est un faux mot de passe *********). Et la possibilité de l’afficher est également disponible uniquement pour un broker embarqué.

Le mot de passe est généré aléatoirement à partir du moment où on passe en mode « broker embarqué », mais il est possible de le modifier depuis la page de configuration, ce qui le modifie également sur mosquitto.

J’ai pris le choix de cacher le mot de passe s’il n’est pas géré par Gladys (connexion à un serveur externe).

J’ai peut-être loupé un truc, mais s’il faut fixer, mon PC est tout chaud !

1 Like

Je me doute que normalement il n’y a pas de bug, mais là ça y ressemble fortement :slight_smile: Si il n’a pas mis « **** » dans le champs et que ça se retrouve dans le mot de passe, c’est que forcément le frontend a du se mélanger les pinceaux à un moment. Peut-être lors d’un clique supplémentaire sur « connexion » plus tard dans l’UI ?

Après c’est peut-être un bug legacy qui a été fixé dans une release récente, mais bon il faut en être sur parce que ça craint comme bug :smiley:

Je ne me prendrais pas trop la tête avec ça car, pour rappel, j’ai installé éclipse mosquitto en dehors de Docker, activé et désactivé les deux plusieurs fois, modifié le .conf manuellement…
Un conflit à un moment donné n’est pas impossible…
Maintenant, dans un monde parfait, ça n’aurait jamais dû arriver (Mais qu’est-ce qu’on se ferait Ch… :wink: )

1 Like