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

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 »

Bonjour,
Désolé pour la réponse ultra tardive, mais je n’ai pas eu l’occasion de me concentrer sur ce problème depuis ta réponse !
Merci pour ta proposition mais j’obtiens des erreurs dans le log.
Voici mon log :

Logger: homeassistant.config
Source: config.py:820
First occurred: 16:29:19 (1 occurrences)
Last logged: 16:29:19

Invalid config for [template]: invalid template (TemplateSyntaxError: unexpected '%') for dictionary value @ data['binary_sensor'][0]['state']. Got "{{ \n {% set E = state_attr('sun.sun', 'elevation') | float %}\n {% set A = state_attr('sun.sun', 'azimuth') | float %}\n {{ E > 45 and 145 < A < 245 }}\n}} ". (See /config/template_listing.yaml, line 36).

Dans les outils de dév, j’obtiens également la même erreur :

Avez-vous une idée du problème ?
Merci !

Salut Hankey71,

Petite erreur dans le code que je t’avais soumis, il y’avait « trop » d’accolade :stuck_out_tongue:

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 }}

Ca devrait être mieux comme ça :wink:

image

image

Restera à ajouter des valeurs par défaut aux « float » pour éviter des problèmes, tu peux faire comme ça :

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

Merci pour ton aide !
Que signifie exactement (50) à côté de float ?

Si par hasard l’entité « sun » n’est pas disponible, les valeurs des attributs ne seront pas dispo non plus.

Alors la valeur entre () sera prise par défaut pour évaluer la template, sans valeur par défaut c’est message d’erreur etc …

Plus d’info ici

1 « J'aime »

Ok !
Alors je comprends pas l’ensemble des infos, mais je suis entrain de convertir mes sensor et binary_sensor dans le nouveau format. Pour l’instant cela fonctionne.
Il va falloir que je me penche sérieusement dessus pour comprendre le fonctionnement précis des template.

Bonjour,

@Felix62 ,

Je viens de migrer mes volets vers HA et je me demandais comment automatiser l’ouverture et fermeture de ces deniers, j’aimerais tester ta solution mais il y a certaines choses que je ne comprends pas, ton « package » c’est quoi exactement, un fichier yaml nommé package.yaml?

T’as 2 groupes, volets orientés sud et volet orientés ouest, les entités rattaché à chaque groupe représentent chaque volet dans la dite orientation, c’est bien ça? mais est-ce que tu dispose seulement d’un ou plusieurs volets par orientation?

Je ne vois pas les notions d’altitude ou d’azimut dans le code, j’ai peut-être lu trop vite, tu utilises ces notions dans ton code?

J’essaie de bien comprendre ton code avant de tenter de déployer la même chose chez moi.
Merci d’avance.

Edit: j’ai creer un github : felix624/HomeAssistant at main · felix624/felix624 · GitHub

Le package c’est un simple dossier qui regroupe des fichiers .yaml en rapport avec les dispositif mis en place
Volet. Yaml
Calendrier. Yaml ect…

Pour synthétiser, j’ai fait des groupes de volets:

  • Ouest ( comprenant 2 volet pour l’instant)
  • Sud (comprenant 1 volet pour l’instant)

Par la suite je pourrais rajouter des volet correspondant à l’orientation.

Ensuite j’utilise la notion azimut le degrés ensoleillement donnant sur les volet orienté sud ou ouest

Voici mon dashboard pour plus d’informations :

Bonjour,

Merci beaucoup pour les détails, je vais étudier tout ça avec attention.

Bonsoir,

@Felix62,

Après lecture, je viens de tenter d’adapter ta config pour mon usage, mais j’obtiens une erreur après avoir ajouté le Menu Input select dans le fichier configuration.yaml (c’est bien là qu’il faut le mettre?)

Le message d’erreur que j’obtiens est le suivant:

Integration error: mode_volet - Integration 'mode_volet' not found.
Integration error: modevoletnord - Integration 'modevoletnord' not found.
Integration error: modevoletsud - Integration 'modevoletsud' not found.
Integration error: volets - Integration 'volets' not found.

Ayant des volets seulement sur le côté nord et côté sud de la maison et je pense avoir adapté en conséquence, pour info je n’utilise pas package mais l’option !include

une idée de ce que j’ai mal fait?

Merci

Al

Oui les input_Select c’est bien config par défaut.
Essai de lancer le redémarrage sans input_Select et durant le redémarrage tu les rajoute si tu accède au fichier via smb

Merci, je vais tenter.

ca n’a pas fonctionné, j’ai toujours l’erreur. :frowning:

J’ai trouver c’est parce-que j’ai fait un include dans la config.
input_select: !include_dir_merge_named input_select/

Pour toi il faut pas oublier le « input_select: » en amont des différents volets

# Example configuration.yaml entry
input_select:
  who_cooks:
    name: Who cooks today
    options:
      - Paulus
      - Anne Therese
    initial: Anne Therese
    icon: mdi:panda
  living_room_preset:
    options:
      - Visitors
      - Visitors with kids
      - Home Alone

Ce qui pour toi donne:

############################
###     Input_select     ###
############################
input_select:
  mode_volet:
    name: mode volet principale
    options:
      - Normal
      - Auto chauf
      - Auto froid
      - Manuel
  modevoletsud:
    name: mode volet sud
    options:
      - Normal
      - Auto chauf
      - Auto froid
      - Manuel
  modevoletouest:
    name: mode volet ouest
    options:
      - Normal
      - Auto chauf
      - Auto froid
      - Manuel

Ps: merci cela m’a permis de mettre à jours ma page dashboard avec les explication en adéquation