Leck-Erkennung via Wasserzähler

Ziel: Homey soll erkennen, wenn Wasser über einen ungewöhnlich langen Zeitraum durchläuft (z.B. Leck, laufendes WC), und eine Push Nachricht senden.

Setup:

  • Tuya Water Valve PT an der Hauptwasserleitung, liefert kumulierten Zählerstand in m³ (kein Auf/Zu-Ventil, immer offen)
  • Better Logic Library für Number- und Ja/Nein-Variablen
  • Anwesenheit wird über die Locative App gesteuert (nicht Homeys eigene GPS-Ortung)

Bekannte normale Wasserverbraucher, die NICHT auslösen sollen:

  • Kurze Nutzung (WC-Spülung, Duschen), kurzzeitig
  • Poolnachfüllung, ca. 10-20 l/h dauerhaft im Hintergrund
  • Geplante Gartenbewässerung, zweimal täglich (6:00 und 22:00), ca. 700 l/h für 10 Minuten

Bisheriger Lösungsansatz:

  1. Trigger bei Zähleränderung
  2. Startwert in Number Variable merken
  3. 15 Minuten warten
  4. Vergleich: aktueller Zähler minus Startwert > Schwelle (z.B. 0.01 m³)
  5. Zusätzlich Zeitfenster-Ausschluss für die beiden Bewässerungszeiten
  6. Zusätzlich Anwesenheitsprüfung (nur wenn niemand da ist, da wir das Ventil an einem Ferienhaus haben)
  7. Ja/Nein-Sperrvariable eingebaut, damit während der Wartezeit nicht laufend neue Trigger den Startwert überschreiben

Das Problem: Der Wasserzähler feuert offenbar sehr häufig (bei jedem Liter oder öfter). Während einer länger laufenden Wasserquelle (Bewässerung) scheint der gespeicherte Startwert trotz Sperrmechanismus immer wieder mit dem aktuellen Zählerstand überschrieben zu werden, so dass die Differenz am Ende der Wartezeit nie über die Schwelle kommt. Die Push Nachricht bleibt aus, obwohl klar mehr als die Schwelle geflossen ist. Verschiedene Debugging-Versuche (Reihenfolge der Karten, Sperre vor/nach Prüfung lösen, Live-Tag statt Trigger-Tag) haben das Verhalten nicht zuverlässig behoben.

Frage an die Community: Gibt es einen robusteren/saubereren Ansatz, um bei einem sehr häufig aktualisierenden Wasserzähler zuverlässig “läuft seit X Minuten ununterbrochen Wasser” zu erkennen, ohne dass parallele/wiederholte Trigger den Vergleichswert verfälschen? (z.B. andere App, anderer Mechanismus, Debounce-Ansatz, o.ä.)

Könntest Du mit folgendem Flow problemlos feststellen:

Wenn…
– Der Wasserzähler hat sich verändert
Dann…
– Timlineeintrag, Notifikation oder Pushnachricht mit dem aktuellen Zählerstand

Die Zählerstand-Differenz zwischen zwei Benachrichtigungen ist das Messintervall.

Sollte und kann eigentlich nicht der Fall sein. Das Umschalten der Ja/Nein Variable könntest Du ggfs. auch mit einer entsprechenden Benachrichtigungs-Flow-Karte überprüfen.

Einen logischen Fehler im Flow finde ich spontan allerdings auch nicht.
Auch wenn es bei diesem Flow eigentlich keine Rolle spielen sollte, tausch bitte die 15 Minuten Buil-In Delay Karte versuchsweise mal mit einem echten Timer aus, z.B. mit der Chronograph App.

Mit einem Timer könnte man den Flow auch in zwei separate Flows trennen. Sobald der Timer im ersten Flow gestartet wurde, übernimmt der 2. Flow und könnte den 1. Flow mit der “Der Wasserzähler hat sich verändert” Trigger Karte deaktivieren. Wenn der 2. Flow nach 15 Minuten beendet wurde, könnte man den ersten Flow wieder aktivieren.
Falls gewünscht, könnte ich auch beispielhafte Flows erstellen und posten.