Besoin d'aide pour accéder à mon broker mqtt depuis Jeedom installé dans un containeur

J’avais déjà essayé : ça reste inaccessible.

image
Est-ce normal ça?

1 « J'aime »

Ok, alors laisse l’url de callback par défaut (désactivé) pour le moment.

Je ne sais pas trop, j’aurais tendance à dire que oui vu que tu as accès à Jeedom.

[1] En ce qui concerne l’IP et les credentials, es-tu sur qu’ils sont bon ?

[2] As-tu essayé avec un autre « Identifiant/ClientId » ?

[3] Pourrais tu aussi me donner de plus longs logs du démon en débug ?

[4] Est-ce que tu as déjà réussi a faire fonctionner jMQTT (avant le passage en docker) avec ton broker ? Je vois dans ton sujet de juin 2020 qui tu as déjà eu le même problème :

Je me demande si tes problèmes n’ont pas à voir avec l’utilisation d’un network en macvlan plutôt que simplement en bridge ou host.

Je n’en ai qu’un seul.

[3] Pourrais tu aussi me donner de plus longs logs du démon en débug ?

image
Il ne s’y passe pas grand chose.

[4] Est-ce que tu as déjà réussi a faire fonctionner jMQTT (avant le passage en docker) avec ton broker ? Je vois dans ton sujet de juin 2020 qui tu as déjà eu le même problème :

Je ne me souviens plus trop mais je pense que j’avais dû résoudre le problème.
En tout cas, la semaine dernière, quand Jeedom n’était sous Docker, tout fonctionnait.

Je me demande si tes problèmes n’ont pas à voir avec l’utilisation d’un network en macvlan plutôt que simplement en bridge ou host .

Possible. D’où ma question de tout à l’heure car dans la configuration de mon réseau macvlan, il y a ça :

Mais je t’avoue que je ne maîtrise pas vraiment.

C’est à dire? As-tu suivi la demande de Bad?

Antoine

C’est à dire? Créer un couple id/mdp? Non, je n’ai pas fait ça.
Par contre, j’ai bien vérifié mon id/mdp.
C’est d’ailleurs la première chose que j’ai faite…

Salut
Je pense que ces conflits d’identifiants moquitto sont recurrent dans les conf mqqt2 et jmqtt car il n’est pas prévu pour l’instant de gestion utilisateur par l’un ou l’autre.

Perso j’ai les 2 et ringmqtt et je n’ai jamais eu de pb. Car j’ai d’emblé créé manuellement des utilisateurs dans la conf de mosquitto. Un pour chaque plugin de jeedom et un pour ringmqtt. J’en parle ici et il y a un lien vers un tuto mosquitto

a ta place je créerai donc 2 users distinct pour les 2 plugins, redemarrer mosquitto ensuite renseigner les champ user/pwd dans les plugins

Je parle du champ « Identifiant/ClientId » dans jMQTT, pas « authentification »

Peux-tu essayer de mettre jMQTT plutôt que jeedom dans le champ « Identifiant/ClientId » ?

Pardon, je n’avais pas compris.
J’essaye ça tout à l’heure.

arf autant pour moi😉 j’avais interprété aussi user/mdp

Cela ne change rien.

Après, le contraire aurait été étonnant, non? C’est une installation toute fraîche.

image

Ceci ne vous choque pas? Jeedom qui ne peut pas communiquer avec son hôte ? Il y a peut-être un lien, non?

Au cas où cela puisse faire avancer le Schmilblink, je ne peux pas non plus me connecter à distance à Jeedom (avec un nom de domaine qui pointe vers http://192.168.1.243 et la partie « accès externe » de Jeedom configurée).
image



0439|[2022-11-10 18:06:47,411]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
0440|[2022-11-10 18:06:47,506]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'hb'}]
0441|[2022-11-10 18:07:04,265]DEBUG Main            MainThread            h_hb() : Jeedom sent a Heartbeat.
0442|[2022-11-10 18:07:04,266]INFO Main            MainThread     h_newClient() : Client already exists for Broker 427. Restarting it.
0443|[2022-11-10 18:07:04,266]DEBUG Client427       MainThread            stop() : jMqttClient ended
0444|[2022-11-10 18:07:06,108]ERROR Client427       MainThread           start() : jMqttClient.start() Exception
0445|Traceback (most recent call last):
0446|File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 235, in start
0447|self.mqttclient.connect(self.mqtthostname, self.mqttport, 30)
0448|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
0449|return self.reconnect()
0450|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
0451|sock = self._create_socket_connection()
0452|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
0453|return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
0454|File "/usr/lib/python3.7/socket.py", line 727, in create_connection
0455|raise err
0456|File "/usr/lib/python3.7/socket.py", line 716, in create_connection
0457|sock.connect(sa)
0458|OSError: [Errno 113] No route to host
0459|[2022-11-10 18:07:32,565]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
0460|[2022-11-10 18:07:32,591]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'hb'}]
0461|[2022-11-10 18:08:05,040]INFO Main            MainThread     h_newClient() : Client already exists for Broker 427. Restarting it.
0462|[2022-11-10 18:08:05,040]DEBUG Client427       MainThread            stop() : jMqttClient ended
0463|[2022-11-10 18:08:07,549]ERROR Client427       MainThread           start() : jMqttClient.start() Exception
0464|Traceback (most recent call last):
0465|File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 235, in start
0466|self.mqttclient.connect(self.mqtthostname, self.mqttport, 30)
0467|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
0468|return self.reconnect()
0469|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
0470|sock = self._create_socket_connection()
0471|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
0472|return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
0473|File "/usr/lib/python3.7/socket.py", line 727, in create_connection
0474|raise err
0475|File "/usr/lib/python3.7/socket.py", line 716, in create_connection
0476|sock.connect(sa)
0477|OSError: [Errno 113] No route to host
0478|[2022-11-10 18:08:17,683]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
0479|[2022-11-10 18:08:17,758]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'hb'}]
0480|[2022-11-10 18:09:02,908]DEBUG JMsg.Snd        SockOut           _loopSnd() : Sending 1 msgs
0481|[2022-11-10 18:09:03,389]DEBUG JMsg.Snd        SockOut               send() : Sent TO Jeedom: [{'cmd': 'hb'}]
0482|[2022-11-10 18:09:04,301]DEBUG Main            MainThread            h_hb() : Jeedom sent a Heartbeat.
0483|[2022-11-10 18:09:04,302]INFO Main            MainThread     h_newClient() : Client already exists for Broker 427. Restarting it.
0484|[2022-11-10 18:09:04,309]DEBUG Client427       MainThread            stop() : jMqttClient ended
0485|[2022-11-10 18:09:05,919]ERROR Client427       MainThread           start() : jMqttClient.start() Exception
0486|Traceback (most recent call last):
0487|File "/var/www/html/plugins/jMQTT/resources/jmqttd/jMqttClient.py", line 235, in start
0488|self.mqttclient.connect(self.mqtthostname, self.mqttport, 30)
0489|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 914, in connect
0490|return self.reconnect()
0491|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 1044, in reconnect
0492|sock = self._create_socket_connection()
0493|File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection
0494|return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source)
0495|File "/usr/lib/python3.7/socket.py", line 727, in create_connection
0496|raise err
0497|File "/usr/lib/python3.7/socket.py", line 716, in create_connection
0498|sock.connect(sa)
0499|OSError: [Errno 113] No route to host

Est-ce que cela pourrait t’aider davantage?

Absolument !
Il est maintenant évident que jMQTT n’arrive pas à joindre le Broker :

0458|OSError: [Errno 113] No route to host

C’est donc un problème de communication entre le container Jeedom et celui du Broker, pas jMQTT.

Je pense qu’il y a un problème de config dans la partie network de Docker

En effet, c’est choquant qu’il y ait un problème de connectivité à ce niveau là.
Serait-il possible d’avoir un schema de ce que vous souhaitez faire, qui fait le routage, quels sont les plans d’adressage et les roles/configurations de chacun des équipements ?

En tout cas, ça dépasse mes compétences en Docker, je ne maitrise pas les macvlan, j’utilise uniquement des network host et bridge.

Alors le broker n’est pas dans un containeur mais installé sur Debian : je ne sais pas ça change quelque chose.

Une description de mon installation?

Oui, au moins de ce qu’il y a entre la box internet, le Broker et Jeedom.

Sur un microserveur (HP N54L), j’ai 2 VM dont Debian 11.
Sur Debian est installé le broker avec lequel communique Home Assistant Supervisé (installé sous Docker) et Jeedom (sous Docker aussi)… en théorie.

Si quelqu’un s’y connait en réseau macvlan, voici mon réseau sur Debian :

Et les lignes de code pour créer le containeur network ( qui ne fonctionne pas correctement) :

docker network create \
-d macvlan \
--subnet=192.168.1.0/24 \
--ip-range=192.168.1.240/29 \
--gateway=192.168.1.1 \
--aux-address="host_bridge=192.168.1.241" \
-o parent=ens160 \
mymacvlan
1 « J'aime »

Bonjour,
C’est un problème purement docker je crois : les 3 containers sont installés sur la même VM Debian 11 à savoir le brocker MQTT, Home-Assistant et Jeedom chacun dans son container ?
Mais comme Jeedom est configuré sur un reseau Macvlan il n’est pas sur le même réseau que les 2 autres containers donc il ne communique pas avec eux…
C’est obligatoire le réseau Macvlan ? Moi j’ai Jeedom dans Docker sans macvlan et ça fonctionne très bien, tous mes containers sont sur le même réseau (mais peut être certains plugins le demandent…)
docker network ls – pour voir la liste des réseaux disponibles ?

Voilà pour les réseaux qu’utilisent mes différents containeurs.
image

C’est ça, sauf Mosquitto, installé à l’aide de paquet.

Pas forcément. C’est juste que dans le tuto de @Didier3L , il indique ceci :
image

Je me suis dit : quitte à réinstaller autant le faire de façon durable.

En tout cas, merci pour votre aide.

ça alors! je viens de découvrir que le container avec un réseau macvlan ne peut pas atteindre son host, ni le host ne peut atteindre le container macvlan… cela doit expliquer ton problème non?

Essaye de voir si cette solution fonctionne, j’ai pas tout compris mais ça parle de faire un 2e réseau macvlan…
A mon avis tu aurais eu moins de problème si tu avais mis ton brocker aussi dans un container au lieu de l’installer directement sur l’host. Il existe des containers mqtt tout prêt que tu n’a qu’à démarrer, j’utilise mosquitto ( Docker Hub ) Quitte à avoir installé docker, autant l’utiliser :slight_smile:

1 « J'aime »

Mais carrément!!! Quelle info! Merci pour cette trouvaille!

Avec un conteneur attaché à un réseau macvlan, vous constaterez que même s’il peut contacter d’autres systèmes sur votre réseau local sans problème, le conteneur ne pourra pas se connecter à votre hôte (et votre hôte ne pourra pas se connecter à votre récipient). Il s’agit d’une limitation des interfaces macvlan : sans prise en charge spéciale d’un commutateur réseau, votre hôte est incapable d’envoyer des paquets à ses propres interfaces macvlan.

Est-ce que cela explique aussi le fait que je ne puisse pas accéder à Jeedom depuis l’extérieur ?
Un problème à la fois.

Tu as raison!
Je vais voir si j’arrive à exploiter la solution proposée, j’aviserais ensuite.