Hallo,
ich würde gerne eine Verschattungsteuerung für meine Rolläden erstellen. Einen Code habe ich soweit zusammen.
Ich weiß nur nicht, wie ich das am besten mit dem Azimuth-Trigger machen soll. Der Azimuth wird bei Home-Assistant ca. alle 5 Minuten aktualisiert. Habe jetzt erstmal zum testen eingetragen, dass bei jeder Änderung die Automatisierung getriggert werden soll. Das heißt natürlich auch, selbst wenn es nicht notwendig ist, läuft die Automatisierung alle 5 Minuten und schaut, ob etwas ausgelöst werden muss.
Hat jemand vielleicht eine Idee, wie man das schlauer lösen könnte? Hatte schon gedacht, jeweils einen Trigger für die Unter- und Oberwerte der einzelnen Rolläden zu machen. Macht es natürlich ziemlich unübersichtlich.
alias: Rolladensteuerung nach Azimut, Helligkeit und Temperatur neu
description: Steuerung der Rolläden basierend auf Azimut, Helligkeit und Temperatur
triggers:
- entity_id:
- sensor.sonneneinstrahlung_köln
above: 400
for:
hours: 0
minutes: 11
seconds: 0
trigger: numeric_state
- entity_id:
- sensor.sonneneinstrahlung_köln
below: 200
for:
hours: 0
minutes: 11
seconds: 0
trigger: numeric_state
- entity_id: sensor.temperatur_garten_temperature
above: 20
trigger: numeric_state
- entity_id: sensor.temperatur_garten_temperature
below: 17
trigger: numeric_state
- entity_id:
- sensor.sun_solar_azimuth
for:
hours: 0
minutes: 5
seconds: 0
trigger: state
conditions:
- condition: sun
after: sunrise
before: sunset
actions:
- choose:
- conditions:
- condition: template
value_template: "{{ 70 < states('sensor.sun_solar_azimuth') | float(0) < 170 }}"
- condition: template
value_template: >-
{{ state_attr('cover.kuechelinks_cover_0', 'current_position') !=
63 }}
sequence:
- data:
position: 63
action: cover.set_cover_position
target:
entity_id: cover.kuechelinks_cover_0
- conditions:
- condition: template
value_template: "{{ 60 < states('sensor.sun_solar_azimuth') | float(0) < 160 }}"
- condition: template
value_template: >-
{{ state_attr('cover.kueche_rechts_cover_0', 'current_position')
!= 63 }}
sequence:
- data:
position: 63
action: cover.set_cover_position
target:
entity_id: cover.kueche_rechts_cover_0
- conditions:
- condition: template
value_template: "{{ 80 < states('sensor.sun_solar_azimuth') | float(0) < 210 }}"
- condition: template
value_template: "{{ state_attr('cover.wohnzimmer_1', 'current_position') != 63 }}"
sequence:
- data:
position: 63
action: cover.set_cover_position
target:
entity_id: cover.wohnzimmer_1
- conditions:
- condition: template
value_template: "{{ 110 < states('sensor.sun_solar_azimuth') | float(0) < 250 }}"
- condition: template
value_template: "{{ state_attr('cover.wohnzimmer_2', 'current_position') != 60 }}"
sequence:
- data:
position: 60
action: cover.set_cover_position
target:
entity_id: cover.wohnzimmer_2
- conditions:
- condition: template
value_template: "{{ 155 < states('sensor.sun_solar_azimuth') | float(0) < 275 }}"
- condition: template
value_template: >-
{{ state_attr('cover.wohnzimmer_3_cover_0', 'current_position') !=
60 }}
sequence:
- data:
position: 60
action: cover.set_cover_position
target:
entity_id: cover.wohnzimmer_3_cover_0
- conditions:
- condition: template
value_template: "{{ 170 < states('sensor.sun_solar_azimuth') | float(0) < 290 }}"
- condition: template
value_template: >-
{{ state_attr('cover.wohnzimmer_4_pm_cover_0', 'current_position')
!= 60 }}
sequence:
- data:
position: 60
action: cover.set_cover_position
target:
entity_id: cover.wohnzimmer_4_pm_cover_0
- conditions:
- condition: template
value_template: "{{ 200 < states('sensor.sun_solar_azimuth') | float(0) < 330 }}"
- condition: template
value_template: "{{ state_attr('cover.buro', 'current_position') != 60 }}"
sequence:
- data:
position: 60
action: cover.set_cover_position
target:
entity_id: cover.buro
- conditions:
- condition: template
value_template: "{{ 100 < states('sensor.sun_solar_azimuth') | float(0) < 290 }}"
- condition: template
value_template: "{{ state_attr('cover.markise', 'current_position') != 0 }}"
sequence:
- data:
position: 0
action: cover.set_cover_position
target:
entity_id: cover.markise
- conditions:
- condition: or
conditions:
- condition: numeric_state
entity_id: sensor.sonneneinstrahlung_köln
below: 200
value_template: >
{% set last =
states.sensor.sonneneinstrahlung_köln.last_changed %}
{{ (now() - last).total_seconds() < 660 }}
- condition: numeric_state
entity_id: sensor.temperatur_garten_temperature
below: 17
sequence:
- target:
entity_id:
- cover.wohnzimmer_1
- cover.wohnzimmer_2
- cover.markise
- cover.wohnzimmer_3_cover_0
- cover.wohnzimmer_4_pm_cover_0
- cover.kuechelinks_cover_0
- cover.kueche_rechts_cover_0
- cover.buro
action: cover.open_cover
data: {}
- conditions:
- condition: template
value_template: >-
{{ states('sensor.sun_solar_azimuth') | float(0) <= 70 or
states('sensor.sun_solar_azimuth') | float(0) >= 170 }}
- condition: template
value_template: >-
{{ state_attr('cover.kuechelinks_cover_0', 'current_position') <
100 }}
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.kuechelinks_cover_0
- conditions:
- condition: template
value_template: >-
{{ not (60 < states('sensor.sun_solar_azimuth') | float(0) < 160)
}}
- condition: template
value_template: >-
{{ state_attr('cover.kueche_rechts_cover_0', 'current_position') <
100 }}
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.kueche_rechts_cover_0
- conditions:
- condition: template
value_template: >-
{{ not (80 < states('sensor.sun_solar_azimuth') | float(0) < 210)
}}
- condition: template
value_template: "{{ state_attr('cover.wohnzimmer_1', 'current_position') < 100 }}"
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.wohnzimmer_1
- conditions:
- condition: template
value_template: >-
{{ not (110 < states('sensor.sun_solar_azimuth') | float(0) < 250)
}}
- condition: template
value_template: "{{ state_attr('cover.wohnzimmer_2', 'current_position') < 100 }}"
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.wohnzimmer_2
- conditions:
- condition: template
value_template: >-
{{ not (155 < states('sensor.sun_solar_azimuth') | float(0) < 275)
}}
- condition: template
value_template: >-
{{ state_attr('cover.wohnzimmer_3_cover_0', 'current_position') <
100 }}
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.wohnzimmer_3_cover_0
- conditions:
- condition: template
value_template: >-
{{ not (170 < states('sensor.sun_solar_azimuth') | float(0) < 290)
}}
- condition: template
value_template: >-
{{ state_attr('cover.wohnzimmer_4_pm_cover_0', 'current_position')
< 100 }}
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.wohnzimmer_4_pm_cover_0
- conditions:
- condition: template
value_template: >-
{{ not (200 < states('sensor.sun_solar_azimuth') | float(0) < 330)
}}
- condition: template
value_template: "{{ state_attr('cover.buro', 'current_position') < 100 }}"
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.buro
- conditions:
- condition: template
value_template: >-
{{ not (100 < states('sensor.sun_solar_azimuth') | float(0) < 290)
}}
- condition: template
value_template: "{{ state_attr('cover.markise', 'current_position') < 100 }}"
sequence:
- action: cover.open_cover
data: {}
target:
entity_id: cover.markise
mode: single