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

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.

Hey!!!

Cerise sur le gâteau, mon accès depuis l’extérieur fonctionne!

Il ne me reste plus qu’à restaurer ma sauvegarde!
Merci à tout le monde

@Bad ,

Après restauration de ma Backup, tout fonctionne sauf jMQTT.
Les dépendances ne s’installent pas correctement.
Voici les log.

======================================================================
== 11/11/2022 21:00:19 == Dependencies installation for jMQTT
======================================================================
[  0% ] : Checking parameters...
== System: Linux jeedom 6.0.0-7.1-liquorix-amd64 #1 ZEN SMP PREEMPT_DYNAMIC liquorix 6.0-2.1~bullseye (2022-11-03 x86_64 GNU/Linux
== Jeedom version: 4.3.10
== jMQTT version: 2022-11-10
[  9% ] : Checking parameters : [  OK  ]
[ 10% ] : Synchronize the package index...
[ 19% ] : Synchronize the package index : [  OK  ]
[ 20% ] : Install Composer...
[ 29% ] : Install Composer : [  OK  ]
[ 30% ] : Install JsonPath-PHP library...
[ 39% ] : Install JsonPath-PHP library : [  OK  ]
[ 40% ] : Remove Composer...
[ 49% ] : Remove Composer : [  OK  ]
[ 50% ] : Install python3 venv and pip debian packages...
[ 59% ] : Install python3 venv and pip debian packages : [  OK  ]
[ 60% ] : Create a python3 Virtual Environment...
[ 69% ] : Create a python3 Virtual Environment : ERROR
[ 70% ] : Install required python3 libraries in venv...
[ 99% ] : Install required python3 libraries in venv : ERROR
[100% ] : Finished !
======================================================================
== KO == Installation Error
======================================================================
== ANALYSING ERRORS...
== NO KNOWN ERROR DETECTED
== Error in step : Create a python3 Virtual Environment
== Line 41
== Command `sudo -u www-data python3 -m venv /var/www/html/plugins/jMQTT/resources/jmqttd/venv' have an issue
== Return code is 1
== Error message :
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt-get install python3-venv
You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.
Failing command: ['/var/www/html/plugins/jMQTT/resources/jmqttd/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']
======================================================================
== Error in step : Install required python3 libraries in venv
== Line 44
== Command `sudo -u www-data /var/www/html/plugins/jMQTT/resources/jmqttd/venv/bin/pip3 install --no-cache-dir -r /var/www/html/plugins/jMQTT/resources/python-requirements/requirements.txt' have an issue
== Return code is 1
== Error message :
/var/www/html/plugins/jMQTT/resources/jmqttd/venv/share/python-wheels/requests-2.21.0-py2.py3-none-any.whl/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.5) or chardet (3.0.4) doesn't match a supported version!
Traceback (most recent call last):
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/bin/pip3", line 6, in 
from pip._internal import main
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in 
from pip._internal.cli.autocompletion import autocomplete
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in 
from pip._internal.cli.main_parser import create_main_parser
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 8, in 
from pip._internal.cli import cmdoptions
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/pip/_internal/cli/cmdoptions.py", line 22, in 
from pip._internal.utils.ui import BAR_TYPES
File "/var/www/html/plugins/jMQTT/resources/jmqttd/venv/lib/python3.7/site-packages/pip/_internal/utils/ui.py", line 15, in 
from pip._vendor.progress.helpers import HIDE_CURSOR, SHOW_CURSOR, WritelnMixin
ModuleNotFoundError: No module named 'pip._vendor.progress.helpers'
======================================================================

Si je supprime puis réinstalle le plugin, il fonctionne correctement.
(Et repartir de zéro sous-entend beaucoup trop de travail).

@mitch55, supprimer le plugin ne n’est pas nécessaire, supprime le répertoire var/www/html/plugins/jMQTT/resources/jmqttd/venv
Puis de relancer les dépendances

J’y suis presque.

Il reste ce soucis :

*Edit : je n’ai rien dit : après un redémarrage, une réinstallation des dépendances et un redémarrage du Démon : tout semble revenu à la normal! C’est parfait.

Merci @Bad

Impec, ravi qu’on ait pu t’aider

1 « J'aime »

Nickel merci :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.