Lovelace Jeden guzik do podlewania - automatyczne uruchamianie sekwencji zraszaczy

Dla Was to pewnie będzie banalne, ale ja jako totalny laik, nie wiem jak to ugryźć. Potrzebuje coś mega prostego.
Mam obecnie na dashboardzie 4 strefy z przełącznikiem do odpalenia zraszaczy. Chcę mieć jeden guzik, żeby uruchamiał te zraszacze , tzn żeby uruchamaił sekwencję zdarzeń, aby każda sekcja robiła podlewanie na określonyc czas (timer) jaki ustawię i potem żeby uruchamiała sie następna strefa, aż wszystkie 4 podleją.

W zasadzie to 2 parametry bym chciał na dashbordzie:

  • guzik, albo przełącznik uruchamiający,
  • ustawienie czasu podlewania strefy,
  • ewentualnie, jakby się dało, to dodatkowy parametr ustawiający automatyczny cykl uruchamiania sekwencji, co ile jednostek czasu ma się automatycznie uruchamiać (np: co 24h, albo co 72h od godziny 4:00 rano)

Próbowałem dodawać pomocników do dashboarda i cos w node-red zaprogramować, ściągałem jakieś gotowe automatyzacje, ale nie potrafię tego zrobić. Za mało się znam.

Da się to zrobić na samej automatyzacji w HA? Jak będziecie mi wpisywać linijki z pliku config, to średnio u mnie ze zrozumieniem.

@esselite może z uwagi na Twój poziom wiedzy, może (?) prościej skorzystać z Harmonogramy automatyzacji - zrobisz sobie wszystko w prostym harmonogamie.

Dzięki, nie jest to najgorsze, aczkolwiek szukałem czegoś prostszego w manipulacji. Guzik i czas dla sekcji by wystarczył, a później taki skrypt już łatwo dodać do harmonogramu.
Chodzi o to , żeby tez łatwo można było wywołać sekwencję ad-hoc, w momencie jak jest to potrzebne, np. zroszenie trawy przez minutę w celu jej schłodzenia przed koszeniem.

https://community.home-assistant.io/t/configure-sprinklers/226922/8

U mnie to jest tak:

Podlewać ad-hoc reaguje na przycisk (pomocnik)
Ile - odczytuje pomocnika z czasem nawadniania,
min przelicza to na minuty, czyli msg.delay = 1000 * 60 * msg.minuty
Potem włączam pierwszą sekcję, odczekuję w varialbe czas wyliczony powyżej, druga sekcja i tak dalej.
Big Timer włącza mi to automatycznie w konkretnych misiącach, dniach i godzinie,
Czy mam podlewać sprawdza czy nie wyłączyłem tej opcji (pomocnik) oraz czy w ostatnich dwóch dniach nie było deszczu. Jeśli był - nie włączy.

1 polubienie

Dzięki za to, bo dokładnie o to można powiedzieć mi chodziło.
Zrobiłem skrypt wg tej wiedzy i ma szanse to działać.
Jednak coś jest mało stabilne z ta integracją sterownika Rainbird, bo encje robią się w losowym momencie niedostępne i skrypt wywala błąd, że nie może się dostać do przełącznika sekcji. Dopiero ponowne wczytanie integracji powoduje, że przełączniki stają się dostępne, ale skrypt już wtedy zrealizował sekwencję.

dodany skrypt:

alias: Rainbird
mode: queued
sequence:
  - service: switch.turn_on
    entity_id: switch.rain_bird_sprinkler_1
  - delay:
      minutes: "{{ states('input_number.zone_1_time') }}"
  - service: switch.turn_off
    entity_id: switch.rain_bird_sprinkler_1
  - delay:
      seconds: 61
  - service: switch.turn_on
    entity_id: switch.rain_bird_sprinkler_2
  - delay:
      minutes: "{{ states('input_number.zone_2_time') }}"
  - service: switch.turn_off
    entity_id: switch.rain_bird_sprinkler_2
  - delay:
      seconds: 61
  - service: switch.turn_on
    entity_id: switch.rain_bird_sprinkler_3
  - delay:
      minutes: "{{ states('input_number.zone_3_time') }}"
  - service: switch.turn_off
    entity_id: switch.rain_bird_sprinkler_3
  - delay:
      seconds: 61
  - service: switch.turn_on
    entity_id: switch.rain_bird_sprinkler_4
  - delay:
      minutes: "{{ states('input_number.zone_4_time') }}"
  - service: switch.turn_off
    entity_id: switch.rain_bird_sprinkler_4
  - delay:
      seconds: 61
icon: mdi:sprinkler-variant
max: 30

Błąd realizacji skryptu:

Edit:

A myślicie , że jest jakis sposób, by w skrypcie umieścić , przed każdą zmianą przełącznika komendę wczytania integracji, czyli to:

:thinking:Tak z ciekawości

alias: Rainbird
mode: queued

Jeśli zmienisz na

alias: Rainbird
mode: single

Nadal będą błędy?

Rozwiązanie problemu ze stanem unavailable nie będzie takie takie proste.
Musiałbyś pamiętać stan oczekiwany i po powrocie ze stanu unavailable porównać: stan odczytany z oczekiwanym i wykonać synchronizację (tyle teorii).

W node-red (jak dla mnie) byłoby dość proste jednak w HA może być nie wykonalne.

Oj tak, jak zacząłem się zastanawiać, jak sprawdzać status encji, jaki był ostatni, jaki jest teraz to coraz większy miałem mętlik. Jak to mówi zasada Pareto, 20% nakładów, jest odpowiedzialne za 80% efektu i na razie jestem usatysfakcjonowany. Do 100% nie będę dążył. Może nie mogę liczyć na bezawaryjność, ale zauważyłem, że jak przestałem się temu przyglądać, to działa. Ustawiłem opóźnienie przed wywołaniem kolejnej sekcji na 10s. i wszystkie się po kolei odpalają.
Z integracja Rainbird jest jakiś problem otwarty na Githubie od dłuższego czasu. Pochylają sie juz długo nad tym dlaczego API w losowych momentach zwraca http 503. Dopóki większe mózgi od mojego na to nie wpadną, to chyba już będzie tak działać.
Na wszelki wypadek ustawiłem w integracji maksymalny czas działania sekcji na 30 min. Gdyby skrypt nie mógł wyłączyć sekcji, to sama stanie po 30 min. i nie będzie się lało w nieskończoność.
Dzięki wszystkim za pomoc i udział w dyskusji.