domotruc / jMQTT

Jeedom plugin to interface as a client with an MQTT broker.
16 stars 8 forks source link

Anomalie lecture de valeur #118

Open mike-k68 opened 3 years ago

mike-k68 commented 3 years ago

Bonjour,

J'ai un souci pour extraire des valeurs de messages de type JSON avec JMQTT: Ma config: Jeedom 4.1.20, JMQTT 2020-02-18 01:42:45

J'utilise ebusd pour le monitoring et le contrôle de ma chaudière. ebusd publie périodiquement des messages dans MQTT. En l'occurrence, le message me donnant la température d'eau dans le ballon se présente sous la forme: topic: ebus/bai/StorageTemp payload:

{
     "temp": {"value": 60.62},
     "sensor": {"value": "ok"}}

J'ai donc ajouté une commande de type info en mettant dans la case topic: ebus/bai/StorageTemp{temp}{value} Mais la valeur n'est pas récupérée.

2021-03-25 10_46_58-Putty

J'ai donc ajouté une commande de type info pour récupérer le payload: ebus/bai/StorageTemp Ca a fonctionné. J'ai alors utilisé le bouton "JSON" pour ajouter d'autres commandes. Ca m'a créé la commande ebus/bai/StorageTemp{temp}{value} exactement comme je l'avais créée et là, miracle, ça a fonctionné !

Malheureusement après quelques jours d'utilisation, ça ne fonctionne à nouveau plus: le payload est bien actualisé, mais pas la valeur. Pour moi il doit s'agir un bug. Je précise que j'utilise JMQTT depuis pas mal de temps pour d'autres équipements et que je n'ai aucun souci par ailleurs.

Merci!

mike-k68 commented 3 years ago

En fait, lorsque je mets "Température" de type autre, la mise à jour se fait bien.

Mais lorsque je mets "Température" de type numérique ça ne fonctionne plus si celle-ci dépasse la valeur "max" dans la config de la valeur. Il faudrait que la valeur soit prise en compte dans tous les cas, et que la configuration "max" ne soit utilisée que pour la mise à l'échelle lors de la représentation graphique dans le widget

vanackej commented 2 years ago

Même problème ici, tu as trouvé une solution ?

Loic74650 commented 2 years ago

De mémoire c'est pas un bug; la valeur max que tu définis sert justement à écrêter les valeurs aberrantes de la BD

mike-k68 commented 2 years ago

J'ai contourné le problème en mettant des valeurs min et max suffisamment larges pour que les valeurs reçues soit admises.

@Loic74650 : Je suis arrivé à la conclusion que c'était effectivement un comportement voulu et non un bug, mais on mélange fonctionnellement le filtrage des valeurs de la BD et la mise à l'échelle du rendu visuel, et ça ne me paraît pas correct. L'idéal serait de scinder les deux.

Loic74650 commented 2 years ago

Oui l'approche est discutable. Tu peux aussi mettre en forme tes valeurs dans les paramètres de la commande en utilisant la variable #value# avant que celles-ci soient affichées