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

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

J’apporte également ma pierre a l’édifice:

1 seul automatisation pour tout mes volets:
image

declancheur:

  • Soleil levée
  • Soleil Couché
  • Alert Meteo france (canicule)
  • temps /1 minutes

4 Mode:

  • Normal (lève et ferme les volets après levée soleil)
  • Auto froid (tien compte de la canicule également)
  • Auto chauf (si volet isolant alors les volets reste fermé au levée du soleil)
  • Manuel

Package:

cover:   
   ############################################################
   ##                    COVERS GROUPS                        ##
   ############################################################
  - platform: group
    name: Volets orientés sud 
    entities:
      - cover.module_volet_salon
      #- cover.module_volet_salon
  - platform: group
    name: Volets orientés ouest
    entities:
      - cover.module_volet_sejour
      #- cover.module_volet_sejour

Group (spécial Cover) 

group:
   ############################################################
   ##                    ALL COVERS GROUPS                   ##
   ############################################################
  all_covers_sud:
    name: Volets orientés sud
    entities:  
      - cover.module_volet_salon


  all_covers_ouest:
    name: Volets orientés ouest
    entities:  
      - cover.module_volet_sejour     
 
 
          
automatisation:
   ############################################################
   ##                  COVER COUNT UPDATE                   ##
   ############################################################         
  - alias: 'Mise a jour all_covers_sud'
    mode: single
    max_exceeded: silent
    initial_state: 'on'
    trigger:    
      - platform: state
        entity_id: 
          - cover.module_volet_salon
    action:
      - service: homeassistant.update_entity
        data_template:
          entity_id: sensor.all_covers_sud 

#######################

AUTOMATISATION

#######################

  alias: Volet
  description: ''
  trigger:
  - platform: sun
    event: sunrise
  - platform: sun
    event: sunset
  - platform: state
    entity_id:
    - sensor.xx_weather_alert
    attribute: Canicule
  - platform: time_pattern
    minutes: /1
  condition: []
  action:
  - choose:
    - conditions:
      - condition: sun
        after: sunset
        after_offset: 00:15:00
      sequence:
      - service: cover.close_cover
        data: {}
        target:
          entity_id:
          - cover.volets_orientes_sud
          - cover.volets_orientes_ouest
    - conditions:
      - condition: sun
        after: sunrise
        after_offset: 00:30:00
        before: sunset
      - condition: not
        conditions:
        - condition: state
          entity_id: binary_sensor.soleil_volets_ouest
          state: 'on'
        - condition: state
          entity_id: cover.volets_orientes_ouest
          state: open
      - condition: state
        entity_id: input_select.modevoletouest
        state: Auto froid
      - condition: state
        entity_id: sensor.xx_weather_alert
        attribute: Canicule
        state: Vert
      sequence:
      - service: cover.set_cover_position
        data:
          position: 100
        target:
          entity_id: cover.volets_orientes_ouest
    - conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: not
        conditions:
        - condition: state
          entity_id: binary_sensor.soleil_volets_sud
          state: 'on'
        - condition: state
          state: open
          entity_id: group.all_covers_sud
      - condition: and
        conditions:
        - condition: state
          entity_id: input_select.modevoletsud
          state: Auto froid
        - condition: state
          entity_id: sensor.xx_weather_alert
          attribute: Canicule
          state: Vert
      sequence:
      - service: cover.set_cover_position
        data:
          position: 100
        target:
          entity_id: cover.volets_orientes_sud
    - conditions:
      - condition: state
        entity_id: binary_sensor.soleil_volets_sud
        state: 'on'
      - condition: and
        conditions:
        - condition: state
          entity_id: input_select.modevoletsud
          state: Auto froid
        - condition: device
          device_id: 012fbd33f6b7cc0f9b5237f2a376a5a8
          domain: cover
          entity_id: cover.module_volet_salon
          type: is_position
          above: 50
      sequence:
      - service: cover.set_cover_position
        data:
          position: 0
        target:
          entity_id: cover.volets_orientes_sud
    - conditions:
      - condition: state
        entity_id: binary_sensor.soleil_volets_ouest
        state: 'on'
      - condition: and
        conditions:
        - condition: state
          entity_id: input_select.modevoletouest
          state: Auto froid
        - condition: state
          state: open
          entity_id: group.all_covers_ouest
      sequence:
      - service: cover.set_cover_position
        data:
          position: 0
        target:
          entity_id: cover.volets_orientes_ouest
    - conditions:
      - condition: state
        entity_id: input_select.modevoletsud
        state: Normal
      - condition: sun
        before: sunset
        after: sunrise
      - condition: device
        device_id: 012fbd33f6b7cc0f9b5237f2a376a5a8
        domain: cover
        entity_id: cover.module_volet_salon
        type: is_position
        below: 20
      sequence:
      - service: cover.set_cover_position
        data:
          position: 100
        target:
          entity_id: cover.volets_orientes_sud
    - conditions:
      - condition: state
        entity_id: input_select.modevoletouest
        state: Normal
      - condition: sun
        before: sunset
        after: sunrise
      - condition: device
        device_id: be052f85354620b14a75e06914a6140d
        domain: cover
        entity_id: cover.module_volet_sejour
        type: is_position
        below: 20
      sequence:
      - service: cover.set_cover_position
        data:
          position: 100
        target:
          entity_id: cover.volets_orientes_ouest
    - conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: state
        entity_id: input_select.modevoletsud
        state: Auto chauf
      - condition: state
        entity_id: group.volets_sud
        state: open
      sequence:
      - service: cover.set_cover_position
        data:
          position: 0
        target:
          entity_id: cover.volets_orientes_sud
    - conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: state
        entity_id: input_select.modevoletouest
        state: Auto chauf
      - condition: state
        entity_id: group.volets_ouest
        state: open
      sequence:
      - service: cover.set_cover_position
        data:
          position: 0
        target:
          entity_id: cover.volets_orientes_ouest
    default: []
  mode: single

Bonne lecture :slight_smile:

1 « J'aime »