Forum eedomus http://forum.eedomus.fr/ |
|
Filtrage numérique de données pour eedomus http://forum.eedomus.fr/viewtopic.php?f=50&t=12240 |
Page 1 sur 1 |
Auteur: | dommarion [ 12 Avr 2024 21:20 ] |
Sujet du message: | Filtrage numérique de données pour eedomus |
Bonjour à toutes et tous, J'ai développé un Plugin de Filtrage numérique de données pour la box eedomus. Ce plugin permet de filtrer un capteur numérique selon la méthode au choix parmi 2 méthodes. Les 2 méthodes retenues sont la méthode des moyennes et la méthode FIR (Finite Impulse Response). J'ai testé 2 autres méthodes (Savitzky-Golay et Whittaker-Henderson) qui n'ont pas été convainquantes et donc pas retenues. Pour installer le filtre, c'est assez simple, on sélectionne la donnée à filtrer dans la liste des capteurs eedomus, puis on sélectionne la méthode, et ensuite on indique la valeur du paramètre. ->Paramètre pour la méthode des moyennes: nombre de valeurs à moyenner (exemple: 5) ->Paramètre pour la méthode FIR: liste des valeurs à affecter (exemple: 0.1,0.2,0.4,0.2,0.1) Bon tests et merci de votre feedback. dommarion |
Auteur: | opa95 [ 13 Avr 2024 07:54 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour dommarion
Merci pour cet outil que je n'ai pas encore essayé (problème de disponibilité), perso, j'utilise divers scripts moins facile à mettre en oeuvre. Tu ne propose pas de filtre IIR (Ininite Impulse Response) qui nécessite moins de mémoires? Bon week-end |
Auteur: | dommarion [ 13 Avr 2024 10:07 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour opa95, Merci pour ta réponse. Bien sûr je peux developper le filtre RII, pour cela il suffit d'insérer dans le script la fonction équivalente et adapter le Json avec cette nouvelle sélection. Il peut y avoir une multitude de méthodes de filtrage. Le filtre numérique RII est plus adapté à certains cas, et un peu moins à des signaux bruités. Voilà un comparatif intéressant: RII vs RIF Voilà le code si nous devions l'intégrer:
Je te laisse commenter cela. Bon weekend dommarion |
Auteur: | opa95 [ 13 Avr 2024 10:45 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour dommarion
Sur ma box (eedomus+) la fonction "print_r()"ne fonctionne pas renvoi : "La fonction print_r() n'est pas autorisée" En toute rigueur, il faudrait adapter les fréquences d'échantillonnage et de coupure : ce n'est pas catastrophique, car seul le rapport compte. L'échantillonnage sur la box ressemble plutôt à 1/60 qu'à 44100 Hz (filtrage audio). D'autre part, il me semble que les méthodes utilisées supposent un échantillonnage régulier, alors que la box ne renvoie pas de valeur si deux valeurs successives sont identiques : pour un capteur de température lu toutes les minutes, cette nuit, l'écart des valeurs renvoyées allait de 2 à 31 minutes (les valeurs à 31 minutes sont en fait forcées par la box pour informer qu'elle est toujours vivante, et peut alors renvoyer une valeur identique à la précédente). Je pense qu'il faudrait faire un sur-échantillonnage (interpolation toutes les minutes) avant de filtrer les valeurs obtenues) |
Auteur: | dommarion [ 13 Avr 2024 11:00 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Oui en effet, ce script était déstiné à un émulateur de PHP, j'ai remplacé la fonction print_r() par var_dump() pour la box eedomus.
J'ai ajusté en effet dans le code les fréquences d'echantillonage (6000Hz) et la fréquence de coupure (2000Hz). J'utilise la fonction getValue() d'eedomus pour éviter de récupérer l'historique, mais tu as tout à fait raison, lorsque la valeur est inchangée, alors la fonction getValue de la box eedomus ne renvoie pas de données. Par contre si l'on questionne l'API de la box eedomus avec la fonction httpQuery() en GET et utilisant l'url: https://api.eedomus.com/get?action=peri ... show_all=1"; Alors on récupère tout l'historique entre 2 dates et on peut conserver les dernières valeurs correspondantes à l'échantillonnage paramétré. Pour l'instant, je ne suis pas entré dans ce détail de programmation (ce que j'ai fait dans le Plugin Intégrale). Regardons comment se comporte le filtrage numérique et on ajustera en fonction des retours. Merci beaucoup pour tes contributions. Bon weekend dommarion |
Auteur: | opa95 [ 13 Avr 2024 14:03 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
C'est le défaut des simulateurs, généralement je teste certaines fonctions en local, puis je passe sur la box dès que les interactions sont importantes.
je ne récupère pas plus de données en interrogeant directement l'historique depuis mon navigateur https://api.eedomus.com/get?.... Toutefois, si on ne reçoit pas de données, c'est généralement que la dernière donnée n'a pas changé (sauf problème de communication) et l'on peut donc entrer directement la dernière valeur dans le filtre : dans ton exemple, pour une donnée lue toutes les minutes et un FIR à 5 coefficients, la sortie deviendrait égale à l'entrée au bout de 5 minutes sans réception de nouvelle valeur. Je rencontre de temps en temps un autre problème qui ressemble aux "clics" des repiquage sur disque vinyle (poussières, rayures), mes capteurs 433 MHz ne sont pas assez fiables et on récupère une donnée avec un digit erroné ou 0, et un envoi correct la minute suivante : par exemple 19.5;1.5;19.5 (avec une durée de l'état 1.5 d'environ 60 secondes). Pour éviter les perturbations, il ne faut pas entrer cette valeur dans le filtre et mettre la dernière valeur valide. Dans le cas d'un capteur lent (variation de température max de mes thermomètres d'environ 0.05° par minute) on peut repérer cette valeur aberrante, mais avec certitude seulement après l'arrivée de la valeur suivant la valeur fausse (donc avec une minute de décalage). On pourrait tester l'écart de valeur et de temps entre les mesures 1 et 2, mais la mesure 1 peut être inchangée depuis 30 minutes ou plus en cas de problème de communication, ce qui autoriserait une variation de 1.5°(19.5;18;19.5); ça permettrait toutefois de détecter les plus grosses erreurs. |
Auteur: | dommarion [ 13 Avr 2024 15:26 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Ok merci opa95, Je te propose de tester la fonction et d'ajuster les paramètres. Quand tu seras OK, alors j'intègre la méthode de filtrage IIR à mon plugin. Ceci permettra de tester sur eedomus sur plusieurs jours. Bon weekend, dommarion |
Auteur: | dommarion [ 22 Mai 2024 17:12 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour à toutes et tous, Un grand merci à opa95 qui a fait évoluer le plugin filtrage numérique de manière très significative. Plusieurs méthodes sont disponibles, mais surtout il existe un prétraitement qui permet de stabiliser la méthode de filtrage et de l'adapter au type de capteur... Nous sommes au top avec ce Plugin, vive la communauté eedomus Cette version avec sa documentation est publiée sur le Store eedomus en V1.1 Bon tests dommarion |
Auteur: | Fab_Rice [ 22 Mai 2024 18:17 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonsoir et merci les gars Je testerai probablement cela sur l'entrée analogique Redox de l'eedomus de la piscine |
Auteur: | opa95 [ 22 Mai 2024 21:29 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonsoir Fabrice
Ne te précipité pas trop, ou dis moi exactement ce que tu veux faire, il y a encore un ajustement à finaliser demain entre le script et la procédure de création du plugin. Tu peux installer le plugin, et ensuite je te dirai quoi modifier dans la fenêtre pour que la version en ligne tourne correctement, sinon, il faut encore attendre quelques heures. Pour avancer les choses, tu peux me donner la cadence actuelle des mesures et la période du bruit que tu veux atténuer. Bonne soirée |
Auteur: | opa95 [ 24 Mai 2024 13:41 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour Voici le simple effet du préfiltrage du signal avec le Plugin mis à jour par Dommarion aujourd'hui : La dernière version est sur le store. |
Auteur: | Fab_Rice [ 01 Sep 2024 09:21 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour opa95, Alors je me penche de plus près sur ce filtre numérique et plus particulièrement sur ma mesure de redox (ORP) de la piscine. Pour faire cette mesure j'ai installé une carte de mesure voltmétrique analogique dont la plage est de 0-3Vdc avec sa sonde dédiée. C'est une mesure analogique en millivolts où j'applique des calculs liés à l'étalonnage pour obtenir une plage de lecture entre disons 450 et 850mV. Ma mesure de base est elle comprise entre 1500 et 1100mV, soit donc 400mV de plage de mesure. La période de mesure de l'eedomus est au minimum de 2 min. Hors bien évidemment, dans ces plages de mesures assez basses, de multiples raisons font qu'il y a des parasitages et variations liés aux autres composants du système (pompe, stérilisateur, réseau Enedis en lui même ...) Je cherche donc à filtrer des crêtes de mesures, de mon point de vue, d'une mesure à une autre, soit en 2 min, il ne peut pas y avoir une variation de plus 5%, je donne ce chiffre de manière empirique, mais on peut je pense dire que c'est moins car une production de chlore en gramme/heure dans un volume de 22m3 d'eau ne peut pas varier très rapidement. Saurait tu donc, s'il te plait, me dire si ce filtre numérique est paramétrable dans mon cas, car j'avoue avoir lu sa documentation très "mathématicienne" mais n'en avoir pigé que le dixième Par avance, merci à toi |
Auteur: | opa95 [ 01 Sep 2024 11:08 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour Fabrice Le "traitement de signal" est effectivement assez mathématique. Pour pouvoir le faire, il faut observer les variations du signal de base pour pouvoir séparer la valeur "physique" de base et les divers "parasitages". S'il apparait du "bruit" en général de fréquence élevée : dans ton cas, correspondant à des variations aléatoires de période comprises entre 2 minutes et probablement environ 20 minutes (je n'ai pas d'idée sur la variation naturelle du rédox en fonction du temps); on pourrait alors désirer filtrer toutes les fluctuations de durées inférieures à 20 minutes et faire un "lissage" avec une période de l'ordre de 20 minutes, soit 10 échantillonnages toutes les 2 minutes. Tu pourrais donc dans un premier temps tester un filtre passe bas avec une période de coupure de environ10 : par exemple un Butterworh d'ordre 5. Il devrait réduire les fréquences supérieures à la fréquence de coupure, donc les périodes inférieures à 10*2 minutes. VAR1 -> id du capteur, VAR2 -> butt,10,5 Compare les courbes avant filtrage et après. Tu peux créer plusieurs plugin avec diverses valeurs de période et d'ordre (ordre inférieure à la période). S'il apparaît des valeurs aberrantes dans ton signal, le lissage risque de ne pas suffire : elles seront atténuées, mais amèneront quand même des variations du signal de sortie. On pourrait utiliser une limitation des valeurs ou de la vitesse de variation de ces valeurs : j'ai un plugin, dérivé de "calculator" (V1.3) en cours de finalisation, ou utiliser le préfiltre du plugin "lissage". Essaie déjà sans préfiltre et dis-moi ce que ça donne. |
Auteur: | opa95 [ 06 Sep 2024 14:32 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour On peut tester des valeurs plus fortes en doublant les valeurs : butt,20,8 ou même butt,50,8 ou bien conserver butt,10,5 et faire un préfiltrage : VAR3 -> moy:5 (moyenne de 5 entrées successives -> une valeur moyenne transmise toutes les 10 minutes (5*2)) |
Auteur: | Fab_Rice [ 06 Sep 2024 14:52 ] |
Sujet du message: | Re: Filtrage numérique de données pour eedomus |
Bonjour, J'ai testé le "butt,30,10" et j'avais plus d'amplitude qu'avec le "butt,10,5", je vais testé le préfiltrage avec la moyenne |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |