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.
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…
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.
Super, cela va m’éviter de recommencer le codage que j’avais également fait sur Jeedom (et oui, récemment passé sur HA ).
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
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.
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ù !
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 :
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 ».
Conditions :
Aucune condition spécifique définie.
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
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.
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
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.
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 !
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']