Last active
July 11, 2023 15:59
-
-
Save piitaya/3ef9de56183dcdcfd4fb38c51c8a4f04 to your computer and use it in GitHub Desktop.
Sun Protection for Shutter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Protection du soleil | |
author: Piitaya | |
description: Règle le volet en fonction de la position du soleil. | |
source_url: https://gist.github.com/piitaya/3ef9de56183dcdcfd4fb38c51c8a4f04 | |
domain: automation | |
input: | |
shutter: | |
name: Volet | |
description: Volet à contrôler | |
selector: | |
entity: | |
domain: cover | |
multiple: false | |
azimuth: | |
name: Azimuth | |
description: Entité représentant l'azimuth du soleil. Une entrée numérique peut être utilisée à des fins de tests. | |
selector: | |
entity: | |
filter: | |
- domain: sensor | |
integration: sun | |
- domain: input_number | |
multiple: false | |
opening_sensor: | |
name: Capteur d'ouverture | |
description: Le volet utilisera la position non-exposée si la fenêtre est ouverte. | |
default: "" | |
selector: | |
entity: | |
filter: | |
domain: binary_sensor | |
device_class: | |
- opening | |
- window | |
- door | |
- garage_door | |
position_exposed: | |
name: Ouverture du volet au soleil | |
description: L'ouverture du volet sera réglée à cette valeur si le volet est exposé au soleil. | |
default: 15 | |
selector: | |
number: | |
min: 5 | |
max: 100 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "%" | |
position_unexposed: | |
name: Ouverture du volet à l'ombre | |
description: L'ouverture du volet sera réglée à cette valeur si le volet n'est pas exposé au soleil. | |
default: 100 | |
selector: | |
number: | |
min: 5 | |
max: 100 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "%" | |
position_tolerance: | |
name: Tolérance d'ouverture | |
description: L'ouverture du volet ne bougera pas si elle est proche de la position souhaitée plus ou moins cette tolérance. | |
default: 10 | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "%" | |
shutter_orientation: | |
name: Orientation du volet | |
description: Orientation du volet par rapport au nord. 0° correspond à une orientation plein nord. | |
selector: | |
number: | |
min: 0 | |
max: 355 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "°" | |
shutter_max_sun_angle: | |
name: Angle d'incidence maximal du soleil par rapport au volet | |
description: Le volet sera consideré comme exposé si l'angle entre le volet et le soleil est inférieur à cette valeur. | |
default: 90 | |
selector: | |
number: | |
min: 0 | |
max: 180 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "°" | |
minimal_sun_elevation: | |
name: Élevation minimale du soleil | |
description: Le volet ne sera pas controlé si l'élévation soleil est en dessous de cette valeur. | |
default: 15 | |
selector: | |
number: | |
min: 0 | |
max: 180 | |
mode: slider | |
step: 5 | |
unit_of_measurement: "°" | |
custom_actions: | |
name: "Actions personnalisées" | |
description: "Ces actions seront éxecutées avant l'ouverture ou la fermeture des volets. Elles peuvent être utilisées pour ajouter une condition personalisée." | |
default: [] | |
selector: | |
action: | |
mode: parallel | |
max: 100 | |
trigger_variables: | |
opening_sensor_entity: !input opening_sensor | |
variables: | |
position_tolerance: !input position_tolerance | |
position_exposed: !input position_exposed | |
position_unexposed: !input position_unexposed | |
shutter_orientation: !input shutter_orientation | |
shutter_entity: !input shutter | |
azimuth_entity: !input azimuth | |
opening_sensor_entity: !input opening_sensor | |
shutter_max_sun_angle: !input shutter_max_sun_angle | |
trigger: | |
- platform: state | |
alias: Quand la position du soleil change | |
entity_id: !input azimuth | |
to: null | |
- platform: template | |
alias: Quand le capteur d'ouverture passe à l'état ouvert | |
value_template: "{{ is_state(opening_sensor_entity, 'on') }}" | |
- platform: template | |
alias: Quand le capteur d'ouverture passe à l'état fermé | |
value_template: "{{ is_state(opening_sensor_entity, 'off') }}" | |
condition: | |
- condition: state | |
alias: Si le volet est ouvert | |
entity_id: !input shutter | |
state: open | |
action: | |
- choose: [] | |
alias: "Execute les actions personnalisées" | |
default: !input custom_actions | |
- if: | |
- condition: not | |
alias: "Si la fenêtre n'est pas ouverte" | |
conditions: | |
- condition: template | |
value_template: "{{ is_state(opening_sensor_entity, 'on') }}" | |
- condition: template | |
alias: "Si la fenêtre est exposée" | |
value_template: >- | |
{% set sun_azimuth = states(azimuth_entity) | int %} | |
{{ (sun_azimuth - shutter_orientation) | abs < shutter_max_sun_angle }} | |
- condition: numeric_state | |
alias: "Si le soleil est assez haut" | |
entity_id: sensor.sun_solar_elevation | |
above: !input minimal_sun_elevation | |
then: | |
- condition: template | |
value_template: >- | |
{% set shutter_position = state_attr(shutter_entity, 'current_position') | int %} | |
{{ (shutter_position - position_exposed) | abs > position_tolerance }} | |
- service: cover.set_cover_position | |
data: | |
position: "{{ position_exposed }}" | |
target: | |
entity_id: !input shutter | |
else: | |
- condition: template | |
value_template: >- | |
{% set shutter_position = state_attr(shutter_entity, 'current_position') | int %} | |
{{ (shutter_position - position_unexposed) | abs > position_tolerance }} | |
- service: cover.set_cover_position | |
data: | |
position: "{{ position_unexposed }}" | |
target: | |
entity_id: !input shutter | |
enabled: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment