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:
- Trigger bei Zähleränderung
- Startwert in Number Variable merken
- 15 Minuten warten
- Vergleich: aktueller Zähler minus Startwert > Schwelle (z.B. 0.01 m³)
- Zusätzlich Zeitfenster-Ausschluss für die beiden Bewässerungszeiten
- Zusätzlich Anwesenheitsprüfung (nur wenn niemand da ist, da wir das Ventil an einem Ferienhaus haben)
- 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.ä.)
