Page 1 sur 1

Filtrage données numériques

Publié : 20 août 2019, 17:24
par pat71
Bonjour,
Je patauge avec jeedom en cherchant un moyen pour réaliser un filtrage de données :
j'ai un capteur de débit qui me donne des valeurs de consommation, mais il n'est pas parfait et j'ai parfois des données incohérentes ce qui fait que ma courbe d'historique est bien perturbée.
Je voudrais, via un virtuel ou autre, éliminer ces valeurs incohérentes (inférieure à la valeur précédente ou très largement supérieure).
- Comment comparer une valeur à la valeur précédente historisée ?
- Comment "supprimer" ou ne pas prendre en compte une valeur pour qu'elle ne soit pas historisée en fonction du résultat de la comparaison précédente, ou éventuellement la remplacer par la valeur précédente ?
Merci beaucoup.

Re: Filtrage données numériques

Publié : 20 août 2019, 19:55
par Theduck38
Bonjour,

Malheureusement je ne pense pas que ce soit possible pour l'instant. Il n'y a rien dans les réglages de valeurs des commandes qui permettent de filtrer de cette manière. Il faudrait faire une usine à gaz de scénario et de modif directe de la BDD de Jeedom via du code php avec de gros risques pour les données.
Ce problème s'est posé récemment pour les capteurs ultrasoniques pour les récupérateurs d'eau. Pas de solution à ma connaissance.

Ce type de traitement pourrait en revanche faire l'objet d'un plugin si une bonne âme voulait bien s'y atteler.

Re: Filtrage données numériques

Publié : 20 août 2019, 20:27
par winhex
bonjour
part sur virtuel A info brut (celle que tu as)
virtuel B info corrigé

entre un scénario
que A déclenche
et qui incrémente B
en condition se que tu veux avec des ET/OU
si (A>B ou A-B > 1 ou A-B < 100) et A >lastbetween(B, 5 mn) et....

(tu as un tas de possibilités dans la doc scenario que tu combines à de la logique arithmétique )
la résultante étant true (vrai) alors
action Event sur B valeur A

et pour un retour de B à 0
ajout de cron à minuit
puisque tu recherches une valeur qui progresse
Je voudrais, via un virtuel ou autre, éliminer ces valeurs incohérentes (inférieure à la valeur précédente ou très largement supérieure).
...

tu pourras supprimé l'historique de A

exemple pour le style de condition
ma vmc se lance avec une comparaison de plus de 3% en 5mn + un taux % > 61 + mode (auto) + état Off

Code : Tout sélectionner

(#[Salle de bains][Sondes Salle de bains][Humidité]# - lastBetween(#[Salle de bains][Sondes Salle de bains][Humidité]#, yesterday, -5 min) > 3) ET (#[Salle de bains][Sondes Salle de bains][Humidité]# > 61) ET (#[Salle de bains][VMC Salle de Bains][Mode]# == 1) ET (#[Salle de bains][VMC Salle de Bains][Etat]# == 0)
mais sans exemple concret de ta part il est difficile de définir les conditions (reel) valable pour ton cas.
mettre en mémoire la différence A d'une minute (évalué vrai) en mémoire et la joindre à B,...

Re: Filtrage données numériques

Publié : 20 août 2019, 21:39
par Theduck38
C'est pas mal... effectivement j'avais oublié la possibilité 'Event' pour historiser une valeur depuis scénario.
Du coup c'est faisable avec une "pas trop grosse usine à gaz" et sans toucher directement la BDD Jeedom.

Re: Filtrage données numériques

Publié : 21 août 2019, 13:20
par pat71
Bonjour,
Merci pour vos réponses, ça semble effectivement une solution intéressante.
Je me mets au travail en suivant cette piste ...
A+