Czujnik zalania pod pralką kosztuje niewiele. Sam w sobie potrafi tylko zapiszczeć albo wysłać powiadomienie, a jeśli nikogo nie ma w domu, woda leci dalej. Dopiero w parze z zaworem z napędem na głównym przyłączu wody Home Assistant może odciąć wodę kilka sekund po tym, jak pierwsza kropla dotrze do czujnika.
Sama automatyzacja to kilkanaście linijek. Najwięcej pracy wymaga dopilnowanie, żeby zadziałała także po ponownym uruchomieniu Home Assistanta, gdy czujnik dopiero co zniknął z sieci albo gdy zawór nie odpowiada. To właśnie te chwile, w których nikt nie patrzy.
Co będzie potrzebne
- Czujniki zalania. W Home Assistancie pojawiają się jako czujniki binarne z klasą urządzenia
moisture, która pokazuje stany „mokro” (on) i „sucho” (off). Czujniki Zigbee, Z-Wave, Wi-Fi i ESPHome działają tak samo, kiedy już trafią do Home Assistanta. - Zawór odcinający z napędem na głównym zasilaniu, zamontowany za wodomierzem i głównym zaworem ręcznym. Jeśli nie masz pewności, hydraulikę zostaw hydraulikowi. W zależności od integracji zawór pojawi się jako encja zaworu (
valve) albo jako przełącznik. Encje zaworów dodano w Home Assistancie 2024.1. Mają stanyopen,opening,closediclosingoraz akcje takie jakvalve.close_valveivalve.open_valve. - Aplikację Home Assistant Companion na telefonach, które mają dostać alarm.
Przed zakupem zaworu sprawdź, co robi po utracie zasilania albo łączności. Niektóre zostają w bieżącym położeniu, inne mają baterię, jeszcze inne można zamknąć ręcznie. Od tego zależy, co się stanie w sytuacjach opisanych niżej.
Gdzie umieścić czujniki
Tam, gdzie woda zbierze się najpierw: na podłodze pod pralką i zmywarką, pod zlewem w kuchni i umywalką w łazience, obok kotła albo podgrzewacza wody, przy filtrze wody i pod samym zaworem głównym. Czujnik leży płasko na podłodze stykami w dół. Jeśli podłoga ma spadek, właściwe miejsce to najniższy punkt, a nie środek szafki.
Lepiej jeden czujnik na urządzenie niż jeden na pomieszczenie. Czujnik dwa metry od przecieku może pozostać suchy, dopóki woda nie pokryje całej podłogi.
Pogrupuj czujniki
Utwórz pomocnika, który będzie włączony, gdy którykolwiek czujnik jest mokry: Settings > Devices & services > Helpers > Create helper > Group > Binary sensor group. Dodaj wszystkie czujniki zalania i pozostaw opcję All entities wyłączoną. Według dokumentacji grup taka grupa ma stan on, jeśli co najmniej jeden czujnik ma stan on, w przeciwnym razie off, a unavailable tylko wtedy, gdy niedostępne są wszystkie.
Dzięki grupie automatyzacja jest krótka, a nowy czujnik wystarczy dodać do grupy. W przykładach poniżej nazywa się binary_sensor.water_leak_any.
Automatyzacja zamykająca wodę
alias: "Zalanie: zamknij główny zawór"
mode: single
triggers:
- trigger: state
entity_id: binary_sensor.water_leak_any
to: "on"
- trigger: homeassistant
event: start
conditions:
- condition: state
entity_id: binary_sensor.water_leak_any
state: "on"
actions:
- action: valve.close_valve
target:
entity_id: valve.main_water
- continue_on_error: true
action: notify.mobile_app_your_phone
data:
title: "Zalanie"
message: >
Mokro: {{ expand('binary_sensor.water_leak_any')
| selectattr('state', 'eq', 'on')
| map(attribute='name') | join(', ') }}. Zamykam główny zawór.
data:
push:
interruption-level: critical
ttl: 0
priority: high
channel: alarm_stream
- wait_for_trigger:
- trigger: state
entity_id: valve.main_water
to: "closed"
timeout: "00:01:00"
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ not wait.completed }}"
then:
- action: notify.mobile_app_your_phone
data:
title: "Zalanie: zawór się nie zamknął"
message: "Zamknij główny zawór wody ręcznie."
data:
push:
interruption-level: critical
ttl: 0
priority: high
channel: alarm_stream
Jeśli zawór jest przełącznikiem, zamień pierwszą akcję na switch.turn_off (albo turn_on, zależnie od tego, jak integracja to odwzorowuje) i czekaj na odpowiedni stan przełącznika. Zamiast notify.mobile_app_your_phone wpisz akcję powiadomień każdego telefonu.
Szczegóły znaczą tu więcej, niż się wydaje:
- Najpierw zawór. Jeśli usługa powiadomień zawiedzie, zawór będzie już zamknięty. Dzięki
continue_on_error: truereszta automatyzacji wykona się nawet wtedy, gdy krok z powiadomieniem skończy się błędem. - Zwykły wyzwalacz stanu z samym
to: "on". Dokumentacja wyzwalaczy zwraca uwagę, że większość wyzwalaczy encji nie reaguje na przejście ze stanuunavailablealbounknown, a wyzwalacz stanu (state) reaguje. Czujnik Zigbee, który zniknie z sieci, zamoknie i połączy się ponownie, zgłasza właśnie taką zmianę. - Wyzwalacz przy starcie. Jeśli czujnik zamoknie w trakcie ponownego uruchamiania Home Assistanta, zmiana na
onnastąpi, zanim automatyzacja zacznie nasłuchiwać. Dzięki wyzwalaczowi startu i warunkowi automatyzacja sprawdzi grupę, gdy tylko Home Assistant wystartuje, i zamknie zawór, jeśli coś nadal jest mokre. - Powiadomienia krytyczne. Na iOS
interruption-level: criticalsprawia, że powiadomienie zadzwoni nawet przy włączonym trybie „Nie przeszkadzać” albo wyciszonym telefonie. Dokumentacja Companion podaje czujniki zalania jako typowe zastosowanie. Na Androidziettl: 0razem zpriority: highdostarcza powiadomienie od razu, nawet gdy telefon od dawna leży nieużywany, achannel: alarm_streamodtwarza je przez strumień alarmu, więc dzwoni nawet w trybie cichym. Każdy telefon pomija klucze przeznaczone dla drugiego systemu. - Sprawdzenie, czy zawór naprawdę się zamknął. Według dokumentacji skryptów akcja, której cel jest niedostępny, nie kończy się błędem. Home Assistant pomija ten cel, zapisuje ostrzeżenie w logu i przechodzi dalej. Bez oczekiwania na końcu przy nieosiągalnym zaworze przyszłoby powiadomienie, że zawór się zamyka, a woda leciałaby dalej. Minuta to tylko przykład. Ustaw czas nieco dłuższy niż ten, którego zawór potrzebuje na zamknięcie.
Nie każ automatyzacji otwierać zaworu, gdy czujnik wyschnie. Czujnik może wyschnąć, a woda nadal może lecieć gdzie indziej. Otwórz zawór ręcznie albo z panelu, kiedy znajdziesz przyczynę.
Pilnuj samych czujników
Martwy czujnik zalania wygląda w Home Assistancie dokładnie tak samo jak suchy, dlatego warto dodać jeszcze dwie automatyzacje.
Pierwsza ostrzeże, gdy czujnik zniknie z sieci:
alias: "Czujnik zalania niedostępny"
triggers:
- trigger: state
entity_id:
- binary_sensor.leak_washing_machine
- binary_sensor.leak_kitchen_sink
- binary_sensor.leak_boiler
to: "unavailable"
for: "01:00:00"
actions:
- action: notify.mobile_app_your_phone
data:
message: "{{ trigger.to_state.name }} jest niedostępny od godziny."
Druga pilnuje baterii. Większość czujników na baterie tworzy też encję poziomu baterii w procentach. Ustaw na tych encjach wyzwalacz wartości liczbowej (numeric_state) z progiem Below na poziomie, który zostawi czas na zakup nowych ogniw, na przykład 20%. Nazwy encji różnią się między integracjami, więc wybierz je ze stron urządzeń.
Grupa nie zastąpi tych powiadomień: przechodzi w stan unavailable dopiero wtedy, gdy niedostępne są wszystkie czujniki, więc brak jednego nie zmieni jej stanu.
Regularnie poruszaj zaworem
Zawór kulowy, który latami stoi otwarty, może się zastać. W ogólnej instrukcji obsługi zaworów producenta CO-AX czytamy, że zawory należy regularnie przestawiać, co najmniej co sześć miesięcy, a niektóre zestawy ochrony przed zalaniem robią to same: zestaw FloodStop do podgrzewacza wody firmy OnSite PRO, zbudowany na zaworze LeakSmart, wśród funkcji wymienia automatyczne comiesięczne przestawianie zaworu.
Jeśli zawór nie ma takiej funkcji, dodaj comiesięczną automatyzację. Wybierz nocną godzinę, w której nikt nie korzysta z wody, zamknij zawór, poczekaj, aż zgłosi closed, otwórz go ponownie i wyślij sobie powiadomienie, jeśli któryś krok się nie zakończy:
alias: "Comiesięczny test głównego zaworu"
triggers:
- trigger: time
at: "03:30:00"
conditions:
- condition: template
value_template: "{{ now().day == 1 }}"
- condition: state
entity_id: binary_sensor.water_leak_any
state: "off"
actions:
- action: valve.close_valve
target:
entity_id: valve.main_water
- wait_for_trigger:
- trigger: state
entity_id: valve.main_water
to: "closed"
timeout: "00:01:00"
- action: valve.open_valve
target:
entity_id: valve.main_water
- wait_for_trigger:
- trigger: state
entity_id: valve.main_water
to: "open"
timeout: "00:01:00"
continue_on_timeout: false
- action: notify.mobile_app_your_phone
data:
message: "Comiesięczny test zaworu zakończony, zawór jest otwarty."
Akcja otwarcia wykona się nawet wtedy, gdy pierwsze oczekiwanie przekroczy czas, więc zawór nie zostanie przypadkiem zamknięty. Jeśli przekroczony zostanie czas drugiego oczekiwania, automatyzacja zatrzyma się przed potwierdzeniem, a brak comiesięcznej wiadomości będzie sygnałem, żeby sprawdzić zawór. Z historii wykonania automatyzacji (trace) wyczytasz, który krok zawiódł.
Przetestuj cały łańcuch
- Zamocz czujnik: dotknij jego styków wilgotną ściereczką albo połóż go na mokrym ręczniku papierowym. Nie testuj go, wylewając wodę na podłogę obok pralki.
- Sprawdź, czy telefon dzwoni nawet w trybie cichym i czy zawór faktycznie się zamyka. Odkręć kran i upewnij się, że woda przestaje płynąć.
- Osusz czujnik i otwórz zawór ręcznie.
- Uruchom ponownie Home Assistanta, gdy jeden czujnik jest jeszcze mokry, i sprawdź, czy zawór zamknie się po starcie.
- Powtarzaj test co kilka miesięcy oraz po każdej zmianie w sieci albo przy zaworze.
Po zamknięciu zaworu nie licz na to, że woda w kranie od razu przestanie płynąć. Procedura testowa systemu odcinającego FloLogic ostrzega, że zasysanie z rur położonych wyżej i cofanie się wody z naczynia wzbiorczego może podtrzymywać przepływ jeszcze przez jakiś czas po zamknięciu. Krótkie kapanie jest normalne, stały strumień już nie.
Czego ten układ nie zrobi
Najsłabszym ogniwem jest tu sam Home Assistant. Jeśli nie działa, jeśli padła sieć Wi-Fi albo Zigbee albo jeśli zabrakło prądu, a zawór nie ma baterii, automatyzacja się nie wykona. Tam, gdzie się da, używaj czujników z własną syreną, żeby ktoś w pobliżu usłyszał przeciek, nawet gdy automatyzacja nie może zareagować, i wiedz, gdzie jest główny zawór ręczny. Niektóre gotowe zestawy przeciwzalaniowe łączą czujniki bezpośrednio z zaworem przez własną centralkę. Jeśli chcesz mieć zabezpieczenie niezależne od Home Assistanta, warto przyjrzeć się właśnie takim systemom.