HA-Asservissement des volets à la position du soleil

Intro

Un automatisme assez simple de gestion des volets en fonction de la position (azimuth) du soleil.

Mise à jour:

du 17/06/2022

  • suppression du contrôle toutes les 15 mn
  • déclenchement des fermetures par des « template »

du 17/05/2022

  • Changement du code l’automatisme: Ouverture des volets le midi et le soir sur changement d’état, ce qui permet de les refermer si besoin
  • Ajout du code de la carte tableau de bord « Non Dwain »

Analyse fonctionnelle

Description de l’automation:

  • choix 1: Si l’azimuth devient supérieur à 103° et inférieur à 137° et si la valeur de radiation est supérieure à un seuil alors je ferme les volets de la salle de bain et de la chambre nord.
  • choix 2: Si l’azimuth devient supérieur à 137° et inférieur à 159° alors j’ouvre les volets de la salle de bain et de la chambre nord si celle-ci est déclarée inoccupée.
  • choix 3: Si l’azimuth devient supérieur à 160° et inférieur à 266° et si la valeur de radiation est supérieure à un seuil alors je ferme les volets de la chambre parents et de la chambre amis sud.
  • L’ouverture des volets le soir reste manuelle, plus pratique dans mon cas car très dépendant de l’ensoleillement, la température, etc..
  • Le seuil de luminosité est modifiable dans un input number.

Azimuth du soleil

Vous trouverez sur ce site un outil vous permettant une approche de la position du soleil en fonction de la situation géographique de votre maison.

Déclaration des entités

Calcul de l’azimuth du soleil et de son élévation par la même occasion.

  - platform: template
    sensors:
# Azimuth et elevation soleil
      sun_elevation:
        friendly_name: 'elevation soleil'
        unit_of_measurement: "°"
        value_template: "{{'%+.1f'|format(state_attr('sun.sun', 'elevation'))}}"

      sun_azimuth:
        friendly_name: 'azimut soleil'
        unit_of_measurement: "°"
        value_template: "{{'%+.1f'|format(state_attr('sun.sun', 'azimuth'))}}"

Calcul simplifié de trois booleans grâce à la nouvelle fonctionnalité « entrées threshold » disponible depuis HA V 2022-04.

binary_sensor.position_soleil_matin = on si 103 < azimuth < 137

binary_sensor.position_soleil_midi = on si 138 < azimuth < 159

binary_sensor.position_soleil_am = on si 160 < azimuth < 266

Déclaration de l’input_number définissant le seuil du niveau d’ensoleillement validant la fermeture des volets


input_number:
# gestion volet: Niveau Ensoleilement ouv auto volet
    radiation_seuil_ferm_volet:
      name: Radiat seuil ferm volets
      mode: box
      min: 0
      max: 1200
      unit_of_measurement: "w/m2"
      icon: mdi:weather-sunny

Le niveau ensoleillement est mesuré par ma station météorologique Davis Instrument Vantage pro2, je calcule la valeur moyenne d’ensoleillement sur une heure afin de m’assurer d’un ensoleillement régulier

sensor:
  # Ensoleillement
  - platform: statistics
    entity_id: sensor.vp2_radiation
    unique_id: vp2_radiation_moyenne
    max_age:
      minutes: 60 # sur 1h
    name: vp2_radiation_moyenne
    state_characteristic: median

Automatisme associé

Le déclenchement de fermeture est une combinaison de la position du soleil et de la moyenne ensoleillement supérieure au seuil prédéfini dans l’input_number.

alias: 4_1_3 Volet-Suivi Azimuth Soleil
description: Ouvre et ferme les volets en fonction de la course (azimuth) du soleil
trigger:
  - platform: template
    value_template: >-
      {% set a=states('binary_sensor.position_soleil_matin') %}

      {% set b=states('sensor.vp2_radiation_moyenne') | float(default=0) %}

      {% set c=states('input_number.radiation_seuil_ferm_volet') |
      float(default=0) %}

      {{ a == "on" and b>=c}}
    id: ferm_matin
  - platform: state
    entity_id:
      - binary_sensor.position_soleil_midi
    id: ouv_midi
    to: 'on'
  - platform: template
    value_template: >-
      {% set a=states('binary_sensor.position_soleil_am') %}

      {% set b=states('sensor.vp2_radiation_moyenne') | float(default=0) %}

      {% set c=states('input_number.radiation_seuil_ferm_volet') |
      float(default=0) %}

      {{ a == "on" and b>=c}}
    id: ferm_am
condition: []
action:
  - choose:
      - conditions:
          - condition: trigger
            id: ferm_matin
        sequence:
          - service: cover.set_cover_position
            data:
              position: 10
            target:
              entity_id:
                - cover.volet_sdb_p
                - cover.volet_amis_nord_p
      - conditions:
          - condition: trigger
            id: ouv_midi
        sequence:
          - service: cover.open_cover
            data: {}
            target:
              entity_id: cover.volet_sdb_p
          - condition: state
            entity_id: input_boolean.presence_amis_ch_nord
            state: 'off'
          - service: cover.open_cover
            target:
              entity_id:
                - cover.volet_amis_nord_p
            data: {}
      - conditions:
          - condition: trigger
            id: ferm_am
        sequence:
          - service: cover.set_cover_position
            data:
              position: 10
            target:
              entity_id:
                - cover.volet_amis_sud_p
                - cover.volet_ch_parent_p
    default: []
mode: single

Conclusion

Un automatisme simplifié par les nouvelles fonctionnalités de HA V2022-04, merci aux développeurs qui font un travail remarquable.

Mais pourquoi faire simple quand on peut faire compliquer, on pourrait aussi tenir compte de la température de la pièce, de la température extérieure, etc.. A voir à l’usage cet été.

Article en lien avec cette publication

5 Comments on “HA-Asservissement des volets à la position du soleil”

  1. Salut, encore un super tuto que j’ai adapté à ma config. Or je rencontre un problème, la fermeture et l’ouverture des volets fonctionnent correctement en fonction des deux valeurs, position du soleil et ensoleillement, mais lorsque ils sont définitivement fermés pour la nuit l’automatisation les réouvrent car l’état de binary_sensor.position_soleil_am est sur off. Comment puis je remédier à ce problème? Deuxième question, je souhaiterai reprendre la mise en forme de tes boutons pour commander les volets dans lovelace sans passer par l’intégration dwain dashboard, est ce possible car malgré pas mal d’essai je n’ai pas réussi.

    En te remerciant encore pour ce super tuto.

    1. Merci Bob
      Dans cette configuration, l’automatisme est conditionné par la mesure luminosité qui doit etre supérieure au seuil prédéfini.
      Si tu ne mesure pas la luminosité tu peux en lieu et place tester si le soleil est levé ou pas (conditions: etat sun)
      J’ai ajouté le code de la carte pour un tableau de bord « non Dwains »
      @+

      1. Merci pour ta réponse, pourtant je mesure bien la luminosité. Je suis repassé sur deux automatisation, une pour la fermeture et l’autre pour l’ouverture, que j’ai couplé avec la luminosité et la position du soleil.
        Merci pour la carte je vais y jeter un oeil 😉

  2. Merci Bob
    Dans cette configuration, l’automatisme est conditionné par la mesure luminosité qui doit etre supérieure au seuil prédéfini.
    Si tu ne mesure pas la luminosité tu peux en lieu et place tester si le soleil est levé ou pas (conditions: etat sun)
    J’ai ajouté le code de la carte pour un tableau de bord « non Dwains »
    @+

    1. Merci pour ta réponse, pourtant je mesure bien la luminosité. Je suis repassé sur deux automatisation, une pour la fermeture et l’autre pour l’ouverture, que j’ai couplé avec la luminosité et la position du soleil.
      Merci pour la carte je vais y jeter un oeil 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *