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 |
Page 1 sur 1 | Le fuseau horaire est UTC+1 heure |
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/ |