Réponse en double avec les interactions (jeedom/interact) suite à mise à jour mosquitto 2.0.11 vers 2.0.22

Bonjour,

J’ai réussi à contourner le problème mais je voulais savoir si cela etait « normal » ou pas.

Juste pour expliquer la situation, j’ai décidé de me passer de l’installation native de mosquitto proposé par le plugin (en 2.0.11 sur un debian11) vers une vm dédiée pour ce besoin (ce qui fait que je suis désormais en 2.0.22).

J’ai quelques broker dans jmqtt (un pour zigbee, un pour zwave, un pour iobroker, etc …), j’ai donc evidemment basculé les config des config broker jmqtt de localhost vers mon nouveau mosquitto. Jusque la pas de soucis.

Cependant j’ai etonnamment remarqué qu’après la migration de mon mosquitto le comportement des interactions au travers de jmqtt avait un poil changé à savoir que dans mon contexte des interactions en mqtt provenant de iobroker sur lequel j’ai une clé gsm pour piloter jeedom en sms. A la migration surprise je recois systématiquement 2 reponses lors d’une seule intéraction. Si je rebascule sur le mosquitto de jeedom, 1 interaction = 1 réponse. Rien de méchant mais pas normal.

En creusant, il s’avère que si plusieurs broker dans jmqtt ont la case cochée "Topic des interactions de Jeedom " (vers jeedom/interact) et bien je recois 2 réponses. Si une seule config des broker dans jmqtt est coché, bingo 1 seule réponse … sauf que je n’avais pas ce comportement avec mosquitto 2.0.11.

Voici les logs quand je reproduit le problème.

Avec mosquitto 2.0.22 (avec plusieurs broker qui ont l’option « Topic des interactions de Jeedom » de coché)

[2025-10-30 07:08:43,234] INFO  Client1927      MainThread         publish() : Sending message to broker (topic="jeedom/interact", payload="Désactiver alarme", QoS=1, retain=False)

[2025-10-30 07:08:43,236] INFO  Client1927      Brk1927Th       on_message() : Message received (topic="jeedom/interact", payload="Désactiver alarme", QoS=1, retain=False)

[2025-10-30 07:08:43,236] INFO  Client1620      Brk1620Th       on_message() : Message received (topic="jeedom/interact", payload="Désactiver alarme", QoS=1, retain=False)

[2025-10-30 07:08:43,236] DEBUG  JMsg.Snd        Brk1927Th       send_async() : Enqued the message in 0.001431ms (qToJ size 1): {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}

[2025-10-30 07:08:43,236] DEBUG  JMsg.Snd        Brk1620Th       send_async() : Enqued the message in 0.000954ms (qToJ size 2): {'cmd': 'messageIn', 'id': '1620', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}

[2025-10-30 07:08:43,335] INFO  Client1927      MainThread         publish() : Sending message to broker (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:08:43,336] INFO  Client1927      Brk1927Th       on_message() : Message received (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:08:43,336] DEBUG  JMsg.Snd        Brk1927Th       send_async() : Enqued the message in 0.001907ms (qToJ size 1): {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}

[2025-10-30 07:08:44,363] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 2 messages handled in 1086.306810ms (qToJ size 1): [{'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}, {'cmd': 'messageIn', 'id': '1620', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}]

[2025-10-30 07:08:44,380] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 1 messages handled in 17.029285ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}]

[2025-10-30 07:08:44,437] INFO  Client1620      MainThread         publish() : Sending message to broker (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:08:44,438] INFO  Client1927      Brk1927Th       on_message() : Message received (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:08:44,438] DEBUG  JMsg.Snd        Brk1927Th       send_async() : Enqued the message in 0.002384ms (qToJ size 1): {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}

[2025-10-30 07:08:44,488] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 1 messages handled in 7.399082ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}]

les logs avec mosquitto 2.0.11

[2025-10-30 07:15:02,740] INFO  Client1927      MainThread         publish() : Sending message to broker (topic="jeedom/interact", payload="Désactiver alarme", QoS=1, retain=False)

[2025-10-30 07:15:02,740] INFO  Client1927      Brk1927Th       on_message() : Message received (topic="jeedom/interact", payload="Désactiver alarme", QoS=1, retain=False)

[2025-10-30 07:15:02,740] DEBUG  JMsg.Snd        Brk1927Th       send_async() : Enqued the message in 0.001431ms (qToJ size 2): {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}

[2025-10-30 07:15:02,805] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 2 messages handled in 48.184633ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '1927', 'topic': 'iobroker2mqtt/system/adapter/yeelight-2/0/connected', 'payload': 'true', 'qos': 0, 'retain': False}, {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact', 'payload': 'Désactiver alarme', 'qos': 1, 'retain': False}]

[2025-10-30 07:15:02,840] INFO  Client1927      MainThread         publish() : Sending message to broker (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:15:02,840] INFO  Client1927      Brk1927Th       on_message() : Message received (topic="jeedom/interact/reply", payload="{"status":"ok","query":"Désactiver alarme","reply":"L'alarme est désactivée"}", QoS=1, retain=False)

[2025-10-30 07:15:02,841] DEBUG  JMsg.Snd        Brk1927Th       send_async() : Enqued the message in 0.001192ms (qToJ size 1): {'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}

[2025-10-30 07:15:02,913] DEBUG  JMsg.Snd        SockOut               send() : Sent TO Jeedom 1 messages handled in 7.211447ms (qToJ size 0): [{'cmd': 'messageIn', 'id': '1927', 'topic': 'jeedom/interact/reply', 'payload': '{"status":"ok","query":"Désactiver alarme","reply":"L\'alarme est désactivée"}', 'qos': 1, 'retain': False}]

Ca donne l’impression que les dernières versions de mosquitto n’esquivent pas des messages qui arrivent pile poil à la millisecondes près, la ou la 2.0.11 les droppe apparemment.

A dispo si je dois fournir plus de logs ou autre.

Merci d’avance.

Hello @Bad ,

Je me doute que le problème est peut etre touchy et qu’on doit pas etre beaucoup à exploiter les interactions avec jmqtt mais je pense que dès la migration officielle de jeedom en debian 12 ca va coincer aussi chez certain une fois que mosquitto se mettra a jour.

Merci.

Hello @znation,

Mon impression est différente, je pense que les interactions sont activées sur les 2 équipements Brokers déclaré dans jMQTT :

Peux-tu vérifier que seul l’un des deux est actif ? Cf :

Bad

Mais oui entièrement d’accord avec toi.
Yen avait 2 actifs en décochant 1 c’est ok mais pourquoi en mosquitto 2.0.11 embarqué ça posait pas de soucis avec 2 de cochés et en 2.0.22 ça coince ?

Hello,

C’était probablement un bug dans Mosquitto, je te laisse regarder les changelogs entre les versions : Version 2.0.22 released. | Eclipse Mosquitto

Il y a plusieurs cas de problème de queue, publication quand il y a plusieurs subscribers, etc

Normalement, si le topic d’interaction est actif, il doit être pris en compte sur le/les brokers déclarés.

Bad

Merci de ton retour ça semble normal mais je préférais poster le cas ‹ juste au cas où ›.

1 « J'aime »

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