Valeurs erronée dans l'historique

Bonjour,

Le contexte: j’ai un système opérationnel avec un Jeedom V3 sur RPI3B+/carte SD, je commence à faire des tests avec un Jeedom V4 sur un autre RPI3B+/disque SSD, dans le but de migrer quand la V4 sera officielle.
Sur ce nouveau système Jeedom V4, j’ai juste un équipement: un Arduino avec soft MySensor en GW connecté en USB, et le plugin JeeMySensors. Toute cette partie semble OK.
L’Arduino remonte 3 infos: température, humidité et présence.

J’ai un soucis sur l’historique de l’humidité, de temps en temps il y a une valeur erronée.

=> il y a une valeur 603 qui a été mise alors que ça devrait être 60.

J’ai activé les logs du plugin, a priori lui récupère bien une information correcte à l’heure où il y a cette valeur dans l’historique:

[2020-10-09 08:40:57][INFO] : [moniteur] SERIAL - 2 --> 0;3;1;0;1;60.00
[2020-10-09 08:40:57][INFO] : [  2  ] |--> Message reçu sur le Gateway
[2020-10-09 08:40:57][INFO] : [  2  ]     \___ Node : 0 et sensor ID : 3
[2020-10-09 08:40:57][INFO] : [  2  ]         \___ Action : set -> 60.00 pour V_HUM

Il semble que le problème se produise quand la valeur est entière (XX.00), par contre coté température jamais vu le symptôme (mais possible que je n’ai jamais eu de T° se terminant par .00).

Comment investiguer ce problème ?

J’ai posté dans la catégorie plugin, mais peut être que le problème est du coté core V4.
Sur d’autres V3 j’ai le même type d’équipement (arduino MySensor en USB avec plugins JeeMySensors et mySensors) et je n’ai jamais constaté cela.

Merci,

JeedAlf

Bonjour,
Je vais essayer de reproduire ton problème sur un jeedom v4 chez moi. Afin de voir si le problème est identique.
Cdt,

Re,
je viens d’essayer chez moi … et je n’ai pas de valeur erronée …

Peux-tu vérifier le point suivant :

  • pour ton graph as-tu sélectionner une regroupement ? (somme par heure ou autre ?)

Cdt,

Re, non il n’y a aucun regroupement sélectionné.

je pourrai modifier le code coté arduino pour forcer des valeurs XX.00, et voir si ça devient systématique.

Sinon, que regarder d’autre coté Jeedom ? Est-ce que ça pourrait être la fonction d’archivage des valeurs qui bugue si tout est Ok coté du plugin ?

Jeedalf

Perso, j’ai le même problème mais avec des valeurs beaucoup plus grande. J’ai pensé que c’était soit dans le transfert entre le node et la gateway, soit le node en question qui décode une trame de data, le faisait de manière erronée. ce qui ne semble pas du tout être ton cas.

il faudrait observer effectivement l’ensemble des logs sur une période donnée où le problème apparait …
Peut-être une valeur du node qui est hors limite …
Il faudrait analyser l’ensemble des valeurs reçues par le gateway sur une période donnée… il suffit d’une valeur pour que la valeur en historique soit faussée … imaginons à 15h02 → 60.00 et à 15h04 → 1200.00 et sera historisé 630.00…
ça peut se faire avec un scénario par exemple qui surveille la valeur humidité … si > à 100 alors alerte par exemple… c’est une premier piste …

Dans les logs qui correspondent à mon message, j’ai regardé l’ensemble des valeurs remontées, et aucune n’était hors range. Et en fait pour le pic de 8h40, il n’y avait qu’une seule valeur qui pouvait correspondre celle que j’ai indiquée.
Pour moi le soucis est sur le traitement postérieur à cette ligne:

[2020-10-09 08:40:57][INFO] : [  2  ]         \___ Action : set -> 60.00 pour V_HUM

Je vais faire d’autres tests comme je disais. Mais admettons que si je ne remonte plus que des valeurs XX.00 alors l’historique contienne des XXX.00, on ferait comment pour investiguer ?

Ca ressemble à un pb de conversion float => string sur des valeurs entières.

JeedAlf

En partant de cette supposition, je simule l’envoie d’une donnée 60.00, cela devrait remonter le même défaut … hors je n’arrive pas à reproduire le problème chez moi… cela ne veut pas dire que ce n’est pas ça … mais il faudrait que je puisse reproduire le problème pour aller plus loin …
Est-ce qu’il t’ai possible de simuler une valeur sur ton node capteur humidité ? Éventuellement en forçant par programmation ou par câblage une valeur entière XX.00 ?

 if (is_object($idlogic)) {
            log::add('JeeMySensors', 'info', '[' . str_pad($id_gw_jeedom, 5, " ", STR_PAD_BOTH) . '] |--> Message reçu sur le Gateway');
            log::add('JeeMySensors', 'info', '[' . str_pad($id_gw_jeedom, 5, " ", STR_PAD_BOTH) . ']     \___ Node : ' . $id_node . " et sensor ID : " . $id_sensor);
            log::add('JeeMySensors', 'info', '[' . str_pad($id_gw_jeedom, 5, " ", STR_PAD_BOTH) . ']         \___ Action : ' . $_api['C'][$command] . ' -> ' . $payload . ' pour ' . $_api['V'][$type][0]);
            foreach ($idlogic->getCmd() as $cmd) {
              if ($cmd->getLogicalId() === $idlogic_etat ) {
                $cmd->event($payload);
                $cmd->save();
              }

Peut être que je dois faire un floatval($payload) au niveau de $cmd->event($payload); mais ça n’explique pas pourquoi chez moi je n’ai pas le problème avec une valeur entière…

Je viens de faire le test en forçant les valeurs float à être entière, et c’est bien reproductible.

Je viens de me rendre compte que c’est le fait de passer par le plugin virtuel qui provoque cela, donc rien à voir avec le plugin jeemysensors qui fait bien le bon boulot:

BugVirtuel
« Bureau » est le virtuel qui regroupe les 3 valeurs et à coté c’est l’affichage direct du plugin, que je viens d’ajouter, je ne les avais pas mis avant…

Bref désolé, et merci pour le support :+1:
Je vais vérifier si ce pb est connu et aller poster ailleurs.

JeedAlf.

Si tu mets historiser sur le sensoe-0-3:2 c’est ok ?
Car je viens de faire un virtuel … et je n’arrive pas à reproduire le problème …
@geoblack utilise lui aussi un virtuel ?

Non, mais pour mon problème je ne pense pas que ce soit le plugin.
En fait, mon node décode une trame particulière et envoie ensuite l’info à la gateway.
Je pense que le problème vient du node qui une fois toutes les x heures, décode mal la trame

Hello,

Oui, apparemment l’historisation sur sensor-0-3:2 marche correctement.
Mais en fait même à l’affichage de la valeur courante, en passant par le plugin j’observe un 3 en plus qui se met à la fin parfois:
HumidVirt4
J’ai créé un 2ème virtuel qui se comporte correctement pour l’instant.
Je n’avais pas encore mis de limites 0-100 sur les valeurs, je vais le faire, mais bon si ça marche ça va juste masquer un problème sous-jacent.

JeedAlf