Erreur : invalid function argument provided - JMQTT

Tags: #<Tag:0x00007fa7a48ea708>

Bonjour a tous,

J’utilise le plugin JMQTT pour interfacer diverses cartes électroniques qui me permettent de piloter/remonter des infos de différents objets chez moi (piscine, portail, températures)

Le problème que je rencontre est le suivant : au bout d’un certain temps, aléatoire, mais de plusieurs heures, j’ai les erreurs suivantes dans les logs : [2020-11-07 17:59:52][ERROR] : Erreur exécution de la commande […] : Invalid function arguments provided.

A partir de ce moment la, je rencontre des problèmes de communication entre jeedom et mosquito.
Je voie, a l’aide d’un mqqt explorer, que mes cartes remontent les infos dans mosquitto.
les informations remontent bien dans jeedom, mais par contre, jeedom n’envoie plus rien dans mosquitto.
je suis obligé de redémarrer le broquer JMQTT et la tout repart parfaitement.

J’ai essayé diverses choses :
J’ai changé le hard ou était hébergé jeedom, car je trouvais qu’il commencés à être bien pris (charge proche de 4). J’ai donc mis jeedom sur une Rpi4/SSD. J’ai donc réinstallé jeeedom depuis 0 et restauré une sauvegarde.
J’ai cherché dans Google ce message d’erreur, je n’ai pas trouvé de réponse a mon soucis. J’ai bien trouvé un topic sur ce forum ou un utilisateur à rencontré ce problème.
J’ai crée un second broker pour voir si le problème était le même, mais la, je me suis retrouvé avec le premier hors ligne et le second « malade »… J’ai transféré mes objets dans le second broker et supprimé le premier… résultat identique…

Je n’ai pas trouvé de solution ou du moins savoir ce que je peux faire pour essayer de trouver d’où pourrais provenir le problème.
Je pourrais repartir sur une nouvelle installations complete, mais la cela serait fastidieux !
C’est pourquoi, je me décide après plus de 3 mois de tests/recherches a poster sur ce forum.
Actuellement, je redémarre le brocker environ 2x par jours… mais parfois, j’oublie/ne suis pas devant un PC et du coup ben ca marche moins bien :stuck_out_tongue:

Si quelqu’un a une idée de ce que je peux faire…

Merci
Antoine

Bonjour,

Je rencontre exactement le même problème.
J’ai parcouru et rajouté un maximum de log sur la fonction « publishMosquitto ».
Ce que j’ai pû constater à ce niveau, c’est que l’erreur se produit lors du « $client->loopForever(); ».

Maintenant, reste à savoir si c’est un bug dans la librairie en dessous, ou si c’est la configuration de $client qui pose problème.

Je continue les recherches

Bonne Journée

Arf,

Voici la librairie qui est utilisée en dessous : mgdm/Mosquitto-PHP: A wrapper for the Eclipse Mosquitto™ MQTT client library for PHP. (github.com)
Et il y a 2 issues dessus correspondant au probleme… datant de 2019…

Bonjour,
J’ai exactement le même problème. Avant je rebootais le pi. maintenant, en ayant lu ces messages, je relance le broker et ça marche. Mais ce n’est pas satisfaisant.
Dans le lien que tu as mis, je ne vois pas de solution (cela dit, pas mal de choses sont du chinois pour moi donc…
Tu as résolu ton problème définitivement ?

Pareil j’ai trop souvent le problème , j’ai l’impression que la seule solution c’est un autre plugin mqtt qui n’utilise pas cette librairie php (qui à l’air totalement à l’abandon)

Sais tu si le plugin MQTT (et non JMQTT) utilise cette librairie ?
Je me trompe en disant que le choix se limite à ces deux plugins ?

Bonjour,

J’avais ce soucis.
Suite à un passage à Debian10 (donc réinstall de l’os / de Jeedom / restauration), le problème a disparu.

Ca ne doit pas être qu’une question de Debian 10 (réinstallation en 64 bits il y a quelques semaines) car j’y suis aussi et j’ai le problème.

Arg, tout à fait, ca recommence aussi de mon coté.
Moi ca s’est mis à le faire dès que je me suis mis à envoyer des payload toutes les minutes.
Est-ce ton cas?

Edit : les 2 plugins utilisent la même librairie.

Quand je regarde avec MQTT fx, je vois que j’ai largement plus qu’une par mn en "réception des messages = subscribe " (une dizaine ?) par jeedom et dans l’autre sens, jeedom doit envoyer largement moins. Je dirais moins d’une par mn.
Là, ça fait 5 j que j’ai chargé le fork dont on parle là : Jeedom / Home-assistant hybride et que je n’ai pas de problème, mais le fork en question n’est pas annoncé comme résolvant ce problème. A suivre …

On travaille justement avec nebz pour réunir les différentes améliorations de jMQTT.
J’ai ressorti une ancienne version que j’avais de coté pour la partie publication.
C’est pas très beau mais ca résoud le problème pour moi.

Au final, tout ce qui est envoi de messages MQTT est fait via la commande mosquitto_pub.
La librairie ne sert qu’à faire la reception.

Dans ce cas précis, c’est beaucoup plus stable.

1 J'aime

@Domochip

Hargh, je viens d’avoir de nouveau le problème.

Pour info mon fork va être intégré à celui de @Domochip, quand ça sera fait je retirerai les références au mien du forum

2 J'aimes

Ok merci pour le boulot !
Donc pour l’instant, je ne fait rien. Ou mieux, je peux servir de testeur…

c’est fait ! :

image

2 J'aimes

SUPER !
Voilà, c’est installé. Enfin je crois car j’ai fait la bêtise de ne pas repérer l’ancien n° de version.
Vous me confirmez que c’est la nouvelle version ?
Capture
Merci @nebz @Domochip

oui c’est bon

Il y a quand même un truc qui m’étonne,
Lorsque je fais tester sur cette commande :
image
Le volet ne bouge pas. Cela vient de jMQTT qui ne passe pas le paramètre de position (50 dans le cas présent) car lorsque je regarde MQTTfx (pour ceux qui ne connaissent pas, logiciel qui permet de publier ou de s’abonner à n’importe quel topic, bref de voir les messages MQTT), je vois le message mas rien comme paramètre.
Capture
Par contre, si au lieu de curseur, je mets Defaut, là ça marche :
Capture

Capture

Bug ou normal ?

si tu mets une valeur ca doit etre un type « Default »

c’est un comportement normal de jeedom

si tu veux mettre curseur, tu dois mettre #slider# à la place de la valeur

1 J'aime

Ok compris.
En plus ca m’éclaire un peu sur pourquoi je n’arrivais pas (plus) à déclencher un scénario qui lançait cette commande pos. Normal, je n’étais plus en « Defaut » maintenant mon scénario marche.
cf Commment passer une valeur à une commande
Merci !