jMQTT Pb connexion au broker

Bonjour,
D’un seul coup, je me retrouve avec une impossibilité de connecter le démon jMQTT à mon broker distant Mosquito.
A priori cela se produit (bien que cela n’ai rien à voir, mais c’est un fait constaté !) depuis une mise à jour connexe de MQTTManager que je n’utilise (contraint et forcé !) à cause du plugin Z-Wave JS.
A chaque essai de lancer la connexion du démon jMQTT au broker, je récupère le message d’erreur suivant :

[MySQL] Error code : 22001 (1406). Data too long for column ‹ option › at row 1 : INSERT INTO event SET datetime=:datetime, name=:name,option=:option

Qq’un aurait-il une idée pour me sortir de ce problème ? car du coup tous mes capteurs en lien avec zigbee2Mqtt ne fonctionnent plus. Donc plus de domotique, et c’est pas WAF :cry:

PS : Je précise que je n’ai rien changé à ma configuration du broker qui fonctionnait parfaitement jusqu’à présent. En plus j’utilise les mêmes paramètres pour me connecter directement au broker avec MQTT Explorer et là pas de soucis.

Merci d’avance de vos réponses avisées.
Cordialement
oracle7 :wink:

Salut,

Historisation d’une commande qui a une valeur trop grande.
Probablement une commande Info/Autre
Désactiver l’historisation de la commande en question pour ne plus avoir de soucis.

Un screenshot de ta page santé, de la conf de mqtt2 de la co f de ton brocker et les logs de ton brocker seraient bien utiles

Norbert

1 « J'aime »

Bonjour,
@Bad
Ci-après le log jMQTT après une restauration d’une sauvegarde faite à une date où il n’y avait pas le problème rencontré actuellement :

[2024-09-28 11:03:00] INFO  : Restauration de la sauvegarde jMQTT_20240805_104657.tgz...
[2024-09-28 11:03:00] INFO  : ###########################################################
[2024-09-28 11:03:00] INFO  : Starting to restore jMQTT...
[2024-09-28 11:03:00] INFO  : /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\
[2024-09-28 11:03:00] INFO  : /!\                                                     /!\
[2024-09-28 11:03:00] INFO  : /!\                    DRY RUN MODE                     /!\
[2024-09-28 11:03:00] INFO  : /!\     Use --apply to actually make some changes!      /!\
[2024-09-28 11:03:00] INFO  : /!\                                                     /!\
[2024-09-28 11:03:00] INFO  : /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\ /!\
[2024-09-28 11:03:00] INFO  : Writing PID file...                                  [ OK ]
[2024-09-28 11:03:00] INFO  : Generating Metadata file...                          [ OK ]
[2024-09-28 11:03:00] INFO  : Generating index file...                             [ OK ]
[2024-09-28 11:03:01] INFO  : Creating temporary directory...                      [ OK ]
[2024-09-28 11:03:01] INFO  : Extracting archive jMQTT_20240805_104657.tgz...      [ OK ]
[2024-09-28 11:03:01] INFO  : Getting backup jMQTT Metadata...                     [ OK ]
[2024-09-28 11:03:01] INFO  : Verifing hardware keys...                            [ OK ]
[2024-09-28 11:03:01] INFO  : Getting backup jMQTT Index...                        [ OK ]
[2024-09-28 11:03:03] INFO  : Stopping jMQTT daemon...                        [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring jMQTT plugin folder...                [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Deleting new eq/cmd...                          [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Creating missing eqLogics and cmds...           [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring the previously existing eqLogics...   [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring the previously deleted eqLogics...    [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Purging the previously existing cmds history... [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring the previously existing cmds history..[ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring the previously deleted cmds history...[ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring jMQTT logs...                         [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring Mosquitto config...                   [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Restoring plugin conf & cache...                [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Starting jMQTT daemon...                        [ SKIPPED ]
[2024-09-28 11:03:03] INFO  : Removing backup directory...                         [ OK ]
[2024-09-28 11:03:03] INFO  : Removing PID file...                                 [ OK ]
[2024-09-28 11:03:03] INFO  : End of jMQTT restore.
[2024-09-28 11:03:03] INFO  : ###########################################################
[2024-09-28 11:03:03] INFO  : Restauration de la sauvegarde jMQTT_20240805_104657.tgz effectuée avec succès
[2024-09-28 11:03:04] ERROR  : jMQTTDaemon::checkAllMqttClients() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:35] ERROR  : jMQTTComFromDaemon::brkDown() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:03:40] ERROR  : jMQTTDaemon::checkAllMqttClients() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option
[2024-09-28 11:04:03] ERROR  : jMQTTDaemon::checkAllMqttClients() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1  : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option

Edit : Nouveau message du démon jMQTT :

jMQTTDaemon::checkAllMqttClients() a levé l'Exception: [MySQL] Error code : 22001 (1406). Data too long for column 'option' at row 1 : INSERT INTO `event` SET `datetime`=:datetime, `name`=:name,`option`=:option,@Stack: #0 /var/www/html/core/class/event.class.php(42): DB::Prepare() #1 /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php(1803): event::add() #2 /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php(1745): jMQTT->sendMqttClientStateEvent() #3 /var/www/html/plugins/jMQTT/core/class/jMQTTDaemon.class.php(321): jMQTT->startMqttClient() #4 /var/www/html/plugins/jMQTT/core/class/jMQTTPlugin.class.php(10): jMQTTDaemon::checkAllMqttClients() #5 /var/www/html/plugins/jMQTT/core/class/jMQTT.class.php(1450): jMQTTPlugin::cron() #6 /var/www/html/core/class/plugin.class.php(369): jMQTT::cron() #7 /var/www/html/core/php/jeeCron.php(78): plugin::cron() #8 {main},@BrkId: 534.

La configuration du broker QUI N’A PAS CHANGE depuis la dernière sauvegarde ET qui est la même que celle que j’utilise pour MQTT Explorer.

La page santé jeedom qui n’apporte rien de plus :

Le log Mosquito :

2024-09-28|08:57:36: mosquitto version 2.0.15 starting
2024-09-28|08:57:36: Config loaded from /mosquitto/config/mosquitto.conf.
2024-09-28|08:57:36: Opening ipv4 listen socket on port 1883.
2024-09-28|08:57:36: Opening ipv6 listen socket on port 1883.
2024-09-28|08:57:36: Opening ipv4 listen socket on port 8883.
2024-09-28|08:57:36: Opening ipv6 listen socket on port 8883.
2024-09-28|08:57:36: mosquitto version 2.0.15 running
2024-09-28|08:57:37: New connection from 192.168.2.18:59778 on port 1883.
2024-09-28|08:57:37: New client connected from 192.168.2.18:59778 as ZWAVE_GATEWAY-Jeedom (p2, c1, k60, u'jeedom').
2024-09-28|08:57:37: New connection from 192.168.2.18:44758 on port 8883.
2024-09-28|08:57:37: New client connected from 192.168.2.18:44758 as mqttjs_7d87d176 (p2, c1, k60, u'RPI-JDOM').
2024-09-28|08:57:41: New connection from 172.20.0.1:45568 on port 8883.
2024-09-28|08:57:41: New client connected from 172.20.0.1:45568 as 0pRQVUw7EI3fA1IN064FzI (p2, c1, k60, u'INTEL-NUC').
2024-09-28|08:57:46: New connection from 192.168.2.12:62535 on port 8883.
2024-09-28|08:57:46: New client connected from 192.168.2.12:62535 as mqtt-explorer-ad08fdc1 (p2, c1, k60, u'INTEL-NUC').
2024-09-28|09:00:08: New client connected from 192.168.2.18:55556 as mqtt-jeedom_0.5a22fd (p2, c0, k60, u'jeedom').
2024-09-28|09:00:08: Outgoing messages are being dropped for client mqtt-jeedom_0.5a22fd.
2024-09-28|09:12:05: Client connection from 192.168.2.18 failed: error:0A000126:SSL routines::unexpected eof while readi
ng.

Désolé mais je ne vois pas quelle commande et ce serait une commande de quoi ???
Merci de BV préciser …

Cordialement
oracle7 :wink:

Bonjour,

ce n’est pas lié a un problème d’historique, mais c’est simplement que les « options » envoyées en « event » sont trops long pour la bdd.

Je pense que la partie « Paramètres de Sécurité » fait aussi partie des ces options, je ne peut confirmer car j’utilise pas.

@bad, Je pense qu’il faudra filtrer :

Pour ne laisser passer que les options nécessaires pour le bon fonctionnement du listener :

Bonjour,
Pour info si besoin :
Après création d’un nouvel équipement broker, le démon jMQTT se connecte bien en mode « normal » i.e. « non sécurisé » sur le port 1883 au broker.

Donc, sauf erreur de ma part, il semblerait que ce soit bien le mode « sécurisé » (port 8883) avec l’utilisation des paramètres de sécurité (Autorité personnalisée, certificat client et clé privée client) qui soit en cause comme le suggère @Phpvarious .
Cordialement
oracle7 :wink:

Hello @oracle7,

J’avais un peu de temps pour regarder comment corriger.

C’est pas super top/propre, mais ça fonctionne :

Soit tu peux patcher directement le code source dans ton Jeedom (très peu risqué, le changement est vraiment minim et sera écrasé lors de la prochaine MaJ/réinstallation du plugin), soit attendre que je publie la prochaine Beta (peut-être ce weekend) ou Stable (plutôt fin du mois).

Dans le futur, pour faire plus propre, il faudra que n’envoie que l’id de l’équipement qui a changé et télécharge dynamiquement le changement…

Merci @Phpvarious pour le diag et la piste :slight_smile:

Bad

3 « J'aime »

@Bad
Bonjour,
Je confirme, après avoir patché directement le code source, la connexion au broker en mode mqtts sécurisé avec les paramètres de sécurité (fichiers SSL) s’est établie instantanément.
Énorme MERCI à toi pour ton aide. :hugs: :hugs: :hugs: :hugs: :hugs:
Dans l’attente de la sortie une version « propre » du plugin.
Cordialement
oracle7 :wink:

1 « J'aime »