Anomalie jmqtt: la valeur n'est pas actualisée

Tags: #<Tag:0x00007fa7a7920fd0>

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.
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 c’est clairement un bug.
Est-ce que d’autres on le même problème svp ?

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!
2021-03-25 10_46_58-Putty|590x101

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

Hello

c’est sans doute une histoire de . ou de ,
Le point c’est pas le séparateur numérique partout. Si la valeur remonte avec un point => c’est considéré comme du texte

Bonjour.

Dans ce cas, il faudrait récupérer la valeur qui passe dans le payload mais que ne passe pas dans la commande numeric.
Est-ce que tu as des bornes min et max ? (minValue, maxValue)
Si la valeur est en dehors de la plage, elle est pas mise à jour.
C’est dans la méthode event du core :

        		if ($this->getSubType() == 'numeric' && ($value > $this->getConfiguration('maxValue', $value) || $value < $this->getConfiguration('minValue', $value)) && strpos($value, 'error') === false) {
					log::add('cmd', 'info', __('La commande n\'est pas dans la plage de valeur autorisée : ', __FILE__) . $this->getHumanName() . ' => ' . $value);
					return;
				}

Si tu veux qu’elle soit mise à jour à chaque fois, qu’importe la valeur, ne mets pas de borne min et max.
Ou augmente ce max.
Ou passe-la en other.