Wiem temat jest jak rzeka, ale chciałbym jakoś zacząć i nie wiem gdzie szukać.
A, właściwie, to zacząłem i stąd masa problemów i brak odpowiedzi.
Więc mamy automatyzacje budowane w trzech krokach: wyzwalacz, warunki i akcja. Cudnie, ale nigdzie nie znalazłem opisu reguł jakimi HA się posługuje. Np. banalna sprawa - włącz światło na zewnątrz domu gdy zaszło już słońce i jasność światła na zewnątrz jest mniejsza od 3000 lux-ów. I zrobiłem to, potykając się kilkunastokrotnie, ale zrobiłem szmelc a nie porządną procedurę. Czyli wyzwalaczem jest "sprawdzaj co 15 minut", w warunkach jest koniunkcja dwóch kwestii "zaszło słońce" oraz "jasność jest mniejsza niż 3000" a akcja to włączenie oświetlenia. Wyłączanie zewnętrznego oświetlenia natomiast mam ustawiona na czas - "wyłącz wszystko o 24:00".
I chodzi ale, oczywiście, to jest kicha bo zajmuje systemowi kupę czasu niepotrzebnie (co 15 minut), nie ma możliwości ustawienia jakiegoś "przestań liczyć np, 16 godzin gdy już akcja zaszła" więc o 00:15 światło zapala się ponownie, itd. bo to nie koniec.
Czy gdzieś znajdę porządny opis tych automatyzacji albo ktoś może coś poradzić?
Widziałem że można to zrobić pisząc kod w automatyzacja.yaml i widziałem że można zagonić do pracy nodeRED-a. Ale tu tez nie wiem gdzie szukać porządnych informacji - jak.
witaj @krzysztof44
nie jestem HomeAssistant'owcem, ale widzę, że widzisz, że to nie tak. Zaraz pewnie ktoś Ci pomoże.
Tak szybo zerknąłem, pewnie musisz zainstalować tę integrację, która automatycznie da Ci informację kiedy słońce góra / dół w Twojej lokalizacji.
https://www.home-assistant.io/integrations/sun/
Wyzwalacz odpalany za każdą zmianą wartości tego czujnika od światła lub położenia słońca z kilkoma dodatkowymi warunkami.
pzdr.a
Czy gdzieś znajdę porządny opis tych automatyzacji albo ktoś może coś poradzić?
Przecież wyjaśniono już to Tobie i podano przykład automatyzacji (na innym forum). Jaki jest więc problem ?
Przestań proszę pisać opowiadania, krótki opis tego co chcesz osiągnąć wystarczy i co nie działa jak chcesz plus wklej yamla z automatyzacją.
PS. Spróbuj tak ...
- id: 'wieczorne_oswietlenie' alias: Wieczorne włączenie oświetlenia zewnętrznego trigger: - platform: sun event: sunset offset: "00:30:00" condition: - condition: numeric_state entity_id: sensor.pogodynka_jasnosc below: 3000 actions: - action: light.turn_on target: entity_id: light.knx_oswietlenie_zewnetrzne mode: single
To odpali światło tylko raz wieczorem — i tylko jeśli faktycznie jest ciemno. offset: "00:30:00" przesuwa o 30 minut zachód słońca (jak nie potrzebujesz usuń)
@mariusz-2 nie znam składni HA, ale ja zrobiłbym odwrotnie:
- jeśli pogodynka_jasnosc below 3000 i light jest off to odpal trigger
- sprawdź w warunku czy sun jest już po sunset
wg mnie trochę większa szansa, że się odpali.
Z sunset w trigger to odpali się tylko raz i jak light będzie 3001 to światło nie włączy się nawet jak minutę później spadnie do 500 lx
ale nie wiem jak to napisać w HA 😉
@krzysztof44 Co do automatyzacji, to warto spróbować gotowych schematów tworzonych przez użytkowników HA.
Przy ich pomocy można budować proste lub bardziej złożone automatyzacje, sam dostosowujesz do swoich potrzeb.
Osobiście korzystam z NR, ułożenie procesu z takimi założeniami jakich potrzebujesz nie jest problemem nawet na etapie początkującego.
Użycie wyzwalaczy czasowych nie jest optymalne, ale nie niemożliwe.
Poniżej fotka jak to może wyglądać w dwóch wersjach, pierwsza to dwa wyzwalacze czasowe, druga gdzie wyzwalaczem jest czujnik lux.
Nie wiedząc co robią poszczególne nody, można uzyskać pomoc podręczną dostępną dla każdego z nich, poniżej przykład dla time range ( ten pomarańczowy)
Jak to za mało, to można zawsze zajrzeć do dokumentacji NR.
Z sunset w trigger to odpali się tylko raz i jak light będzie 3001 to światło nie włączy się
Raczej marne szanse .. (można zwiększyć próg lux'ów), zobacz u mnie to tak dziś wygląda 🙂
@mariusz-2 @krzysztof44 napisał o warunku 3000 luxów - więc jeśli on nie ma znaczenia, bo sytuacja nigdy nie wystąpi to rzeczywiście nie mam sensu tego w ogóle sprawdzać i można wywalić jego sprawdzanie w warunku. Jeśli ma znaczenie to trzeba go uwzględnić i zarówno wyzwalacza i warunek muszą być bardziej rozbudowane.
pzdr.a
Ja nie "piszę opowiadań" tylko chcę dokładnie wskazać na problem żeby definicja zagadnienia była jasna. I to "światło", tak jak napisałem jest jedynie przykładem. Bo nie wiem, a szukałem, gdzie znaleźć informację jak działa automatyzacja w HA. Jak to jest, po kolei. Dlaczego np. ustawiam wyzwalacz (zachód słońca) i warunek (jasność < 3000 lux) a HA tego nie wykonuje. Dlaczego ustawiam sprawdzanie czasu co 15 minut i nie mogę (albo nie wiem jak) przerwać tego gdy akcja się wykona (i np. włączyć z powrotem za 10 godzin), Itd., itd., itd. ...
Bo gdybym mógł napisać taką procedurkę w jakimś języku programowania to zajęłoby to kilka minut - tu nie logika jest dla mnie problemem tylko składnia i tryb wykonywania tak zdefiniowanej automatyki przez HA.
Wyzwalacz, przykład:
Po 15.00 i “jasność” poniżej wartości 4600 (noc, moje rolety zostaną opuszczone)
triggers: - value_template: > {{ (now().hour >= 15) and (states('sensor.deszcz_swiatlo_illuminance_average_20min') | float(0)) < 4600 }} trigger: template
Po 7.00 i wartość ponad 4500 (dzień, moje rolety zostaną podniesione)
triggers: - value_template: > {{ (states('sensor.deszcz_swiatlo_illuminance_average_20min') | float) > 4500 and (now().hour >= 7) }} trigger: template
Dziękuję krskrab, to jest czytelne i jasne. Pierwsze co zrobię jak wrócę do chaty to przetestuję.
Ale mam jeszcze (do krskrab) małą prośbę - czy możesz mi wskazać miejsce w sieci gdzie znajdę informacje o tych sekwencjach warunkowych które podajesz. Jakieś zasady, składnia, inne przykłady stosowania, itd.?
https://www.home-assistant.io/docs/automation/trigger/#template-trigger
Przykład który podałem działa, poprawnie. Ale powinien być zapisany w takim formacie:
trigger: - platform: template value_template: > {{ (now().hour >= 15) and (states('sensor.deszcz_swiatlo_illuminance_average_20min') | float(0) < 4600) }}
Inne przykłady:
Pobór mocy spadł poniżej 50W i jest po 22:00
{{ now().hour >= 22 and (states('sensor.pralka_power') | float(0)) < 50 }}
Co godzinę o pełnej godzinie (np. do synchronizacji czegoś)
{{ now().minute == 0 and now().second == 0 }}
Będzie padać jutro:
{{ state_attr('weather.tomorrow_io_home_daily', 'forecast')[0].precipitation | float(0) > 1 }}
Jeśli A różni się od B o więcej niż 5 jednostek:
{{ (states('sensor.a') | float(0) - states('sensor.b') | float(0)) | abs > 5 }}
Jeśli temperatura > 25°C i wilgotność > 60%, ale tylko w dzień (słońce nad horyzontem):
trigger: - platform: template value_template: > {{ states('sensor.temp') | float(0) > 25 and states('sensor.humidity') | float(0) > 60 and is_state('sun.sun', 'above_horizon') }}
Home Assistant ocenia value_template:
co sekundę.
Wyzwalacz aktywuje się tylko wtedy, gdy wynik zmienia się z false
na true
.
Jeśli używasz for:
, to warunek musi być spełniony przez cały zadany czas (np. 60 sekund) bez przerwy, żeby wyzwalacz się uruchomił.
Przykład:
Ok, jeszcze nie miałem czasu tego spróbować ale wrócę z informacją jutro, eszcze raz dziękuję. Mam jakiś start do tej zabawy z automatyzacją a pytanie o opis składni cofam, znalazłem pełną dokumentację "Jinja templates".
Chociaż mam jeszcze pytanko - jak coś tam programowałem i programuję to zawsze mam możliwość testowania tego co napisałem i śledzenia wykonania (na różne sposoby zależne od stosowanych narzędzi). Czy w HA mogę tak napisaną "automatykę" przetestować, np. zmienić parametry na spełnione i śledzić kolejne kroki wykonywane przez HA?
Chyba że Twój ostatni screen to pokazuje.
Dana automatyzacja, górny prawy narożnik
Tam jest cały przebieg automatyzacji:
Dane encji, możesz zmienić tymczasowo w Narzędziach Deweloperskich Stany ( USTAW STAN) - (będą chwilowo zmienione , do momentu ponownego odczytania wartości)
Czyli jak ustawisz np. Temperatura w pokoju jest 39 to taka będzie do momentu odczytania poprawnej wartości z termometru.
Jeśli ustawisz że jesteś not_home to po chwili (zależy od "lokalizatorów") powróci na home
Świetnie, no to mam zabawę na ten weekend.