Gestion des volets avec Home Assistant

Salut à tous :wave:,

Je vous partage deux articles qui permettent de mettre en place une gestion complète pour vos volets roulants. Le système est basé sur le plugin Sunshutter de Jeedom (pour les connaisseurs).
Le système n’est pas très complexe à mettre en oeuvre mais il requiert une certaine rigueur.

Lien vers les articles :
Gestion des volets avec Home Assistant
Exemple de gestion du volet roulant de ma cuisine

Vous avez également un autre exemple d’utilisation sur le blog de @mycanaletto : Home Assistant & Volets roulants, automatismes !

Si vous avez des questions, des améliorations ou des suggestions, n’hésitez surtout pas, j’essayerais d’y répondre du mieux que je puisse !

4 « J'aime »

Très intéressant et tres bien détaillé. Je vais me pencher dessus dès que j’ai resolu mon problème de calibrage de volets entre les Shelly 2.5 et les Bubendorff…

Merci beaucoup !

Je ne peux pas t’aider pour les Bubendorff, malheureusement, car je n’en possède pas. J’ai de « simples » volets roulants électriques de marque standard.

Pas de problème, c’était juste une manière que je gardais ton post sous le coude pour quand j’aurais fini le dossier qui est sur la table.

Super, cela va m’éviter de recommencer le codage que j’avais également fait sur Jeedom (et oui, récemment passé sur HA :wink: ).
L’approche était fortement similaire (à 95%). J’avais à l’époque affiner pour pouvoir positionner précisément les premiers pourcents pour ne décoller que les interstices lors de grande chaleur et soleil qui donne dans les baies vitrées (et ne pas se retrouver dans le noir) au point d’intégrer un temps de décollage à l’ouverture et un autre à la fermeture (on va dire, temps entre l’envoi de la commande et le début de l’action (environ 0.6s), négligeable sur des grandes amplitudes de manœuvre mais important pour les faibles). et également une différence de temps entre une montée complète et une descente (aidé par le poids du volet), j’avais donc déclaré 2 durées différentes.
Je débute sur HA, je n’en suis qu’aux intégrations… je vais creuser ta mise en place de plus près
un grand merci

Bonjour,
Merci beaucoup pour ton partage, je suis entrain de le mettre en place chez moi.

Qu’utilisez vous pour l’ouverture des volets le matin ? par défaut ils s’ouvrent au levé du soleil, un peut tôt quand meme :sweat_smile:
J’ai voulu créer un sensor ‹ au lit › avec nos présence, et detection de telephone en charge comme conditions, mais pas du tout efficace.
Je voulais ensuite faire avec les heures de reveil, mais Apple ne partage pas cette information avec HA.
Je suis donc actuellement avec une heure fixe Maximum, et un scenario « Bonjour » sur google Home.

Je note l’amélioration sur le positionnement précis. Je reviens vers toi dès que j’ai eu le temps de faire la modification !

Hello,

Ils vont s’ouvrir suivant ton paramétrage. J’utilise un input_select pour la gestion du nycthémère : home-assistant/period_of_day.yaml at main · FabienYt/home-assistant · GitHub

Le matin, avec Homekit, soit on passe en mode « Nuit - Chambres » pour garder les chambres fermés et ouvrir les volets des autres pièces ou passer en mode « Jour » pour activer la gestion automatique des volets de toute la maison.

Je crois avoir vu un moyen pour récupérer l’heure des réveils mais je ne me souviens plus où !

1 « J'aime »

Je me permets de vous partager le code que j’utilise.

  • Le code prend en compte le facteur canicule
  • Les Modes :
    Normal : (les volets s’ouvrent et se ferment en fonction du levée et couchée du soleil mais autorise des modification manuellement jusqu’à 50%.
    Auto Chauff : si il fait froid alors les volets se ferment pour conserver la chaleur intérieur.
    Auto Froid : Même consignes que le mode Normal mais en plus détection du soleil coté volet Ouest alors les volets ouest se ferment mais les autres restent ouvert ainsi les volets frappé par le soleil se ferment sans impacter les autres volets.
    Manuel : Aucune automatisation.
    Aperçu de l’interface HA:

Ce code représente l’automatisation des volets en fonction de différentes conditions.
Voici la logique de fonctionnement :

  1. Déclencheurs :

    • Lever et coucher du soleil.
    • Changement d’état de l’attribut « Canicule » du capteur « sensor.XX_weather_alert ».
    • Changement d’état de l’input_select « input_select.mode_volet ».
    • Changement d’état du capteur « sensor.time_2 ».
  2. Conditions :

    • Aucune condition spécifique définie.
  3. Actions :

    • Une structure « choose » est utilisée pour définir plusieurs scénarios d’action basés sur les conditions.

    Scénario 1 :

    • Si le déclencheur est le changement d’état de « input_select.mode_volet ».
    • La valeur sélectionnée dans « input_select.mode_volet » est appliquée aux options « input_select.modevoletsud » et « input_select.modevoletouest ».

    Scénario 2 :

    • Si le déclencheur est le coucher du soleil après un délai de 50 minutes.
    • Si l’un des groupes de volets (« group.all_covers_ouest » ou « group.all_covers_sud ») est ouvert.
    • Si « input_select.mode_volet » n’est pas réglé sur « Manuel ».
    • Les volets orientés vers l’ouest et le sud sont fermés.

    Scénario 3 :

    • Si le déclencheur est le lever du soleil avant le coucher du soleil.
    • Si le capteur « binary_sensor.soleil_volets_ouest » est éteint.
    • Si « input_select.modevoletouest » est réglé sur « Auto froid ».
    • Si l’attribut « Canicule » du capteur « sensor.XX_weather_alert » est « Vert ».
    • Les volets orientés vers l’ouest sont ouverts à 100 %.

    Scénario 4 :

    • Si le déclencheur est le lever du soleil avant le coucher du soleil.
    • Si le capteur « binary_sensor.soleil_volets_sud » est éteint.
    • Si le groupe de volets « group.all_covers_sud » est ouvert.
    • Si « input_select.modevoletsud » est réglé sur « Auto froid ».
    • Si l’attribut « Canicule » du capteur « sensor.XX_weather_alert » est « Vert ».
    • Les volets orientés vers le sud sont ouverts à 100 %.

    Scénario 5 :

    • Si le capteur « binary_sensor.soleil_volets_sud » est allumé.
    • Si « input_select.modevoletsud » est réglé sur « Auto froid ».
    • Si le volet « cover.module_volet_salon » est au-dessus de 50 % d’ouverture.
    • Les volets orientés vers le sud sont fermés.

    Scénario 6 :

    • Si le capteur « binary_sensor.soleil_volets_ouest » est allumé.
    • Si « input_select.modevoletouest » est réglé sur « Auto froid ».
    • Si le groupe de volets « group.all_covers_ouest » est ouvert.
    • Les volets orientés vers l’ouest sont fermés.

    Scénario 7 :

    • Si « input_select.mode_volet » est réglé sur « Normal ».
    • Si le lever et le coucher du soleil sont dans la plage horaire.
    • Si les groupes de volets « group.all_covers_sud » et « group.all_covers_ouest » sont fermés.
    • Si le volet « cover.module_volet_salon » est fermé.
    • Si le volet « cover.module_volet_sejour » est fermé.
    • Les volets orientés vers l’ouest et le sud sont ouverts à 100 %.

    Scénario 8 :

    • Si le lever et le coucher du soleil sont dans la plage horaire.
    • Si « input_select.mode_volet » est réglé sur « Auto chauf ».
    • Si l’un des groupes de volets « group.all_covers_ouest » ou « group.all_covers_sud » est ouvert.
    • Les volets orientés vers l’ouest et le sud sont fermés.

Site a utiliser pour paramètre les capteur binary_sensor :

############################
###    BINARY_SENSOR     ###
############################

binary_sensor:
  - platform: threshold
    name: "soleil volets sud"
    upper: 250
    lower: 90
    entity_id: sensor.sunazimuth
  - platform: threshold
    name: "soleil volets ouest"
    upper: 270
    lower: 180
    entity_id: sensor.sunazimuth
    #on a donc créé une entité qui sera active si la valeur de sensor.sunazimuth est supérieure à 180 et inférieure à 270
############################
###     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
- id: 16risks956456360
  alias: Volet
  description: ''
  trigger:
  - platform: sun
    event: sunrise
  - platform: sun
    event: sunset
    offset: 00:50
  - platform: state
    entity_id:
    - sensor.XX_weather_alert
    attribute: Canicule
  - platform: state
    entity_id:
    - input_select.mode_volet
    id: Mode
    for:
      hours: 0
      minutes: 0
      seconds: 0
  - platform: state
    entity_id:
    - sensor.time_2
  condition: []
  action:
  - choose:
    - conditions:
      - condition: trigger
        id: Mode
      sequence:
      - service: input_select.select_option
        data_template:
          entity_id:
          - input_select.modevoletsud
          - input_select.modevoletouest
          option: '{{ states(''input_select.mode_volet'') }}'
    - conditions:
      - condition: sun
        after: sunset
        after_offset: 00:00:00
      - condition: or
        conditions:
        - condition: state
          entity_id: group.all_covers_ouest
          state: open
        - condition: state
          entity_id: group.all_covers_sud
          state: open
        enabled: false
      - condition: not
        conditions:
        - condition: state
          entity_id: input_select.mode_volet
          state: Manuel
      sequence:
      - service: cover.close_cover
        data: {}
        target:
          entity_id:
          - cover.volets_orientes_ouest
          - cover.volets_orientes_sud
    - conditions:
      - condition: sun
        after: sunrise
        after_offset: 00:00:00
        before: sunset
      - condition: not
        conditions:
        - condition: state
          state: 'on'
          entity_id: binary_sensor.soleil_volets_ouest
        - condition: state
          entity_id: cover.volets_orientes_ouest
          state: open
          enabled: false
      - 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
        after_offset: 00:00:00
      - condition: not
        conditions:
        - condition: state
          entity_id: binary_sensor.soleil_volets_sud
          state: 'on'
        - condition: state
          state: open
          entity_id: group.all_covers_sud
          enabled: false
      - 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
          enabled: false
      sequence:
      - service: cover.set_cover_position
        data:
          position: 0
        target:
          entity_id: cover.volets_orientes_ouest
    - conditions:
      - condition: state
        state: Normal
        entity_id: input_select.mode_volet
      - condition: sun
        before: sunset
        after: sunrise
      - condition: or
        conditions:
        - condition: state
          entity_id: group.all_covers_sud
          state: closed
        - condition: state
          entity_id: group.all_covers_ouest
          state: closed
        enabled: false
      - condition: device
        device_id: 012fbd33f6b7cc0f9b5237f2a376a5a8
        domain: cover
        entity_id: cover.module_volet_salon
        type: is_closed
      - condition: device
        device_id: be052f85354620b14a75e06914a6140d
        domain: cover
        entity_id: cover.module_volet_sejour
        type: is_closed
      sequence:
      - service: cover.set_cover_position
        data:
          position: 100
        target:
          entity_id:
          - cover.volets_orientes_ouest
          - cover.volets_orientes_sud
    - conditions:
      - condition: sun
        before: sunset
        after: sunrise
      - condition: state
        state: Auto chauf
        entity_id: input_select.mode_volet
      - condition: or
        conditions:
        - condition: state
          entity_id: group.all_covers_ouest
          state: open
        - condition: state
          entity_id: group.all_covers_sud
          state: open
        enabled: false
      sequence:
      - service: cover.close_cover
        data: {}
        target:
          entity_id:
          - cover.volets_orientes_sud
          - cover.volets_orientes_ouest
    default: []
  mode: restart
3 « J'aime »

J’avais aussi pensé à mettre des puce NFC a mettre dans la chambre pour basculer maison en mode nuit/jour, mais j’aurais aimé une solution où on a rien a faire.
Je vais essayer de creuser du côté des heures de réveil.
Merci.

Bonjour @Felix62 ,

Je debarque de Jeedom, j’utilisais le plugin sunshutter, j’ai donc déjà les données permettant de configurer les azimuths ect… Tu t’es inspiré de l’artcicle fournit plus haut ? j’avoue qu’a premiere vue ca semble assez compliqué a mettre en oeuvre comparé a ce que j’avais pu avoir sur Jeedom, mais je vais tenter de m’y mettre !

bonjour
j’ai mis en place ce moteur il y a 2 a 3 mois qui fonctionnait tres bien mais depuis la mise a jour 2023.8.4 ca ne fonctionne plus et je comprend pas le pourquoi.
avez vous le meme probleme ?

merci a vous

edit
j’ai trouvé le pb, un seul fonctionnait et j’ai vu une erreur de decalage dans les yaml timer.
tout refonctionne

1 « J'aime »

Bonjour,

J’ai mis en place ces automatisation sur certains de mes volets et ça marche très bien.
En revanche je voudrais aussi la mettre en place sans la partie timer. Quelqu’un a une astuce ? J’ai essayé de mettre le timer a 0 mais dès qu’il y a un déclanchement via la partie immédiate le volet se met en suspension.

Bonjour
je débute tous juste en venant justement aussi de jeedom
J’ai pas forcement compris l’utilité du blueprint immediate condition. Dans quelle cas l’utilise on? avec une telecommande par exemple?
Merci

Non c’est les éléments qui d’éclanche immédiatement le changement de position. Tu mets dedans les entités qui vont relancer immédiatement le scénario position de ton volet quand elles changent.

OK, Merci pour la réponse
C’est plus clair comme ça.
Nicolas

Hello,

Désolé du temps de réponse, j’ai du faire un break. Effectivement il n’est pas prévu pour le moment d’avoir la possibilité de désactiver le timer mais je me le note pour la future version !

1 « J'aime »

Bonjour à tous,
je debarque de Jeedom et j’utilisais donc sunshutter…
Je souhaite recuperer une gestion de mes volets integrant le positionnement du soleil afin de fermer les volets en conséquence. Je susi donc tombé sur les tutos de My cnaletto et de Fabien (OmiTech).
J’ai créé les éléments necessaires et je suis desormais arrivé à l’automation…

automation:
  - description: Volet_cuisine - Positionnement
    alias: volet_cuisine_positioning
    id: f8811757-05f7-420d-8c34-379788af5b24
    mode: restart
    trigger:
      - platform: time_pattern
        minutes: "/10" # ⚠️ à modifier : durée entre chaque calcul de positionnement
      - platform: event
        event_type:
          - timer.cancelled
          - timer.finished
        event_data:
          entity_id: timer.volet_cuisine
    condition:
      - condition: state # Le volet ne doit pas être déjà en cours de suspension
        entity_id: timer.volet_cuisine # ⚠️ à modifier avec le nom de votre timer
        state: "idle"
      - condition: template # La position réelle du volet doit avoir changé depuis plus de "nom_du_volet_roulant_duration_open_close" secondes
        value_template: "{{ (as_timestamp(now()) - as_timestamp(states.cover.volet_cuisine.last_changed) | int(0)) > (states('input_number.cover.volet_cuisine_detection') | int) }}" # ⚠️ à modifier avec le nom de vos entités
    action:
      - choose:
          - conditions: # 1. Si le soleil est sous l'horizon, je veux que le volet soit fermé (0%)
              - condition: numeric_state
                entity_id: sun.sun
                attribute: elevation
                below: 0
            sequence:
              - service: input_number.set_value
                target:
                  entity_id: input_number.volet_cuisine_planned_position
                data:
                  value: 0
          - conditions: # 2. Si je suis absent de la maison, je veux que le volet se positionne à 40%
              - condition: template
                value_template: "{{ is_state('input_boolean.presence_at_home_xxx', 'off') }}"
            sequence:
              - service: input_number.set_value
                target:
                  entity_id: input_number.volet_cuisine_planned_position
                data:
                  value: 40
        default: # 3. Dans tous les autres cas, mon volet doit être ouvert à 100%
          - service: input_number.set_value
            target:
              entity_id: input_number.volet_cuisine_planned_to_go
            data:
              value: 100

Lorsque je souhaite la sauvegarder, j’ai le message

Message malformed: extra keys not allowed @ data['automation']

Savez vous me dire pourquoi ?

Oui je dirais que c’est ta première ligne qui est a supprimer.

Salut …
C’est surtout que tu devrais déjà passer par L’UI

Résumé


Et créé une automation avec tes senseurs!
image