Automatiser ses volets roulants en fonction du soleil été / hiver

merci pour ce tuto très clair. J’ai un pb très bête, je souhaite mettre dans la même automation la fermeture et l’ouverture des volets en fonction d’une heure. J’ai réussi à faire la fermeture et l’ouverture mais pas dans la même automation. Une idée svp? voici mon code pour la fermeture:

- alias: 'Gestion des volets'
  trigger:
  - platform: template
    value_template: '{{ (states.sensor.time.state >= states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) }}'
  condition:
    condition: and
    conditions:
      - condition: state
        entity_id: input_select.modes_de_fermeture_des_volets_rdc
        state: 'Mode Auto semaine'
      - condition: state
        entity_id: binary_sensor.workday_sensor
        state: "on"
  action:
  - service: rest_command.fermer_les_volets_rdc
    entity_id: rest_command.fermer_les_volets_rdc

Tu peux utiliser regrouper tes deux trigger dans la même automatisation et utiliser « choose » avec tes conditions d’ouverture et de fermeture.

Salut :wave:,

Merci de participer sur le forum :+1:

:information_source: Lorsque tu postes du code (flow, yaml, js, etc.), utilise les blocs codes :computer:

Pour cela, il te suffit de cliquer sur l’outil dédié et de coller ton code à l’endroit indiqué :

L’équipe HACF.

:hacf:

Merci Yul, mais je n’arrive pas à faire tomber en marche mon code: je fais mes tests avec une prise par simplicité :slightly_smiling_face: je ne vois pas où se trouve mon erreur

- alias: 'Gestion des volets'
  description: 'Gestion desvolets'

  trigger:
    - platform: state
      entity_id: input_select.modes_de_fermeture_des_volets_rdc
  condition: []
  action:
    - choose:
        - conditions:
            - condition: state
              entity_id: input_select.modes_de_fermeture_des_volets_rdc
              state: 'Mode Auto semaine'
            - condition: state
              entity_id: binary_sensor.workday_sensor
              state: "on"
          sequence:
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
        - conditions:
            - condition: state
              entity_id: input_select.modes_de_fermeture_des_volets_rdc
              state: 'Mode Auto WE/Férié'
            - condition: state
              entity_id: binary_sensor.workday_sensor
              state: "off"
          sequence:
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_fermeture_volets_rdc_we.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_we.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_ouverture_volets_rdc_we.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_fermeture_volets_rdc_we.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
        
      default: []
'''

personne pour m’aider?

Partage tes 2 automatisations car dans la dernière, c’est tout cassé :wink:

Ca n’a rien à faire dans le service ça… c’était ton déclencheur, ça doit le rester…

Je suis une buse, désolé je n’y arrive pas. Mon trigger est le input_select. Ca ma saoule :sob:

- alias: 'Gestion des volets'
  description: 'Gestion desvolets'

  trigger:
    - platform: state
      entity_id: input_select.modes_de_fermeture_des_volets_rdc
  condition: []
  action:
    - choose:
        - conditions:
            - condition: state
              entity_id: input_select.modes_de_fermeture_des_volets_rdc
              state: 'Mode Auto semaine'
            - condition: state
              entity_id: binary_sensor.workday_sensor
              state: "on"
          sequence:
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
        - conditions:
            - condition: state
              entity_id: input_select.modes_de_fermeture_des_volets_rdc
              state: 'Mode Auto WE/Férié'
            - condition: state
              entity_id: binary_sensor.workday_sensor
              state: "off"
          sequence:
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_fermeture_volets_rdc_we.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_we.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
            - service: switch.toggle
              data:
                value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_ouverture_volets_rdc_we.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_fermeture_volets_rdc_we.state[0:5]) }}'
              entity_id: switch.prise_sejour_on_off
        
      default: []

Pourquoi le code suivant dans l’appel au service switch.toogle ?

 data:
   value_template: '{{ (states.sensor.time.state > states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) and (states.sensor.time.state < states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) }}'

Je dis peut être une bêtise mais ça n’a rien à faire la

Sinon le trigger est sur un changement d’état pour un input_select. C’est à dire que l’automatisation ne se lancera que lorsque la valeur de l’input_select sera changé. Est-ce bien ça qui est souhaité ?

https://forum.hacf.fr/t/automatiser-ses-volets-roulants-en-fonction-du-soleil-ete-hiver/1061/26?u=clemalex

Entièrement d’accord sur ce bout de code…

Partage tes 2 automatisations…

Pas celle que tu essaies mais celles d’avant qui fonctionnaient… :innocent:

Voici déjà celle d’ouverture:

- alias: Ouverture des volets semaine
  trigger:
  - platform: time_pattern
    minutes: /1
    seconds: 0
  condition: # automation enabled and time is right
    - condition: state
      entity_id: input_boolean.cover_automation
      state: 'on'
    - condition: template
      value_template: '{{ ((as_timestamp(now())|int)|timestamp_custom("%H:%M")) ==  (states.input_datetime.heure_ouverture_volets_rdc_semaine.state[0:5]) }}'
    - condition: state
      entity_id: input_select.modes_de_fermeture_des_volets_rdc
      state: 'Mode Auto semaine'
    - condition: state
      entity_id: binary_sensor.workday_sensor
      state: "on"
  action:
  - service: rest_command.ouvrir_le_volet_1_sejour
    data:
      entity_id: rest_command.ouvrir_le_volet_1_sejour
1 « J'aime »

et celle de fermeture:

- alias: Fermeture des volets semaine
  trigger:
  - platform: time_pattern
    minutes: /1
    seconds: 0
  condition: # automation enabled and time is right
    - condition: state
      entity_id: input_boolean.cover_automation
      state: 'on'
    - condition: template
      value_template: '{{ ((as_timestamp(now())|int)|timestamp_custom("%H:%M")) ==  (states.input_datetime.heure_fermeture_volets_rdc_semaine.state[0:5]) }}'
    - condition: state
      entity_id: input_select.modes_de_fermeture_des_volets_rdc
      state: 'Mode Auto semaine'
    - condition: state
      entity_id: binary_sensor.workday_sensor
      state: "on"
  action:
  - service: rest_command.fermer_le_volet_1_sejour
    data:
      entity_id: rest_command.fermer_le_volet_1_sejour
1 « J'aime »

Salut, top pour la fermeture des volets en été ! Merci

C’est un peu hard de faire tourner tes automatisations toutes les minutes. Est-ce que ça serait pas plus efficace d’avoir le trigger sur l’heure de déclenchement ?

Un truc comme ça :

Trigger:
  - platform: time
    at: states.input_datetime.heure_fermeture_volets_rdc_semaine
2 « J'aime »

Hello,

Dans le template on peut ajouter une condition pour que cela s’ouvre si la meteo est a sunny ou partlycloudy ?

Merci à vous :slight_smile:

Edit:
J’ai fait ça:

alias: Mode été volets EST (Persienne)
description: Mise en persienne des volets coté Est.
trigger:
  - platform: state
    entity_id:
      - binary_sensor.azimuth_est
    to: 'on'
    from: 'off'
condition:
  - condition: state
    entity_id: input_boolean.mode_volets
    state: 'on'
action:
  - if:
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.position_baie_suite
            above: '5'
          - condition: or
            conditions:
              - condition: state
                entity_id: weather.nersac
                state: sunny
              - condition: state
                entity_id: weather.nersac
                state: partlycloudy
    then:
      - service: cover.set_cover_position
        data:
          position: 83
        target:
          entity_id: cover.volet_baie_p
      - service: cover.set_cover_position
        data:
          position: 84
        target:
          entity_id: cover.volet_entree
mode: single

Cela vous parait correct?

Bonjour !
J’utilise la technique décrite dans le tuto depuis un moment mais j’aimerai changer pour plus simplicité et pour d’autres fonctionnalités.
Je me suis créé récemment un unique ‹ binary sensor › qui mêle deux capteurs de présence. L’idée est que si l’un ou l’autre des capteurs détecte une présence alors le ‹ binary sensor › s’allume.

- platform: template
  sensors:
    presence_wc_sdd_rdc:
      friendly_name: "Présence WC et Sdd RDC"
      device_class: motion
      value_template: >
        {{ 
          is_state('binary_sensor.presence_wc_rdc', 'on')
          or is_state('binary_sensor.presence_sdd_rdc', 'on')
        }}

Je crois que j’utilise toujours la mauvaise version pour rédiger mes ‹ sensors ›. Je devrais le mettre dans mon fichier split ‹ template.yaml › en utilisant la ‹ mordern configuration › mais je n’ai pas eu le temps de les déplacer.

J’aimerai appliquer cela pour l’azimut et l’elevation du soleil sur mon volet mais j’ai encore du mal avec les templates…
Il faudrait que le ‹ binary sensor › passe à ‹ on › quand :

  • L’azimut est entre 145 et 245
  • ET l’elevation est supérieure à 45

Voici mon idée, mais j’aurai besoin d’un connaisseur pour corriger mes erreurs…

- platform: template
  sensors:
    soleil_chambre_rdc:
      friendly_name: "Soleil Chambre RDC"
      value_template: >
        {{ 
          is_state_attr(sun.sun', 'elevation')|float > 45
          and is_state_attr('sun.sun', 'azimut')|float > 145 < 245
        }}

Salut,

Tu peux essayer qqc comme ça :

- platform: template
  sensors:
    soleil_chambre_rdc:
      friendly_name: "Soleil Chambre RDC"
      value_template: >
        {{ 
          {% set E =  state_attr('sun.sun', 'elevation') | float %}
          {% set A =  state_attr('sun.sun', 'azimuth') | float %}
          {{ E > 45 and 145 < A < 245 }}
        }}

Attention ce format de template ne sera bientôt plus fonctionnel pensez à mettre à jour ce que vous partagez sinon en septembre beaucoup de template ne fonctionneront plus

1 « J'aime »
template:
  - binary_sensor:
    - name: "Soleil Chambre rdc"
      unique_id: soleil_chambre_rdc
      state: >
        {{ 
          {% set E =  state_attr('sun.sun', 'elevation') | float %}
          {% set A =  state_attr('sun.sun', 'azimuth') | float %}
          {{ E > 45 and 145 < A < 245 }}
        }}  

Voilà avec le nouveau format, je pense que ça devrait fonctionner :wink:

2 « J'aime »
alias: Volet Bureau Azimut
description: Volet Bureau Azimut
trigger:
  - entity_id:
      - binary_sensor.soleil_volet_sud
    from: 'off'
    platform: state
    to: 'on'
  - platform: state
    entity_id:
      - sensor.capteur_lumiere_exterieur
    for:
      hours: 0
      minutes: 30
      seconds: 0
    from: '4000'
    to: '10000'
  - platform: state
    entity_id:
      - sensor.temperature_158d000273cd8e
  - platform: state
    entity_id:
      - sensor.sunelevation
condition: []
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: input_select.modevoletbureau
            state: Auto
          - condition: numeric_state
            entity_id: sensor.temperature_158d000273cd8e
            above: '22'
          - condition: numeric_state
            entity_id: sensor.capteur_lumiere_exterieur
            above: '5000'
          - condition: template
            value_template: '{{ state_attr("cover.volet_bureau", "current_position") > 60 }}'
            enabled: true
          - condition: numeric_state
            entity_id: sensor.sunelevation
            below: '65'
          - condition: state
            entity_id: binary_sensor.soleil_volet_sud
            state: 'on'
        sequence:
          - device_id: 3b13f25093299df51a0aa3ddb7bf8774
            domain: cover
            entity_id: cover.volet_bureau
            type: set_position
            position: 20
    default:
      - device_id: 3b13f25093299df51a0aa3ddb7bf8774
        domain: cover
        entity_id: cover.volet_bureau
        type: set_position
        position: 100
mode: single

Salut ma petite contribution