Nie działa automatyzacja oparta na temperaturze i czasie

Nie działa mi taka automatyzacja, nie reaguje na zmiany temperatury:

id: '1730828244199'
alias: '# Gdy w salonie poniżej-  19 włącz kaloryfery'
description: ''
triggers:
  - type: temperature
    device_id: 3a86878a9c58e829e07c4f58fb342417
    entity_id: b1b1a15b47a6dd1bcaf2b3abc9784d80
    domain: sensor
    trigger: device
    below: 19
conditions:
  - condition: time
    after: '06:00:00'
    before: '23:55:00'
actions:
  - device_id: 89668f089eb86890d94ffeedde7c1ac5
    domain: climate
    entity_id: 5a528282578790b7c6284294bd1bce93
    type: set_preset_mode
    preset_mode: auto
  - device_id: c607e4e0b7a9c14e689ed26147e4a623
    domain: climate
    entity_id: c7ca868b9ce45f28f752e8f4e235c33c
    type: set_preset_mode
    preset_mode: auto
  - device_id: 7fc4e54b7abb6d499c14278cc1355562
    domain: climate
    entity_id: 5130134c59d0c7cbe821cfa7f8626dcb
    type: set_preset_mode
    preset_mode: auto
mode: single

Co ciekawe: jak ją odpalę “z palca” to w ciągu dnia już działa.

W ciągu dnia sterowanie kaloryferami przejmuje też ta automatyzacja:

alias: '# Gdy +19 w salonie - Wyłącz kaloryfery'
description: ''
triggers:
  - type: temperature
    device_id: 3a86878a9c58e829e07c4f58fb342417
    entity_id: b1b1a15b47a6dd1bcaf2b3abc9784d80
    domain: sensor
    trigger: device
    above: 19
conditions: []
actions:
  - device_id: 89668f089eb86890d94ffeedde7c1ac5
    domain: climate
    entity_id: 5a528282578790b7c6284294bd1bce93
    type: set_hvac_mode
    hvac_mode: 'off'
  - device_id: c607e4e0b7a9c14e689ed26147e4a623
    domain: climate
    entity_id: c7ca868b9ce45f28f752e8f4e235c33c
    type: set_hvac_mode
    hvac_mode: 'off'
  - device_id: 7fc4e54b7abb6d499c14278cc1355562
    domain: climate
    entity_id: 5130134c59d0c7cbe821cfa7f8626dcb
    type: set_hvac_mode
    hvac_mode: 'off'
mode: single

Ktoś ma jakiś pomysł?
pozdrawia, Piotr

Czy zwracałeś uwagę na zapis trybu w jakim działają te automatyzacje?

Dziękuje, poprawione!

Ymmm nie rozumiem pytania. W jakim sensie: zapis trybu?

Tryby automatyzacji - Automation modes - Home Assistant
Prześledź również ślady w automatyzacji.

Tryb pojedynczy. Na logikę powinien być równoległy. Mam rację?

Nie chce mi się zgłębiać tego przypadku, może niech ktoś bardziej biegły w automatyzacjach i szablonach się wypowie. Na logikę jeśli dwie automatyzacje, w swojej funkcjonalności nakładają się, to ich warunkowanie należy uwzględniać w obu. Ewentualnie zrobić jedną automatyzację, która uwzględnia zarówno akcję włącz jak i wyłącz (rozwidloną o wybór akcji). Ja, ze swoim brakiem zrozumienia tego przebiegu automatyzacji oraz z lenistwa, pewnie zacząłbym od szukania rozwiązania w oparciu o harmonogramy lub gotowego blueprints.
Na szczęście nigdy nie miałem pokusy powierzania sterowania ogrzewaniem HA.

W jakim przypadku nie reaguje? Ta automatyzacja zadziała tylko wtedy kiedy temperatura spadnie poniżej 19, matematycznie < 19 np. z 19,5 na 18,9.

Natomiast ta automatyzacja zadziała, gdy temperatura wzrosnie powyżej 19, matematycznie >19, np. 18,5 na 19,1
Jak temperatura bedzie równa 19 stopni - spadnie z 19,5 na 19, albo wzrośnie z 18,5 na 19 to żadna z automatyzacji sie nie wykona bo żaden warunek (matematycznie) nie jest spełniony :slight_smile:.

@PiotrTr Poniżej link do fajnego Blueprint-a ma wiele ciekawych opcji i oczywiście wszystko czego aktualnie potrzebujesz. Używam i mogę potwierdzić że działa.

2 polubienia

Zgodnie z tym co napisałem powyżej: po odpaleniu ręcznym działa, kończy pracę o 23.55. W warunkach ma zakres godzin. I już kolejnego ranka, mimo spełnienia warunku czasu (po godz. 6.00) i sensora (temp. mniejsza niż 19.00 st.) nie uruchamia się. Jeśli ją odpalę ręcznie - działa aż do 23.55. Dziś w nocy, o godzinie 0.30 sprawdziła warunki, nie był spełniony warunek czasu, był spełniony warunek sensora - nie odpaliła się (świetnie), ale później już nic się nie wydarzyło - o godzinie 6.00 spełnione były obydwa warunki - nie zareagowała.

Wg mnie wszystko działa zgodnie z warunkami, (oczywiście automatyzacja jest źle napisana pod to co chcesz osiągnąć) wyzwalanie jest tyljo zmianą temperatury, warunek czasu to dodatkowy warunek. Dla potwierdzenia prosze podaj jaka była temperatura o godz. 6:00 i kiedy dokładnie temperatura spadla poniżej 19 stopni, napewno bylo to przed godz.6. Czyli w sladach automatyzacji masz info, ze sie uruchomiła jak spadla ponizej 19 stopni ale wtedy nie byla godz. 6 dlatego nie zadzialało. Automatzacja jest uruchamiana dokladnie wtedy kiedy jest zmiana temperatury a nie zawsze i czeka do 6. aby zrobic to czego oczekujesz.

Ok, to doradź proszę jak zmienić automatyzację. Zgodnie z tym co sugerujesz: temp spadła poniżej 19 ok. 0.30, zaś o 6.00 była w okolicach 18 stopni. Jak więc zapisać warunek, który pozwoli spełnić moje oczekiwania od tej sekwencji? Dotychczas rozumiałem, że triger “sprawdza” co jakiś czas temperaturę i wywołuje lub nie automatyzację. Z tego co piszesz - rejestrowany jest jedynie fakt spadku poniżej 19, a później już nie. Dlatego gdy uruchamiam ręcznie - działa, bo podgrzewa do 19 i więcej, zatrzymuje, znów spada poniżej 19 i zaczyna nagrzewać, a godzina 23.55 zatrzymuje cykl. Jak sprawić, żeby o tej 6.00 uruchomić proces?

Zamienić obecne wyzwalacz z warunkiem?
(czemu nie spróbujesz użyć blueprinta przedstawionego wyżej - on skonstruuje odpowiednią automatyzację na bazie wprowadzonych danych)

Najpierw musisz określić swoje potrzeby i przemyśleć czego oczekujesz, a potem tworzyć automatyzację…

Wydaje mi się, że dokładnie określiłem, jaką mam potrzebę, dla jasności:

  • chciałbym aby automatyzacja działała w oparciu o sensor temperatury i włączała lub wyłączała trzy kaloryfery w okresie od 6.00 do 23.55, gdzie graniczną wartością akcji jest 19 stopni.
  • chciałbym aby o godzinie 6.00 proces ruszał ponownie.
    Niczego więcej nie potrzebuję. Dziękuję za rekomendację blueprinta, ale wydaje mi się, że to dla mnie zbyt złożone i nieco ponad potrzeby (czy tam nie stoi, że jego rozwój został zarzucony i nie ma już wsparcia twórców?)

Już @macek to wyżej pisał - wyzwalacz

działa w momencie, gdy temperatura spada poniżej 19 (a pisałeś, że spada w nocy)
jeśli w twoim w okienku czasowym już jest poniżej 19 to ten wyzwalacz nie zadziała, bo nie ma przejścia temperatury z wyższej od tej granicznej do niższej…

Przykładowo możesz sobie dodać kolejną automatyzację, której wyzwalaczem będzie godzina 6, a w warunku będzie temperatura, wtedy to ona uruchomi grzanie o 6 (jeśli będzie zimno)
pozostawiając swoją automatyzację na wypadek gdyby temperatura spadła między 6 a 23


Jeśli chcesz sprawdzać 2 warunki - okienko czasowe i temperaturę, w jednej automatyzacji cyklicznie, to niech wyzwalaczem będzie choćby okres - w przykładzie co 5 minut (przy sterowaniu zaworami i tak nie ma sensu robić tego częściej niż raz na kilka minut)

triggers:
  - trigger: time_pattern
    # You can also match on interval. This will match every 5 minutes
    minutes: "/5"

https://www.home-assistant.io/docs/automation/trigger/#time-pattern-trigger

wtedy warunki (połączone logicznym &) powinny wyglądać jakoś tak

conditions:
  - condition: time
    after: "06:00:00"
    before: "23:55:00"
  - condition: and
    conditions:
      - type: is_temperature
        condition: device
        device_id: 3a86878a9c58e829e07c4f58fb342417
        entity_id: b1b1a15b47a6dd1bcaf2b3abc9784d80
        domain: sensor
        below: 19

Skupiłem się wyłącznie na twojej pierwszej automatyzacji, ale jak już to zrozumiesz to ogarniesz i drugą.


Musisz też zrozumieć, że potrzebna jest histereza - nie możesz włączać ogrzewania przy 19 i przy 19 je wyłączać - jakimś wstępnym minimum rozsądku jest próg 20 dla wyłączania.

Wiedząc z jaką rozdzielczością i stabilnością wskazań działa czujnik temperatury można dobrać sensowny przedział histerezy (np. jeśli wskazania są co 1 stopień, to dolną temperaturą może być 19, a górną 20; albo od 18.5 do 19.5 jeśli pragniesz mieć 19 stopni, a raporty z czujnika są przynajmniej co 0.2 stopnia).

ALE zgaduję że chodzi o głowice zasilane bateryjnie, a wtedy ich zbyt częste otwieranie i zamykanie będzie drenowało baterie, więc histereza nie może być zbyt mała nawet jeśli masz doskonały czujnik.

Dla przykładu - mam czujniki o rozdzielczości 0.01C, ale szumach własnych ±0.05C (można filtrować wskazania by uzyskać uśredniony wynik o bardzo dużej dokładności, ale skupmy się na wartościach bez filtrowania, bo większość gotowych sensorów nie dostarcza wystarczająco gęstych danych by było z czego rozsądnie filtrować), czyli wynikowej dokładności 0.1C, wtedy minimalna rozsądna histereza to 0.2C oczywiście gdyby aktor był dostosowany do częstej zmiany stanu (czyli np. zasilany sieciowo), ale tu też trzeba brać pod uwagę inne czynniki - dla urządzeń mechanicznych takim ważnym czynnikiem jest… zużycie - przy zbyt częstych regulacjach po prostu radykalnie skrócimy żywotność sprzętu.

Na obrazku wietrzenie od 22:10 do 22:15 - widać, że nawet dość szybki czujnik ma kilkuminutowe opóźnienie (to jest kwestia cyrkulacji powietrza - kto ma czujniki zamontowane tam gdzie jest faktyczny przepływ powietrza? no niemal nikt, sam sensor tego czujnika ma zaledwie kilkusekundową bezwładność), filtrowanie wyników tutaj wprowadza jeszcze większe opóźnienie rzędu wielu minut (oczywiście mogłem dobrać jakiś lepszy zestaw filtrów, ale by to zrobić skutecznie trzeba trochę eksperymentów, a to zrobiłem tylko jako demo do tego wątku)

1 polubienie

Moim zdaniem kluczem będzie dobranie wyzwalaczy i tu pojawia się pytanie. Czy możne zamiast mnożyć różne przypadki wyzwalaczy nie lepiej stworzyć pomocnika w postaci sensora progowego, który to możne działać w określonych przedziałach temperatur, mieć histerezę i jednocześnie w automatyzacji sprawdzi się bardzo dobrze jako wyzwalacz?

2 polubienia

Znacznie prościejsza logika by była następująca no chyba że czegoś nie rozumiem:
Określasz presety temperatury dla każdego climate

Później tworzysz tylko automatyzacje że np : Wyzwalacz na zasadzie czasu np o godz 6.00 .
Akcja start dany climate i odpowiednie ustawienie presetu np home (20stopni) lub jak Pan sobie życzy.
I kolejna automatyzacja ,wyzwalacz na np 23.59
Akcja start dany climate lub ich grupa ,ustawienie presetu na sen (18 stopni) i koniec kropka, nic więcej robić nie musisz, resztą steruje HA, chyba prościej się nie da.

actions:
  - device_id: 89668f089eb86890d94ffeedde7c1ac5
    domain: climate
    entity_id: 5a528282578790b7c6284294bd1bce93
    type: set_preset_mode
    preset_mode: home

Edit. Apropo pierwszej Twojej wersji to nawet dobrze że Ci nie działa bo automatyzacja uruchamia się przy każdej zmianie temperatury nawet co 0,1 stopnia zmiany z czego pewnie system zadowolony nie jest :stuck_out_tongue: a tak to się nie martwisz czy system się zrestartuje ,preset masz juz ustawiony…

3 polubienia

Moim zdaniem to najlepszy z pomysłów - @Rafał_Kasperski :+1:.

1 polubienie

Panowie, piękne dzięki! @Rafał_Kasperski - gdzie znaleźć tę funkcję presetów?

Kliknij na daną encje climate → następnie w okienku które wyskoczy kliknij górny trybik (ustawienia) i póżniej “Termostat ogólny opcje” i tam powinieneś mieć. Niewiem jak masz te climaty skonfigurowane i skąd one pochodzą , ale generalnie można też presety w yamlu wyskrobać w razie W. Może być też tak że presety są fabrycznie ustawione ale wtedy koniecznie przestudiuj to https://www.home-assistant.io/integrations/climate/ , wtedy bezpośrednio możesz ustawić temperature nastawu w automatyzacji.

Hm, chyba nie mam nic takiego. Moje urządzenia typu CLIMATE to termostaty/zawory na kaloryferach. I tam mogę z poziomu 2MQTT poustawiać harmonogram godzinowy dla każdego dnia, ale mi zupełnie nie o to chodzi, bo ja w ogóle nie wykorzystuje wbudowanego w zawór termometru.