Relancer une vérif de capteur pour fermeture volet roulant

Bonjour à tous

Mon besoin était que mes volets des baies vitrées se ferment uniquement si mes capteurs d’ouverture (intégré aux baies) sont locked.

J’ai pour celà créer 2 scripts :

  • L’un pour vérifier si mes 2 capteurs sont bien locked afin de fermer ou non mon volet roulant
alias: "[Script Volet] Fermeture Volet Baie Cuisine"
sequence:
  - condition: state
    entity_id: sensor.openstate_tydom_dvi_cuisine_droit
    state: LOCKED
  - condition: state
    entity_id: sensor.openstate_tydom_dvi_cuisine_gauche
    state: LOCKED
  - device_id: 39db2e02f978fb754788945d987f87a8
    domain: cover
    entity_id: cover.baie_cuisine
    type: set_position
    position: 0
mode: single
  • L’autre pour lancer la fermeture de tous les volets et j’ai intégrer dedans le script pour vérifier que les capteurs sont bien LOCKED sur les baies
alias: "[Script] Vérif Fermeture Volets"
sequence:
  - service: script.turn_on
    data: {}
    target:
      entity_id: script.fermeture_volet_baie_salon
  - service: script.turn_on
    data: {}
    target:
      entity_id: script.fermeture_volet_baie_sejour
  - service: script.turn_on
    data: {}
    target:
      entity_id: script.fermeture_volet_baie_cuisine
  - device_id: 119e95a08043cd09edb9656374c51a56
    domain: cover
    entity_id: cover.buanderie
    type: set_position
    position: 0

J’ai ensuite créer l’automatisation pour lancer la fermeture des volets au coucher du soleil :

alias: "[Volet] Fermeture volet couché du soleil"
description: ""
trigger:
  - platform: sun
    event: sunset
    offset: "00:20:00"
condition: []
action:
  - service: script.turn_on
    data: {}
    target:
      entity_id: script.verif_fermeture_volets

Cependant si l’un des capteurs des baies n’est pas LOCKED, le volet ne se ferme pas (et c’est bien la demande) mais je souhaiterai que l’automatisation se relance X min après pour re tester si l’un des capteurs est repassé à l’état LOCKED au quel cas il faut fermer le volet en question.

Comment faire pour relancer la demande de check 10 min après par exemple et si le capteur en question est bien passé à locked alors fermer le volet en question?
Mais je ne voudrai pas que l’automatisation boucle sans cesse. Je voudrai qu’elle s’arrête une fois tous les capteurs LOCKED.

Merci par avance pour vos retours, et ne pas hésiter si vous souhaitez avoir plus d’information sur ma demande si elle n’est pas assez précise.

Bonsoir, je pense que tu t’embêtes pour rien.
Pourquoi ne pas faire seulement avec une automatisation?
Tu peux passer par un groupe pour savoir si tes 2 baies sont fermées.
En déclencheur, tu prends le coucher du soleil
En condition tu contrôles l’état du groupe de baies
en action, tu fermes tes volets.

Pas besoin de script pour faire ca.

1 « J'aime »

Merci pour ta réponse,

Mais comment faire dans le cas où l’automatisation s’enclenche et qu’il y a un capteur qui n’est pas locked, du coup le volet de la baie ne descend pas mais les autres oui.

Comment relancer l’automatisation pour que ça ré interroge les capteurs afin de refermer le volet rester ouvert?

c’est exactement ca.
Voici comment tu peux organiser ton automatisation. Ce n’est qu’un exemple et pas forcément ta solution. Le but est que tu comprennes comment tu pourrais faire

description: "fermeture volets"
mode: single
trigger:
  - platform: sun  
    event: sunset  # Coucher du soleil
    offset: 0
condition: []
action:
  - if:  # Si groupe sensor baie cuisine fermé
      - condition: state
        entity_id: binary_sensor.baie_cuisine
        state: "on"
    then:  # Alors fermeture volets cuisine
      - service: cover.close_cover
        data: {}
        target:
          entity_id: cover.cuisine
  - if:  # Si groupe sensor baie salon fermé
      - condition: state
        entity_id: binary_sensor.baies_salon
        state: "on"
    then: # Alors fermeture volets salon
      - service: cover.close_cover
        data: {}
        target:
          entity_id: cover.salon
  - service: cover.close_cover # fermeture buanderis sans condition
    data: {}
    target:
      entity_id: cover.buanderie

en rajoutant une condition d’attente d’état de capteur actif sur le sinon de la condtion si.

  - if:
      - condition: state
        entity_id: binary_sensor.baies_salon
        state: "on"
    then:
      - service: cover.close_cover
        data: {}
        target:
          entity_id: cover.salon
    else:  # sinon 
      - wait_for_trigger:  # attendre pendant 20 minutes que les baies salon soient fermées
          - platform: state
            entity_id:
              - binary_sensor.baies_salon
        timeout:
          hours: 0
          minutes: 20
          seconds: 0
          milliseconds: 0        
        continue_on_timeout: false
      - service: cover.close_cover  #pour fermer le volet salon
        data: {}
        target:
          entity_id: cover.salon
1 « J'aime »

Ok j’ai compris l’idée, merci pour ton temps et de ton aide :+1:

J’ai créer des groupes de capteurs par baies et suivit ton résonnement pour l’automatisation, malheureusement mes capteurs ne remontent que l’état LOCKED ou UNLOCKED et quand je créer un group, il m’affiche inconnu.
image

Voici l’entité que j’ai pour mes capteurs : - sensor.openstate_tydom_dvi_cuisine_droit

J’ai lu que dans les groupes « Seul les entités ETAT (On/Off, Ouvert/Ferme, Présent/Absent, etc) peuvent être dans des groupes. »

Comment faire?

Je ne sais pas où tu as lu ca ?
Voici une capture de la doc officielle des group sur HA

J’ai lu ça ici : Les groupes dans Home Assistant (1er post) mais c’est un message de 2020 les différentes MAJ de HA ont surement fait évolué ce point.

Comment se fait-il alors que mon groupe remonte l’état inconnu alors que les entités du group sont bien LOCKED?

J’ai peut-être des erreurs dans ce que j’ai fait (créer dans le fichier groups.yaml) :

  DVI Salon:
    name: dvi_baie_salon
    entities:
      - sensor.openstate_tydom_dvi_salon_droit
      - sensor.openstate_tydom_dvi_salon_gauche

  DVI Séjour:
    name: dvi_baie_séjour
    entities:
      - sensor.openstate_tydom_dvi_sejour_droit
      - sensor.openstate_tydom_dvi_sejour_gauche

  DVI Cuisine:
    name: dvi_baie_cuisine
    entities:
      - sensor.openstate_tydom_dvi_cuisine_droit
      - sensor.openstate_tydom_dvi_cuisine_gauche
     

Si tu peux m’éclairer sur ce point?

Je viens de voir que tes entités sont des sensor au lieu des lock.
Comment as-tu intégré tes entités type « sensor.openstate_tydom » ?
Il faut les changer en lock (locked ou unlocked) ou en binary_sensor (true ou false)

Ils remontent comme ça via MQTT, je n’ai rien changé.

Comment puis-je faire pour les changer stp? Via des templates ?

Tu peux créer des entités lock directement en utilisant les données mqtt
Voici la doc

Je n’arrive pas à comprendre comment changer la valeur avec mqtt lock, j’ai essayer avec binary_sensor mais j’ai une erreur, serai tu d’où elle provient? (C’est Ok dans le fichier configuration.yaml mais pas quand je recharge la configuration)

Invalid config for [binary_sensor.template]: invalid slug sensor.openstate_tydom_dvi_sejour_droit (try sensor_openstate_tydom_dvi_sejour_droit) for dictionary value @ data['sensors']. Got OrderedDict([('sensor.openstate_tydom_dvi_sejour_droit', OrderedDict([('friendly_name', 'DVI droit séjour'), ('value_template', '{% if is_state("sensor.openstate_tydom_dvi_sejour_droit", "LOCKED") %}\n off\n{% elif is_state("sensor.openstate_tydom_dvi_sejour_droit", "UNLOCKED") %}\n on\n{% endif %}')]))]). (See ?, line ?).

Voici mon code dans configuration.yaml

binary_sensor:
  - platform: template
    sensors:
      sensor.openstate_tydom_dvi_sejour_droit:
        friendly_name: DVI droit séjour
        value_template: >-
            {% if is_state("sensor.openstate_tydom_dvi_sejour_droit", "LOCKED") %}
              on
            {% elif is_state("sensor.openstate_tydom_dvi_sejour_droit", "UNLOCKED") %}
              off
            {% endif %}

Peux tu essayer avec ca:

mqtt:
  binary_sensor:
    - name: DVI droit séjour
      state_topic: "Ton_Topic_MQTT_du_sensor"
      payload_on: "LOCKED"
      payload_off: "UNLOCKED"
1 « J'aime »

Testé mais ne remonte pas l’info on ou off

mqtt:
  binary_sensor:
    - name: DVI droit séjour
      state_topic: "sensor/tydom/openState_tydom_1640515342_1640515342/state"
      payload_on: "LOCKED"
      payload_off: "UNLOCKED"

il remonte quoi ?

Quelle est la valeur reçue de ton topic « sensor/tydom/openState_tydom_1640515342_1640515342/state » ?

Autant pour moi, il fallait que je change dans mon fichier group.yaml et que je mettes les binary.sensor a la place des open state :slight_smile:

J’ai tester en direct et cela fonctionne impek, merci bcp @fredarro pour ton aide précieuse.

Je réouvre le sujet car suite à plusieurs essais, il s’avère que si un group de capteurs de baie n’est pas ON aucun volet des baies (équipé aussi de capteur) ne se ferment. Il faut que les 3 groupes soient On pour que les volets des 3 baies se ferment.

Mon souhait était que seul sur la baie en question ou le groupe n’est pas ON le volet ne se ferme pas, mais que si sur les autres baies les groupes sont ON ils se ferment.

Comment faire pour améliorer mon automatisation?

Par simplicité, je ferai une automatisation pour chacun de tes groupes de volets.
Ainsi, le blocage d’exécution de l’une de tes automatisations n’empêchera pas les autres de se réaliser.

Il y a peut-être un moyen plus « efficace » de réaliser cela en une seule automatisation, mais je ne saurai t’aider.

Hello,

Comment se fait il que mon automatisation ne continu pas si la première condition n’est pas OK?

Comment faire pour que l’automatisation « continu son chemin » et aille checker que les autres groupes de volets sont bien fermés par exemple?