GieBek
(GieBek)
6 Luty 2023 23:28
1
Cześć, czy jest ktoś kto pomógłby mi ogarnąć warunek wyrzucający “true” od wschodu słońca do godziny 23:00?
Najlepiej jak template ale nie musi być.
Dodam, że poniższe przekłady nie działają lub podobne.
{{ state_attr('sun.sun', 'elevation') > 0 or now() < today_at('23:00') }}
artpc
(artur)
7 Luty 2023 02:40
2
macek
7 Luty 2023 07:28
3
Twój przykład nie będzie działać bo masz warunek “or” (albo to albo to) czyli jako przykład podam godzinę 3 rano i Twoj warunek jest spełniony bo łapie sie na now() < today_at('23:00')
.
Do analizy takich warunków używaj Narzędzi dewelopwerskich:
Troche kombinowany kod ale powinno działać:
{% if is_state('sun.sun','above_horizon') %}
true
{% else %}
{% if now() > today_at('15:00') and now() < today_at('23:00') %}
true
{% else %}
false
{% endif %}
{% endif %}
Edit:
Godz. 17. - mam po zachodzie słońca i przed 23. - kod nadal działa poprawnie
GieBek
(GieBek)
7 Luty 2023 10:19
4
Cześć, dzięki za odp.
Używam Narzędzi deweloperskich jednak one odzwierciedlają tylko dany moment.
“or” tak jak napisałem był tylko przykładem w moich testach miałem “and” czy “above_horizon” i wiele innych jednak wszystkie załączały się o 00:00 albo kończyły wraz z zachodem słońca.
Służyć ma jako warunek do zapalania światła w określonych godzinach.
action:
- choose:
- conditions:
- condition: template
value_template: "{{ now() > today_at('07:20') and now() < today_at('23:00') }}"
# - condition:
# - or:
# - condition: sun
# after: sunrise
# after_offset: '-00:30:00'
# - condition: template
# value_template: "{{ now().strftime('%T') < '22:59:59' }}"
# - condition: sun
# after: sunrise
# before_offset: "+01:00:00"
# - condition: template
# value_template: "{{ now().strftime('%T') < '22:59:59' }}"
- condition: template
value_template: "{{ is_state('input_select.dom_select', 'Auto') }}"
sequence:
- service: light.toggle
data:
brightness_pct: 100
target:
entity_id:
- light.swiatlo_salon_l1
- light.swiatlo_salon_l2
- light.swiatlo_salon_3
################################ TIME "23:00:00" - "23:59:59" ##################
- conditions:
- condition: template
value_template: "{{ now() > today_at('23:00') and now() < today_at('00:00') }}"
- condition: template
value_template: "{{ is_state('input_select.dom_select', 'Auto') }}"
sequence:
- service: light.toggle
data:
brightness_pct: 15
target:
entity_id:
- light.swiatlo_salon_l1
- light.swiatlo_salon_l2
- light.swiatlo_salon_3
- conditions:
- condition: template
value_template: "{{ now() > today_at('00:00') and now() < today_at('07:20') }}"
# - condition: sun
# after: sunrise
# before_offset: "+01:00:00"
# - condition: template
# value_template: "{{ now().strftime('%T') > '00:00:00' }}"
- condition: template
value_template: "{{ is_state('input_select.dom_select', 'Auto') }}"
sequence:
- service: light.toggle
data:
brightness_pct: 20
target:
entity_id:
- light.swiatlo_salon_l1
- light.swiatlo_salon_l2
- light.swiatlo_salon_3
mode: single
Takie tam od 7:20 działa prawidłowo ale chcę uzyskać od wschodu słońca najlepiej z przesunięciem 30-minutowym.
GieBek
(GieBek)
7 Luty 2023 16:22
5
Jak Twój kod wykorzystać w conditions:
macek
7 Luty 2023 16:30
6
@GieBek w ten sposób:
condition: template
value_template: |-
{% if is_state('sun.sun','above_horizon') %}
true
{% else %}
{% if now() > today_at('15:00') and now() < today_at('23:00') %}
true
{% else %}
false
{% endif %}
{% endif %}
GieBek
(GieBek)
8 Luty 2023 22:06
7
@macek
Dzięki Ci bardzo, Twój kod działa idealnie. Udało mi się go nawet skrócić do takiej postaci i też działa.
{{ is_state('sun.sun','above_horizon') or now() > today_at('15:00') and now() < today_at('23:00') }}
Mam jeszcze małe pytanie, można zrobić przesunięcie o np. 1 godzinę do przodu po wschodzie słońca?