Water Leak Detection task
Bonjour à tous,
Je cherche a réaliser une task qui me permettrai de détecter une fuite.
J'ai un compteur d'eau qui envois 1puls tout les 10L d'eau. J'ai un module KNX qui réalise l'incrément, pas de problème.
J'ai réalisé une task qui se lance a chaque changement de valeur (OnChanged) du compteur, soit tout les 10L.
Lorsque cette task est lancée, j'incrémente de 1 un compteur "Count" et si celui ci atteint un nombre définit, j'alerte comme quoi il existe une fuite.
Cela fonctionne, mais fonctionne également lorsque le tirage d'eau est normal, par exemple, une douche. En effet, je vais incrémenter plusieurs fois (sans atteindre la cible du compteur "Count" et ensuite, sur un prochain tirage d'eau, je vais continuer a incrémenter jusqu’à atteindre la cible. Et bim, détection de fuite...
Je me suis dit qu'il faudrait peut être que je remette a 0 le compteur "Count" si il n'évolue pas pendant xx minutes, ce qui traduirait qu'il n'existe pas de fuite et éviterai les déclenchement non pertinents. Mais je n'arrive pas a le coder correctement...
La difficulté réside sur le fait que je n’envoie la valeur du compteur qu'a chaque changement de celui ci, et donc a chaque nouvelle puls, qui représente 10L...
Peut etre existe il aussi une autre solution...
D'avance merci pour vos aides sur ce sujet.
Je cherche a réaliser une task qui me permettrai de détecter une fuite.
J'ai un compteur d'eau qui envois 1puls tout les 10L d'eau. J'ai un module KNX qui réalise l'incrément, pas de problème.
J'ai réalisé une task qui se lance a chaque changement de valeur (OnChanged) du compteur, soit tout les 10L.
Lorsque cette task est lancée, j'incrémente de 1 un compteur "Count" et si celui ci atteint un nombre définit, j'alerte comme quoi il existe une fuite.
Cela fonctionne, mais fonctionne également lorsque le tirage d'eau est normal, par exemple, une douche. En effet, je vais incrémenter plusieurs fois (sans atteindre la cible du compteur "Count" et ensuite, sur un prochain tirage d'eau, je vais continuer a incrémenter jusqu’à atteindre la cible. Et bim, détection de fuite...
Je me suis dit qu'il faudrait peut être que je remette a 0 le compteur "Count" si il n'évolue pas pendant xx minutes, ce qui traduirait qu'il n'existe pas de fuite et éviterai les déclenchement non pertinents. Mais je n'arrive pas a le coder correctement...
La difficulté réside sur le fait que je n’envoie la valeur du compteur qu'a chaque changement de celui ci, et donc a chaque nouvelle puls, qui représente 10L...
Peut etre existe il aussi une autre solution...
D'avance merci pour vos aides sur ce sujet.
Hello everyone, I'm trying to create a task that will allow me to detect a leak. I have a water meter that sends one pulse every 10 liters of water. I have a KNX module that handles the incrementing process, no problem there. I've created a task that runs every time the meter's value changes (OnChanged), which is every 10 liters. When this task is run, I increment a counter called "Count" by 1, and if it reaches a defined number, I trigger an alert indicating a leak. This works, but it also works when the water flow is normal, for example, during a shower. Indeed, I'm going to increment the counter several times (without reaching the target) and then, on the next water draw, I'll continue incrementing until I reach the target. And bam, leak detection... I thought that perhaps I should reset the "Count" counter to 0 if it doesn't change for xx minutes, which would indicate that there's no leak and avoid unnecessary triggers. But I can't seem to code it correctly... The difficulty lies in the fact that I only send the counter value each time it changes, and therefore with each new pulse, which represents 10L... Perhaps there's another solution... Thank you in advance for your help with this.