Templatka przełączajaca stan wg godzin i dnia tygodnia, świąt

Dzień dobry
Taki temacik mam na dzisiaj, ustawiam stan dzień/noc do taryf, to symboliczne znaczenie oczywiście, z angielska było by coś pik/offpik, działałoby by to dobrze dla taryfy G12, ale mam G12W, czyli noc mam również w weekendy i święta. Na początek chciałbym dodać chociaż tą sobotę i niedzielę. Próbowałem różne fikołki logiczne z ! potem z and ale nie umiem zgadnąć jak dodać by w poniższym warunku zapisać, że if jest między tymi godzinami i jest to pn-piątek to dzień, else noc:

  - name: "Taryfa Energii pobranej"
    unique_id: 230e307a-6150-4c2e-8571-7634dec8fcd9
    state: "{{ 'dzien' if ( (today_at('6:00') < now() < today_at('13:00') or today_at('15:00') < now() < today_at('21:00'))   )  else 'noc' }}"

To jest template tak w ogóle. Ewentulanie jak zapisać, że w tych godzinach i NIE sobota niedziela.
Edit: znalazłem

state: "{{ 'dzien' if ( now().day==mon and (today_at('6:00') < now() < today_at('13:00') or today_at('15:00') < now() < today_at('21:00'))   )  else 'noc' }}"

Jak tu odwrócić logikę by ując tylko sobotę i niedziele a potem zanegować?
Edit:
Doszedłem do tego, że nie akceptuje !, musi być ‘not’, ale przetestuje to dopiero po 15:00.
Edit. No wpadłem na to by przestawić godzinę od 14 na noc, no i operator not mi nie działa w formule not ( sobota or niedziela) - środek powinien dawać 1,a zanegowany 0, no i nie daje…

Możesz skorzystać z integracji Workday - Home Assistant.

1 polubienie

Rozumiem, że jak jest Poland do wyboru, to są wszystkie święta narodowe i jest to aktualizowane przez jakąś obsługę tego modułu?

open-source = aktualizowane przez użytkowników

Ok, domyślam się, że nie aktualizuje się jakoś magicznie, chodziło mi o to czy raz w roku mam wpisać tu te 14 świąt państwowych - widzę, że jest taka opcja w interfejsie, czy jest jakaś baza, skąd to pobierze.

Jest baza, aktualizowana na podstawie takich danych
https://isap.sejm.gov.pl/isap.nsf/DocDetails.xsp?id=wdu19510040028
(ale czy jest jakiś aktywny maintainer dla PL nie wiem, więc zawsze jest ryzyko, że może wystąpić błąd, który zostanie naprawiony dopiero po jego wykryciu).

Tak samo magia zmiany czasu letniego w zimowy i odwrotnie jest projektem otwarto-źródłowym (ale być może są jakieś odpowiedzialne osoby w którymś instytucie czasu, np. w Centrum Badań Kosmicznych(?), które dbają o takie sprawy dla całego narodu). Ale tu to jest po prostu regulowane rozporządzeniem premiera raz na parę lat (ten ostatni mocno zaspał i wydał je zaledwie 3 tygodnie przed wprowadzeniem, podczas gdy zwyczajowo takie rozporządzenie powinno być wydane z około półrocznym wyprzedzeniem)

wbrew tym zapisom, zmiana czasu jest dość prosto zalgorytmizowana
(zmiana jest w ostatnią niedzielę marca i ostatnią niedzielę października), więc nawet nie znając konkretnej daty łatwo to obliczyć.

A na strefy czasowe jest nawet odpowiednie RFC

Ten sensor ma zmieniać tylko stan żeby pokazać czy jest tańsza taryfa w G12W? Kto jest twoim dostawcą energii?

No problem polega na tym, że zapomniałem po co to robiłem, ale działa :laughing:
Dostawcą jest tauron, generalnie to robiłem żeby zliczać pobraną i oddaną energię w obu strefach, potem zrobić bilansowanie godzinowe. Robiłem to wg jakiegoś tutoriala i zapomniałem wg którego, jeszcze miała być automatyzacja, która przełącza licznikom dzień i noc aktywując zliczania do odpowiedniej taryfy. W oryginale brakowało właśnie weekendów i świąt. Ostatnio znalazłem tutorial o licznikach mediów i tam taki osobny pomocnik nie jest w ogóle wykorzystywany.
W międzyczasie dowiedziałem się o eliczniku, zainstalowałem, popatrzyłem, nawet fajne, to po co mi to w HA. Ostatnio robili jakiś update i dane z paru tygodni wyparowały, na szczęście z tego gdzie 5:1 to był mój pobór energii. To stwierdziłem, że wracam do tematu. Zobaczę co będzie na fakturze teraz.

Dobra, trochę sobie przypomniałem. Teraz z work day to wygląda tak i działa OK:

  - name: "TaryfaEnergii"
    unique_id: 230e307a-6150-4c2e-8571-7634dec8fcd9
    state: "{{ 'dzien' if (  (is_state('binary_sensor.workday_sensor', 'on') )  and (today_at('6:00') < now() < today_at('13:00') or today_at('15:00') < now() < today_at('21:00'))   )  else 'noc' }}"

Umiem wyklikać automatyzację, ale muszę użyć dwóch, jedna przełącza liczniki z dzień na noc, druga przełącza z noc na dzień. Dodatkową wadą jest to, że zegar musi przeskoczyć z np. 5:59 na 6:00 by to zadziałało.
Znalazłem też drugą sprytniejszą w moich automatyzacjach, która pobiera argument ze stanu encji i ustawia stan przy każdej zmianie, np. gdy przeładuję yaml’e w HA. Nie wiem skąd ją wziąłem, bo jest tekstowa i na pewno jej nie zgadłem, to musiało być w tym tutorialu, którego nie mogę znaleźć teraz:

Zgadłem tyle, że wystarczy dodać inne encje po przecinku i teraz przełącza mi wszystkie liczniki jedną automatyzacją

target:
  entity_id: >-
    select.energiaoddanam, select.energiaoddanad, select.energiapobranad,
    select.energiapobranam
data:
  option: "{{ trigger.to_state.state if 'to_state' in trigger else 'noc' }}"
action: select.select_option

I mogłem wyłączyć dwie automatyzacje, teraz zostaje obserwować czy już wszystko jest OK.