transformer un niveau en compteur

Discutez ici de vos souhaits d'évolutions et de vos idées pour eedomus

transformer un niveau en compteur

Messagepar Jackoncept » 22 Oct 2022 09:53

Salut,
J'ai une citerne d'eau pour laquelle j'ai fait un radar de niveau. Je voudrais transformer le niveau mesuré en calculant la surface sous la courbe entre 2 périodes pour pouvoir savoir combien j'ai consommé d'eau sur la période. Auriez-vous une idée sur comment faire ?

Capture d’écran 2022-10-22 à 10.50.29.png
Capture d’écran 2022-10-22 à 10.50.29.png (48.13 Kio) Consulté 3798 fois


Capture d’écran 2022-10-22 à 10.52.25.png
Capture d’écran 2022-10-22 à 10.52.25.png (541.03 Kio) Consulté 3798 fois
Jackoncept
 
Messages : 40
Inscription : 06 Sep 2017
Localisation : Suisse

Re: transformer un niveau en compteur

Messagepar Kebiel » 22 Oct 2022 17:59

Bonjour,
Je ne suis pas un pro des scripts ou règles, mais il me semble que c'est une équation à deux inconnus; le volume d'eau qui s'est déversé dans la cuve, et le volume d'eau qui a été soutiré de la cuve. Comme il n'y a qu'un élément connu; volume d'eau dans la cuve à l'instant t;..pour moi on ne pourras que savoir de combien le volume de la cuve a varié sur une période (variation qui est due au deversage et soutirage). Il faudrait un compteur à l’entrée ou la sortie de la cuve...du coup autant mettre un compteur qui indiquera directement le volume consommé.

désolé de ne pas avoir de solution plus simple. peut être d'autres personnes du forum ?
Keb
Kebiel
 
Messages : 216
Inscription : 27 Déc 2017

Re: transformer un niveau en compteur

Messagepar Jackoncept » 23 Oct 2022 21:30

je suis d'accord mais ne pourrait-on pas prendre l'aire sous la courbe lorsque elle descend pour un soutirage et l'aire sous la courbe quand elle monte pour un remplissage ? mathematiquement je suis en butée de mes compétences, mais une fx avec une intégrale qui va bien pourrait peut-être faire le job ? :?:

Merci pour ta réponse en tout cas 8-)
Jackoncept
 
Messages : 40
Inscription : 06 Sep 2017
Localisation : Suisse

Re: transformer un niveau en compteur

Messagepar lougarou60 » 24 Oct 2022 08:36

Bonjour
C’est un peu comme le problème de la baignoire à l’école primaire ….
En fait si tu souhaites distinguer remplissage et vidange de ta citerne :
1 Remplissage et vidange peuvent-ils être simultanés ?
Si oui, alors c’est je pense rédhibitoire, insoluble, infaisable, etc..
Si non, alors on peut réfléchir ……
2 Quel niveau de précision espérer ?
Admettons qu’on cherche et qu’on trouve ….
Il faudra filtrer le signal pour masquer les petites oscillations, enchainer les calculs, tenir compte des temps de traitement et/ou de rafraichissement, etc …
Tout ça avec des modules et règles classiques Eedomus, au bout ce ne pourra être qu’un résultat « à peu près »
Un truc genre script pourrait peut être faire mieux et plus simple, mais la je sais pas faire
lougarou60
 
Messages : 257
Inscription : 07 Déc 2018

Re: transformer un niveau en compteur

Messagepar opa95 » 24 Oct 2022 09:24

Bonjour
Jackoncept a écrit:je suis d'accord mais ne pourrait-on pas prendre l'aire sous la courbe lorsque elle descend pour un soutirage et l'aire sous la courbe quand elle monte pour un remplissage ? mathematiquement je suis en butée de mes compétences, mais une fx avec une intégrale qui va bien pourrait peut-être faire le job ? :?:

Merci pour ta réponse en tout cas 8-)

Lougarou60 a raison.
Avec un signal aussi "bruité" tu ne peux rien faire en direct.
Il faut d'abord filtrer le signal pour réduire le bruit : à première vue tu as un bruit fréquent d'environ 10 litres entre 2 mesures, parfois seulement de 1 litre.
Pour le réduire on peut utiliser l'historique et faire une moyenne ou une moyenne pondérée sur un certain nombre de mesures successives. Si on ne veut pas utiliser l'historique, on peut faire un filtre récursif, par exemple result1 = k*mesure +(1-k)*result0 puis ensuite result0 = result1 (j'ai un script qui fait cela).
Si k=1 il n'y a aucun filtrage (result = mesure), si k=0 il n'y a pas de mesure (result = result0) et pour filtrer on prend pour k une valeur suffisamment petite pour filtrer et suffisamment grande pour ne pas trop écraser les variations : il faudra un certain nombre de mesures pour que result s'adapte au signal (le plus simple étant d'amorcer result avec la première mesure).
Pour déterminer k, il faudrait connaitre les valeurs numériques de tes mesures et non pas seulement la courbe. Tu peux faire un test en créant un "état" "volume lissé" et en utilisant le calculateur du store avec la formule device(id_capteur)*k+device(id_volume_lissé)*(1-k) (on peut commencer avec k=0.5 et varier par pas de 0.1 pour observer les résultats, ça va prendre plusieurs jours sauf si tu récupères les valeurs mesurées et que tu testes sur excel).
Lorsque ta courbe sera suffisamment lissée, il serait intéressant de savoir quelles sont les vitesses max de remplissage et de soutirage pour faire la différence entre une augmentation normale de niveau (remplissage) et une variation liée à une mesure aberrante et l'équivalent pour le soutirage :
par exemple les débits max et l'intervalle de mesure. Cela permettra de définir une montée ou une descente du niveau.
Enfin, ce n'est pas une intégrale qu'il faut calculer, mais il faut faire une différence entre le niveau moyen avant la montée et le niveau à la fin de la montée (ou la descente).
Il faut un script pour faire tout cela.
De toute façon tu ne pourras pas être sur de tes valeurs résultantes si tu as des périodes de remplissage et de soutirage simultanées : il faudrait mesurer le débit de soutirage ou au moins le temps de fonctionnement de la pompe ou d'ouverture de la vanne, connaissant son débit.
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise

Re: transformer un niveau en compteur

Messagepar Jackoncept » 24 Oct 2022 18:37

Super, merci pour vos réponses ça m'éclate et vous m'avez inspiré :

La précision est à 10% prêt, donc si lorsque il pleut et qu'en meme temps je fais un soutirage je "rate la conso ça ne sera pas grave!

Pour vous dire, voici mon équation pour convertir la hauteur de mesure du niveau d'eau (fait par un ultrason) : (3.14/4*1.7*1.7*2.2*(((170-device(2670351)+26)/100)/1.70))*1000

(citerne de forme cylindrique avec 2 demi-sphères.

on est pas sur une précision pharmaceutique :)

Je vais filtrer le signal et je vais me lancer dans un calcul simple : valeur avant allumage de la pompe - valeur après extinction de la pompe (j'ai le ON OFF remonté dans l'eedomus) et voir le degré de précision que ça peut donner.
Jackoncept
 
Messages : 40
Inscription : 06 Sep 2017
Localisation : Suisse

Re: transformer un niveau en compteur

Messagepar opa95 » 25 Oct 2022 09:08

Bonjour Jackoncept
Pour le soutirage, le plus simple est de faire le produit du débit de la pompe par le temps de fonctionnement, éventuellement en retirant quelques secondes pour tenir compte de l'amorçage.
Je ne suis pas convaincu de ta formule de calcul du volume du cylindre avec des embouts sphériques tronqués : je suppose qu'il est horizontal. Autant la formule pour les parties sphériques est simple (pi*h2*(R-h/3)) pour une hauteur de remplissage h autant la partie cylindrique est plus complexe, mais on doit pouvoir utiliser une formule approchée.
:)
eedomus+, Zibase V1, RFP1000, RFXcom, RadioDriver CPL 630 X2D, capteurs puissance OWL, thermometres Oregon, téléinfo (USB Linky), detecteurs ouverture X2D, pilotage chauffage X2D, Ecoflow River PRO, PAC Shogun (Atlantic-Cozytouch)
opa95
 
Messages : 731
Inscription : 04 Fév 2019
Localisation : Val d'Oise


Retour vers Suggestions

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 17 invité(s)

cron