Marquisette, Plissé, Température et Luminosité

Automatisation complexe…Marquisette-Plissé-temperature-lumière

Avant de décrire mon problème, UN GRAND MERCI a toute les infos que j’ai déjà trouver, toutes le choses que j’ai déjà appris dans cette communauté. Tout les jours je réussi des truc ou pas, mais le lendemain je trouve une solutions…

Voila ce que je veut faire - ce que je fais avec Homey. Malheureusement je n’arrive pas a transférer ce que je fais sur Homey sur HA. Désolé mais je ne me retrouve pas!

Donc dans ma véranda, le toit est fait de 8 énorme Velux. Sur ces velux j’ai 8x marquisette (stores toile a l’extérieur) et 8x plissé (stores a l’intérieur).
Avec un capteur de lumière (Aeotec en Z-wave) je mesure la lumière et au moment qu’il depasse un seuil - je fais descendre les marquisette (extérieur). Et si lumières en dessous du seuil - les marquisette remonte.
Rien de plus simple…
Par contre si a l’extérieur il fait en dessous de 10degres, je veut que les plissé (intérieur) se ferme, je ne veut pas les marquisette dans la neige sur le toit et je veut chauffer la véranda! En même temps si la température change, alors change les store.
De plus l’ors d’un passage de nuage je ne veut pas que les stores monte et descende x fois au long de la journée! Pour cela sur Homey j’ai mis un compteur, ou je règle combien de fois en combien te temps il re prend la mesure de la lumière pour voir le chamgement et seulement la il fait fermé les stores. Pour le moment il va tout les 90s voir les lux et si le compteur arrive a trois il ferme, si non il mets le compteur a 0 pour la prochaine fois…

Un peu compliquer peut etre mais sa fonctionne bien…

Bon, puisque je connait pas non plus toute les fonctions de HA, si vous avez des idées avec quoi comment je pourrais mettre sa en oeuvres.

Un grand merci d’avance

Salut!
Pour avoir le délai, plutôt que de mettre un timer tu peux utiliser la propriété last_updated (dernier changement d’état) de tes stores et lors du déclenchement de l’automation faire une condition via le delta avec l’heure actuelle. C’est une piste :slight_smile:

c’est là où node red aurait drôlement simplifié les choses (pour moi en tout cas…node red, c’est la vie… lol ) courage !

1 « J'aime »

Une autre piste, utiliser la clé for qui déclenche lorsque l’etat du déclencheur est acquis pendant x secondes, minutes, etc.

Rien ne t’empêche (au contraire, sur un autre sujet je disais que ce serais super) de fournir ta solution en Node-RED :+1:

me tente pas mon loulou lol, je vais peut etre le faire, le cahier des charges de @Shadow est super limpide ^^

@Shadow , tu as donc 8 entités par marquisettes et 8 entités par plissé? tu as fait des groupes pour tes entités peut etre (style grp.marquisette_ext et grp.marquisette_plissees ) ?

en Node red ça donnerai un truc comme cela :

[{"id":"4185f335.4f68cc","type":"tab","label":"shadow","disabled":false,"info":""},{"id":"549948ee.639f08","type":"server-state-changed","z":"4185f335.4f68cc","name":"capt luminosite >50 lumens","server":"a537137.2d98df","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"capt luminosite","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"50","halt_if_type":"num","halt_if_compare":"gt","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":140,"y":209,"wires":[["c97d12c.a79fcf"],["c3672542.1af828"]]},{"id":"7455f892.32eeb8","type":"api-call-service","z":"4185f335.4f68cc","name":"group.marquisette_ext fermeture","server":"a537137.2d98df","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"group.marquisette_ext","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":870,"y":169,"wires":[[]]},{"id":"a2b5cb2c.5f4ca8","type":"api-call-service","z":"4185f335.4f68cc","name":"group.marquisettes_ext Ouverture","server":"a537137.2d98df","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"group.marquisettes_ext","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":880,"y":269,"wires":[[]]},{"id":"84acaf17.15d69","type":"server-state-changed","z":"4185f335.4f68cc","name":"capt temperature ext  <10°","server":"a537137.2d98df","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"capt temperature ext","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"10","halt_if_type":"num","halt_if_compare":"lt","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":150,"y":440,"wires":[["e64b802.7aac18"],[]]},{"id":"853a7e5b.97658","type":"api-call-service","z":"4185f335.4f68cc","name":"group.marquisettes_plissees Fermetture","server":"a537137.2d98df","version":1,"debugenabled":false,"service_domain":"switch","service":"turn_off","entityId":"group.marquisettes_plissees","data":"","dataType":"jsonata","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":680,"y":440,"wires":[[]]},{"id":"c7b512d7.91a5a","type":"comment","z":"4185f335.4f68cc","name":"Avec un capteur de lumière (Aeotec en Z-wave) je mesure la lumière et au moment qu’il depasse un seuil - je fais descendre les marquisette (extérieur). ","info":"","x":570,"y":40,"wires":[]},{"id":"6267a3f6.25e3ac","type":"comment","z":"4185f335.4f68cc","name":"Par contre si a l’extérieur il fait en dessous de 10degres, je veut que les plissé (intérieur) se ferme","info":"","x":410,"y":380,"wires":[]},{"id":"e64b802.7aac18","type":"looptimer","z":"4185f335.4f68cc","duration":"90","units":"Second","maxloops":"10","maxtimeout":"1","maxtimeoutunits":"Hour","name":"","x":400,"y":440,"wires":[["853a7e5b.97658"],[]]},{"id":"c97d12c.a79fcf","type":"looptimer","z":"4185f335.4f68cc","duration":"90","units":"Second","maxloops":"10","maxtimeout":"1","maxtimeoutunits":"Hour","name":"","x":360,"y":169,"wires":[["7455f892.32eeb8"],[]]},{"id":"c3672542.1af828","type":"looptimer","z":"4185f335.4f68cc","duration":"90","units":"Second","maxloops":"10","maxtimeout":"1","maxtimeoutunits":"Hour","name":"","x":360,"y":269,"wires":[["a2b5cb2c.5f4ca8"],[]]},{"id":"2b046bca.beec64","type":"comment","z":"4185f335.4f68cc","name":"verification ttes les 90sec, 10 changements de statut / heure","info":"","x":500,"y":229,"wires":[]},{"id":"bdf828c3.e2a728","type":"comment","z":"4185f335.4f68cc","name":"verification ttes les 90sec, 10 changements de statut / heure","info":"","x":500,"y":129,"wires":[]},{"id":"90bd9701.0288a8","type":"comment","z":"4185f335.4f68cc","name":"Et si lumières en dessous du seuil - les marquisette remonte.","info":"","x":291,"y":80,"wires":[]},{"id":"a537137.2d98df","type":"server","name":"Home Assistant","legacy":false,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

mais @Shadow , utilises tu Node red?

Oui 8x de chaque et j’ai créer le groupe :

#covers.yaml
- platform: group
  name: Marquisette
  entities:
    - cover.marquisette_dd_5
    - cover.marquisette_dg_5
    - cover.marquisette_dmd_5
    - cover.marquisette_dmg_5
    - cover.marquisette_hd_5
    - cover.marquisette_hg_5
    - cover.marquisette_hmd_5
    - cover.marquisette_hmg_5
- platform: group
  name: Plissé
  entities:
    - cover.plisse_devant_droite_5
    - cover.plisse_devant_gauche_5
    - cover.plisse_devant_md_5
    - cover.plisse_devant_mg_5
    - cover.plisse_haut_droite_5
    - cover.plisse_haut_gauche_5
    - cover.plisse_haut_md_5
    - cover.plisse_haut_mg_5

Non je ne voulais pas encore un truc de plus… je commence a comprendre le reste

Je te réponds en YAML ce soir :+1:

1 « J'aime »

En lisant ton explication j’en déduis le principe suivante :

SI sensor.luminosite_exterieur >= seuil_luminosite ALORS
    -> marquisettes CLOSE (DESCENTE)
SI sensor.luminosite_exterieur < seuil_luminosite (pendant 5min) ALORS
    -> marquisettes OPEN (MONTEE)
SI sensor.temperature_exterieure <= seuil_température ALORS
    -> plisse CLOSE (FERMETURE)
    -> marquisettes OPEN (OUVERTURE)
    -> chauffage ON (ACTIVATION) 
SI sensor.temperature_exterieure > seuil_température ALORS
    -> plisse OPEN (OUVERTURE)
    -> chauffage OFF (ACTIVATION)
    SI sensor.luminosite_exterieur >= seuil_luminosite ALORS
       -> marquisettes CLOSE (DESCENTE)

Je ne suis pas sûr de l’interprétation de ta phrase :

Je n’ai pas saisi si tu parlais de l’effet de serre de la véranda ou d’un chauffage dans la vérande, donc dans le doute, je suis partis sur un chauffage dans la véranda.
Si tu n’en as pas, il suffit de supprimer les lignes d’action lié au chauffage (switch.chauffage)

J’ai essayé de commenter au maximum le code.

La seule notion nouvelle que je n’ai jamais rencontré sur le forum est la notion d’id du déclencheur.

Donc…

Explications :

Lorsque qu’une automatisation comporte plusieurs déclencheurs, Home Assistant leur attribut à chacun un identifiant unique nommé id.

Il est présent dans la variable trigger qui est créée au déclenchement de l’automatisation.
Pour pouvoir y accéder dans les modèles(templates) de condition, action de l’automatisation déclenchée il suffit d’écrire {{trigger.id}}.

Prenons l’exemple d’une automatisation avec 3 déclencheurs, Home Assistant attribuera à chacun de ces déclencheur un identifiant à partir de 0 et suivant l’ordre de déclaration de ces déclencheurs.

alias: Identifiant des déclencheurs
description: 'Gestion des identifiants des déclencheurs'
trigger:
# Déclencheur = 0 (trigger.id = 0)
  - platform: numeric_state
    entity_id: sensor.luminosite_exterieure
# Déclencheur = 1 (trigger.id = 1)
  - platform: state
    entity_id: sensor.luminosite_exterieure
# Déclencheur = 2 (trigger.id = 2)
  - platform: numeric_state
    entity_id: sensor.temperature_exterieure
condition: []
action: []

On revient donc à ta demande qui contient pour moi 4 déclencheurs :

Déclencheur = 0 (trigger.id = 0) :
    SI sensor.luminosite_exterieur >= seuil_luminosite ALORS
        -> marquisettes CLOSE (DESCENTE)
Déclencheur = 1 (trigger.id = 1) :
    SI sensor.luminosite_exterieur < seuil_luminosite (pendant 5min) ALORS
        -> marquisettes OPEN (MONTEE)
Déclencheur = 2 (trigger.id = 2) :
    SI sensor.temperature_exterieure <= seuil_température ALORS
        -> plisse CLOSE (FERMETURE)
        -> marquisettes OPEN (OUVERTURE)
        -> chauffage ON (ACTIVATION) 
Déclencheur = 3 (trigger.id = 3) :
    SI sensor.temperature_exterieure > seuil_température ALORS
        -> plisse OPEN (OUVERTURE)
        -> chauffage OFF (ACTIVATION)
        SI sensor.luminosite_exterieur >= seuil_luminosite ALORS
        -> marquisettes CLOSE (DESCENTE)

Ce qui donne en automatisation YAML :

alias: Véranda
description: 'Gestion des marquisettes et plissés en fonction de la luminosité et de la température'
trigger:
# Déclencheur 0 : Luminosité > Seuil de luminosite 
  - platform: numeric_state
    entity_id: sensor.luminosite_exterieure
    above: input_number.luminosite_exterieure
# Déclencheur 1 : Luminosité < Seuil de luminosite depuis 5 minutes
  - platform: numeric_state
    entity_id: sensor.luminosite_exterieure
    below: input_number.luminosite_exterieure
    for: '00:05:00'
# Déclencheur 2 : Température < Seuil de température 
  - platform: numeric_state
    entity_id: sensor.temperature_exterieure
    below: input_number.temperature_exterieure
# Déclencheur 3 : Température > Seuil de température 
  - platform: numeric_state
    entity_id: sensor.temperature_exterieure
    above: input_number.temperature_exterieure
condition: []
action:
  - choose:
      - conditions:
      # Déclencheur 0 : Luminosité > Seuil de luminosite 
          - condition: template
            alias: "Luminosité > Seuil"
            value_template: '{{trigger.id == ''0''}}'
        sequence:
          # Notification dans la barre latérale
          - service: persistent_notification.create
            data:
              title: "[Veranda] - Luminosité > Seuil"
              message: "Descente des marquisettes"
          # Descente des marquisettes
          - service: cover.close_cover
            target:
              entity_id: cover.marquisette
      - conditions:
      # Déclencheur 1 : Luminosité < Seuil de luminosite depuis 5 minutes
          - condition: template
            alias: "Luminosité < Seuil depuis 5 min"
            value_template: '{{trigger.id == ''1''}}'
        sequence:
          # Notification dans la barre latérale
          - service: persistent_notification.create
            data:
              message: "[Veranda] - Luminosité < Seuil depuis 5 min"
          # Montée des marquisettes
          - service: cover.open_cover
            target:
              entity_id: cover.marquisette
      - conditions:
      # Déclencheur 2 : Température < Seuil de température 
          - condition: template
            alias: "Température < Seuil"
            value_template: '{{trigger.id == ''2''}}'
        sequence:
          # Notification dans la barre latérale
          - service: persistent_notification.create
            data:
              message: "[Veranda] - Température < Seuil"
          # Montée des marquisettes
          - service: cover.open_cover
            target:
              entity_id: cover.marquisette
          # Fermeture des plissés
          - service: cover.close_cover
            target:
              entity_id: cover.plisse
          # Activation du chauffage
          - service: switch.turn_on
            target:
              entity_id: switch.chauffage
      - conditions:
      # Déclencheur 3 : Température > Seuil de température 
          - condition: template
            alias: "Température > Seuil"
            value_template: '{{trigger.id == ''3''}}'
        sequence:
          # Notification dans la barre latérale
          - service: persistent_notification.create
            data:
              message: "[Veranda] - Température > Seuil"
          # Extinction du chauffage
          - service: switch.turn_off
            target:
              entity_id: switch.chauffage
          # Vérification que Luminosité > Seuil
          - condition: numeric_state
            above: input_number.luminosite_exterieure
            entity_id: sensor.luminosite_exterieure
          # Vérification que Marquisettes != closed (donc open)
          - condition: state
            entity_id: cover.marquisette
            state: open
          # Notification dans la barre latérale
          - service: persistent_notification.create
            data:
              message: "[Veranda] - Descente Marquisettes"
          # Descente des marquisettes
          - service: cover.close_cover
            target:
              entity_id: cover.marquisette
    default: []
mode: single
1 « J'aime »

Je n’ai pas trouvé l’écriture compliqué… :wink:

Le plus dur a été de construire le squelette, la logique et ensuite via l’interface de HA, le faire en prenant son temps …

Le YAML c’est la vie !

image

Mdr :kissing_heart: HA c est la vie :slight_smile:

1 « J'aime »

Eh SUPER Merci… je sais pas quoi dire

Je vais tester tout sa, en attendant que le beau temps reviens un peu pour tester les nuage…
A priori c’est plus facile que les flows que j’ai sur Homey. Mais j’aurais certainement encore des questions.

Avec je veut chauffer je pensais tout simplement au plissé qui sont a l’intérieur et réchauffe la véranda.

Mets simplement un :heart:

:+1:

Alors pour donner un retour sur la cinfig que tu ma envoyer…

Sa fonctionne a merveille, UN GRAND MERCI encore une fois.

Ce que j’ai adapter:
j’ai créer un input_number_lumonisite low et high, je n’arrivait pas a mettre le capteur a une place ou il ne passe pas le seuil de 1500 par exemple au moment que les marquisette descende et remonte. Les marquisette n’arrêtais pas de descendre et monter. Avec les deux input je peut me créer un zone tampon pour éviter cela.

Et je corrige: c’est plus facile sur HA que sur Homey. Ma Homey est éteinte et prête a être vendu

2 « J'aime »

Merci pour le retour :+1: :heart:

Salut,

je reviens pour mon Automatisation des marquette et plissé.

Maintenant que les température sont descendu, sa ne fonctionne plus! Et j e ne trouve pas pourquoi…

Donc pour revenir a mon envie, trop de lumiere les marquisette (store exterieur) descende, mais si il fait moins de 10 degres a l’exterieur les plissé (store interieur) descende.
Mais la les plissé ne descende pas et les marquisette non plus!

J’ai certainement fait une erreur , mais ou?
Je mets le YAML et les input_number

alias: Véranda
description: >-
  Gestion des marquisettes et plissés en fonction de la luminosité et de la
  température
trigger:
  - platform: numeric_state
    entity_id: sensor.hue_outdoor_motion_sensor_1_light_level
    above: input_number.luminosite_veranda_high
  - platform: numeric_state
    entity_id: sensor.hue_outdoor_motion_sensor_1_light_level
    below: input_number.luminosite_veranda_low
    for: '00:05:00'
  - platform: numeric_state
    entity_id: sensor.netatmo_shadowshome_indoor_namodule1_temperature
    below: input_number.temperature_exterieur_low
  - platform: numeric_state
    entity_id: sensor.netatmo_shadowshome_indoor_namodule1_temperature
    above: input_number.temperature_exterieure_high
condition: []
action:
  - choose:
      - conditions:
          - condition: template
            alias: Luminosité > Seuil
            value_template: '{{trigger.id == ''0''}}'
        sequence:
          - service: persistent_notification.create
            data:
              title: '[Veranda] - Luminosité > Seuil'
              message: Descente des marquisettes
          - service: cover.close_cover
            target:
              entity_id: cover.marquisette
      - conditions:
          - condition: template
            alias: Luminosité < Seuil depuis 5 min
            value_template: '{{trigger.id == ''1''}}'
        sequence:
          - service: persistent_notification.create
            data:
              message: '[Veranda] - Luminosité < Seuil depuis 5 min'
          - service: cover.open_cover
            target:
              entity_id: cover.marquisette
      - conditions:
          - condition: template
            alias: Température < Seuil
            value_template: '{{trigger.id == ''2''}}'
        sequence:
          - service: persistent_notification.create
            data:
              message: '[Veranda] - Température < Seuil'
          - service: cover.open_cover
            target:
              entity_id:
                - cover.marquisette
          - service: cover.close_cover
            target:
              entity_id: cover.plisse
      - conditions:
          - condition: template
            alias: Température > Seuil
            value_template: '{{trigger.id == ''3''}}'
        sequence:
          - service: persistent_notification.create
            data:
              message: '[Veranda] - Température > Seuil'
          - condition: numeric_state
            above: input_number.luminosite_veranda_high
            entity_id: sensor.hue_outdoor_motion_sensor_1_light_level
          - condition: state
            entity_id: cover.marquisette
            state: open
          - service: persistent_notification.create
            data:
              message: '[Veranda] - Descente Marquisettes'
          - service: cover.close_cover
            target:
              entity_id:
                - cover.plisse
    default: []
mode: single

image

J’ai fait des test avec d’autre automatisations, plus simple. Je pense que ce sont les input_number qui ne fonctionne pas.

Mais je ne trouve pas de solutions quand meme…