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ą stany open, opening, closed i closing oraz akcje takie jak valve.close_valve i valve.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: true reszta 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 stanu unavailable albo unknown, 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 on nastą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: critical sprawia, że powiadomienie zadzwoni nawet przy włączonym trybie „Nie przeszkadzać” albo wyciszonym telefonie. Dokumentacja Companion podaje czujniki zalania jako typowe zastosowanie. Na Androidzie ttl: 0 razem z priority: high dostarcza powiadomienie od razu, nawet gdy telefon od dawna leży nieużywany, a channel: alarm_stream odtwarza 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

  1. 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.
  2. 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ąć.
  3. Osusz czujnik i otwórz zawór ręcznie.
  4. Uruchom ponownie Home Assistanta, gdy jeden czujnik jest jeszcze mokry, i sprawdź, czy zawór zamknie się po starcie.
  5. 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.