Je viens à peine de me lancer dans l’aventure Home Assistant et j’aurais besoin d’aide pour la création d’une automatisation. Je solicite donc aimablement votre aide…
J’ai une pompe de surpression d’eau qui s’enclenche quand c’est nécéssaire pour maintenir la pression dans ma tuyauterie et qui est connectée à un switch Wifi qui permet de monitorer sa consomation électrique en temps réel.
J’ai pu integrer ce switch dans Home Assistant et sa valeur (en Watt) comme entitée → sensor.power_pompe
J’aimerais maintenant créer une automatisation qui calcule le temps entre chaque utilisation (plus de 500w sur sensor.power_pompe) et qui, si elle détecte par exemple 3 ou 4 déclanchements consecutifs MAIS avec le même temps entre chaque déclanchement (intervalles identiques), m’enverrai une notification.
Ca serait en faite la preuve d’une fuite d’eau dans mon sisteme de tuyauterie, un robinet mal fermé ou une chasse d’eau qui laisse passer un peu d’eau…
Aussi et dans l’idéal, j’aurais besoin de pouvoir modifier assez simplement dans le code le nombre de déclanchement consécutifs avant d’envoyer la notif, par exemple après 3, 4 ou 10 declanchements si ca devenait nécéssaire…
Concernant les intervalles de temps, j’aimerais aussi pouvoir définir une tolérance en secondes que je pourrais changer au fur et à mesure de mes test…
La seule chose de plus ou moins similaire trouvé sur le net est cette page en anglais:
J’ai fais un petit schéma pour illustrer un peu les comportements de sensor.power_pompe qui nous intéresse…
Normalement l’utilisation de la pompe sur une journée est totalement aléatoire comme on voit sur cette capture, aussi bien en temps d’utilisation qu’en intervalle entre chaque utilisation…
L’idée est donc de genre créer un log qui note les temps entre OFF et le prochain ON (intervalles de temps) et ainsi de suite de chaque utilisation, et que quand il remarque qu’il y a 3 intervalles identiques, (avec une tolérance de genre +15 secondes ou -15 secondes) c’est considéré comme anormal et donc notification car la seule façon d’avoir ce genre de schéma si régulier ne peut être qu’une fuite…
Ici dans l’exemple les temps d’ Intervals 294, 295 et 296 sont anormalement similaires (a + ou - 15 secondes prêt)
ATENTION: les intervalles peuvent être de + de 1h entre chaque OFF et ON mais peut importe, si il y a un schéma régulier même de par exemple 1h34 et 12 secondes entre 3 OFF et ON bah c’est un toute petite fuite mais ça reste une fuite…
j’ai trouvé les helpers… C’était un onglais plus loin → Entrées
J’ai créé le fichier texte, nommé comme indiqué, j’ai ensuite été creer une automatisation, Modifier en YAML, copier/coller ton code en changeant mon téléphone mais malheureusement ca ne fonctionne pas, il ne se passe rien…
Je suis pas certain de bien comprendre ce que je vois mais a chaque fois que la pompe s’allume, elle a l’air de se lancer mais par contre elle bloque a cette deuxième étape… Avec le code d’erreur :
Arrêté car une erreur s’est produite le 12 mars 2025 à 07:55:59 (durée d’exécution: 0.01 secondes)
JSONDecodeError: Input must be bytes, bytearray, memoryview, or str: line 1 column 1 (char 0)
(Ne serait-ce pas un truc tout bête du genre que j’ai pas activé python script pour les automatisations ? A un moment j’ai lu un truc du genre sur internet mais ne se suis pas certain de ce que ça veut dire)
Alors depuis que j’ai modifié le code il se passe plus de chose dans l’Entrée historique_pompe… A chaque démarrage de la pompe, il y a une « entrée » qui apparaît, ça a l’air ok de ce côté là… (peut-être est-ce d’ailleurs ca que tu appel la « Liste Json »)
Quand je regarde l’historique de l’automatisation il n’y a plus de message d’erreur et il me semble que l’automatisation arrive au bout de son process… Ceci dit, je simule une fuite laissant couler un filet d’eau sur un robinet, la pompe s’enclenche 3 voir même 4 fois d’affilé avec ± le même temps entre chaque déclenchement mais l’automatisation se termine toujours en False, ce qui, si je déduis bien, n’envoie jamais la notification… Car en éffet je ne recois jamais la notification… Ca bloque quelque part.
Serais-ce un problème dans les critères de l’automatisation, qu’il ne détecte pas bien le temps entre chaque démarrage?
Ou bien lié au fait que la pompe fonctionne quelques secondes a plus de 500w avant de s’arrêter, et que du coup il ne sais pas si il doit prendre comme point de départ pour commencer a compter a partir de l’enclenchement ou a partir de l’arrêt de la pompe ?
En tout cas super merci pour ton aide et ta patience
Le code est maintenant celui ci avec la derniere modification demandée, j’ai juste pris l’initiative de diminuer la tolérence a 10 secondes, en m’assurant de ce point en faisant mes simulations de fuite d’eau
C’est une très bonne question ! Oui, le problème pourrait effectivement être lié à la façon dont l’automatisation interprète les démarrages et arrêts de la pompe.
Problème possible :
Si la pompe monte rapidement à plus de 500W puis redescend sous 50W en moins de 5s, l’automatisation ne se déclenche pas.
Il pourrait aussi considérer un seul long démarrage au lieu de plusieurs petits cycles si la puissance oscille.
Actuellement, l’automatisation déclenche quand la puissance dépasse 50W, mais ne surveille pas quand elle retombe sous ce seuil.
Si ta pompe a des cycles très courts et s’arrête complètement après chaque démarrage, on peut ajouter un deuxième déclencheur pour détecter les arrêts :
à vérifier
modifie cette partie
ont va faire mise à jour du comptage des démarrages, au lieu de prendre uniquement le moment où la pompe démarre, on peut aussi attendre qu’elle s’arrête avant d’enregistrer un cycle.
La variable historique_filtre doit être définie dans la section variables de ton automatisation. Elle doit être placée après que historique_maj soit mis à jour pour s’assurer qu’on filtre les données les plus récentes.
Alors désolé, je fais de mon mieux mais je comprends toujours pas où je dois copier/coller… Serais-ce abusé de te demander si tu veux bien l’intégrer pour moi dans le code stp…
Rappel toi, je ne connais rien en codage, je ne fais que du copier/coller depuis tout à l’heure et là definitivement, tu m’as eu…
Ou si tu veux bien me dire précisément si je dois remplacer une partie par ca, ou si je dois l’ajouter après un mot ou après une ligne specifique, je crois avoir identifié la zone des variables parceque à un moment je vois le mot « variables » mais je dois remplacer tout ce qu’il y a dedans? de où a où? Ca ne correspond pas…
Super Merci
Je crois avoir réussi a faire ca… Mais à chaque fois que j’éssaye de copier/coller les lignes historique_filtre… dans le code, a tous les endroits éssayé j’ai un message d’erreur.
Comme tu dit, ultra-intelligent et c’est ca la beauté de la chose… Grace à toi et tes deux codes, je dois plus me préocuper de cette pompe… Si il y a une fuite, je serais automatiquement tenu au courant.
C’est fou quand on y pense, maintenant c’est littéralement comme si un gars était 24h/24h devant cette pompe avec un papier, un crayon et un chrono prêt a m’appeler… C’est peut-être pas grand chose pour toi mais pour moi c’est facinant !