Ouverture automatique des volets

Mon problème

Bonjour à tous.

J’ai créé un script pour gérer automatiquement l’ouverture et la fermeture des volets selon la luminosité et l’heure.
Or, j’ai l’impression que mes volets n’en font qu’à leur tête. Un matin les volets seront ouverts à mon réveil, et le lendemain alors que je n’ai pas touché au script et que les conditions sont remplies, ils seront fermés.

Pareil pour la fermeture le soir, c’est aléatoire.

Voilà le script que j’ai fait. De base je l’ai fait via l’éditeur visuel. Pour le forum je l’ai affiché en YAML.

alias: Gestion volets
description: ""
trigger:
  - platform: time
    at: "08:00:00"
    id: 8h
  - platform: time
    at: "19:00:00"
    id: 19h
  - type: temperature
    platform: device
    device_id: c0187265647d82122e1de1e7652c5440
    entity_id: c69d1f5fb99b6943e948482c480d0c56
    domain: sensor
    above: 26
    id: TempExt
  - type: illuminance
    platform: device
    device_id: a57583139cb71946cadc6457094ec312
    entity_id: 53319f3d21cb849f77a4662de25caef5
    domain: sensor
    above: 10
    below: 80
    id: LumiereFaible
  - type: illuminance
    platform: device
    device_id: a57583139cb71946cadc6457094ec312
    entity_id: 53319f3d21cb849f77a4662de25caef5
    domain: sensor
    above: 5000
    below: 200000
    id: LumiereJournée
  - type: illuminance
    platform: device
    device_id: a57583139cb71946cadc6457094ec312
    entity_id: 53319f3d21cb849f77a4662de25caef5
    domain: sensor
    above: 100
    below: 150
    id: LumiereSoir
  - type: illuminance
    platform: device
    device_id: a57583139cb71946cadc6457094ec312
    entity_id: 53319f3d21cb849f77a4662de25caef5
    domain: sensor
    above: 0
    below: 40
    id: LumiereNuit
condition: []
action:
  - if:
      - condition: trigger
        id:
          - LumiereFaible
      - condition: and
        conditions:
          - condition: time
            after: "05:00:00"
            before: "08:30:00"
        enabled: true
    then:
      - device_id: 99f0a479ea8d8cba6407aea59fb1bc96
        domain: cover
        entity_id: 409871ec0b5e1429746b7d7e6bfc234f
        type: open
      - device_id: 91a3bcaacb190e568ac3f8274890817e
        domain: cover
        entity_id: 5ee4647227ae808214ae0aa7d8dbb477
        type: open
      - device_id: 7d580f0322d72f89c5873da339d4b53d
        domain: cover
        entity_id: 22fb66c8094b5e7aac0112c9329d83af
        type: set_position
        position: 50
      - service: notify.mobile_app_pixel_6_pro
        metadata: {}
        data:
          message: Ouverture volet cuisine
          title: 🏠 Volet 🏠
        enabled: false
  - if:
      - condition: trigger
        id:
          - LumiereJournée
    then:
      - if:
          - condition: state
            entity_id: input_boolean.vacances_exterieures
            state: "on"
          - condition: or
            conditions:
              - condition: state
                entity_id: binary_sensor.jourtravail
                state: "on"
        then:
          - if:
              - condition: time
                after: "07:15:00"
                before: "08:30:00"
            then:
              - device_id: 7d1f9294f4fc12fc0ce43177a6876e16
                domain: cover
                entity_id: 9b8db3dff82ddcd7218c48b962a50db0
                type: open
              - device_id: 27af172fa4328d5412f662a2a4b5e59b
                domain: cover
                entity_id: 75d3a5a8fb790759f4af4e7586202f1f
                type: open
              - device_id: 99f0a479ea8d8cba6407aea59fb1bc96
                domain: cover
                entity_id: 409871ec0b5e1429746b7d7e6bfc234f
                type: open
              - device_id: 6a495d0f802ab2ff7882810e0c876e1c
                domain: cover
                entity_id: 06fbc3d6c565f2b9acafeb3aee7351a9
                type: open
              - device_id: 7d580f0322d72f89c5873da339d4b53d
                domain: cover
                entity_id: 22fb66c8094b5e7aac0112c9329d83af
                type: open
              - device_id: 91a3bcaacb190e568ac3f8274890817e
                domain: cover
                entity_id: 5ee4647227ae808214ae0aa7d8dbb477
                type: open
      - if:
          - condition: trigger
            id:
              - 8h
        then:
          - device_id: 7d1f9294f4fc12fc0ce43177a6876e16
            domain: cover
            entity_id: 9b8db3dff82ddcd7218c48b962a50db0
            type: open
          - device_id: 27af172fa4328d5412f662a2a4b5e59b
            domain: cover
            entity_id: 75d3a5a8fb790759f4af4e7586202f1f
            type: open
          - device_id: 99f0a479ea8d8cba6407aea59fb1bc96
            domain: cover
            entity_id: 409871ec0b5e1429746b7d7e6bfc234f
            type: open
          - device_id: 6a495d0f802ab2ff7882810e0c876e1c
            domain: cover
            entity_id: 06fbc3d6c565f2b9acafeb3aee7351a9
            type: open
          - device_id: 7d580f0322d72f89c5873da339d4b53d
            domain: cover
            entity_id: 22fb66c8094b5e7aac0112c9329d83af
            type: open
          - device_id: 91a3bcaacb190e568ac3f8274890817e
            domain: cover
            entity_id: 5ee4647227ae808214ae0aa7d8dbb477
            type: open
  - if:
      - condition: trigger
        id:
          - TempExt
      - condition: and
        conditions:
          - condition: trigger
            id:
              - LumiereJournée
    then:
      - device_id: 7d1f9294f4fc12fc0ce43177a6876e16
        domain: cover
        entity_id: 9b8db3dff82ddcd7218c48b962a50db0
        type: set_position
        position: 20
      - device_id: 27af172fa4328d5412f662a2a4b5e59b
        domain: cover
        entity_id: 75d3a5a8fb790759f4af4e7586202f1f
        type: set_position
        position: 20
      - device_id: 91a3bcaacb190e568ac3f8274890817e
        domain: cover
        entity_id: 5ee4647227ae808214ae0aa7d8dbb477
        type: set_position
        position: 20
  - if:
      - condition: trigger
        id:
          - LumiereSoir
    then:
      - if:
          - condition: time
            before: "23:00:00"
            after: "16:00:00"
        then:
          - device_id: 7d1f9294f4fc12fc0ce43177a6876e16
            domain: cover
            entity_id: 9b8db3dff82ddcd7218c48b962a50db0
            type: close
          - device_id: 27af172fa4328d5412f662a2a4b5e59b
            domain: cover
            entity_id: 75d3a5a8fb790759f4af4e7586202f1f
            type: close
          - device_id: 6a495d0f802ab2ff7882810e0c876e1c
            domain: cover
            entity_id: 06fbc3d6c565f2b9acafeb3aee7351a9
            type: close
          - device_id: 7d580f0322d72f89c5873da339d4b53d
            domain: cover
            entity_id: 22fb66c8094b5e7aac0112c9329d83af
            type: close
          - service: notify.mobile_app_pixel_6_pro
            data:
              message: Fermeture du volet du salon
              title: 🏠 Volet 🏠
            enabled: false
    enabled: true
  - if:
      - condition: trigger
        id:
          - LumiereNuit
    then:
      - if:
          - condition: time
            after: "19:00:00"
            before: "00:00:00"
        then:
          - device_id: 99f0a479ea8d8cba6407aea59fb1bc96
            domain: cover
            entity_id: 409871ec0b5e1429746b7d7e6bfc234f
            type: close
          - device_id: 91a3bcaacb190e568ac3f8274890817e
            domain: cover
            entity_id: 5ee4647227ae808214ae0aa7d8dbb477
            type: close
          - service: notify.mobile_app_pixel_6_pro
            metadata: {}
            data:
              message: Fermeture volet cuisine
              title: 🏠 Volet 🏠
            enabled: false
    enabled: true
  - if:
      - condition: trigger
        id:
          - 19h
        enabled: false
    then:
      - if:
          - type: is_illuminance
            condition: device
            device_id: a57583139cb71946cadc6457094ec312
            entity_id: 53319f3d21cb849f77a4662de25caef5
            domain: sensor
            above: 0
            below: 20
        then:
          - device_id: 99f0a479ea8d8cba6407aea59fb1bc96
            domain: cover
            entity_id: 409871ec0b5e1429746b7d7e6bfc234f
            type: close
          - device_id: 91a3bcaacb190e568ac3f8274890817e
            domain: cover
            entity_id: 5ee4647227ae808214ae0aa7d8dbb477
            type: close
    enabled: true
mode: single

J’avais mis des notifications dans certaines étapes du script pour avoir l’information sur mon téléphone que j’étais bien entré dans la fonction. Parfois je recevais la notification mais les volets ne s’ouvraient pas.

J’avais fait sur papier une feuille de route pour savoir quelles conditions remplir pour ouvrir et fermer les volets, mais je l’ai supprimée. Je peux la refaire si cela peut aider.

Si quelqu’un voit d’où peut venir le problème…

Merci d’avance.

Salut…

Bon pas simple de lire comprendre ton automatisation : c0187265647d82122e1de1e7652c5440 ça ne me parle pas à moi et à toi sans doute pas beaucoup plus.
Tu devrais construire les automatisations en avec l’entité plutot que l’appareil, ça donne des noms lisibles cover.baiedusalon par exemple.

Après avec une telle quantité de triggers, je pense que tu ne peux pas exclure facilement des exécutions multiples par exemple, un changement de température qui déclenche très trop, la lumière qui les ferment tard. Et même possiblement des actions qui s’enchainent le matin ou le soir avec plusieurs ouvertures fermetures…
Tu n’as pas le choix, soit tu fais l’analyse avec l’historique d’exécution, soit tu fais plus propre/simple

2 « J'aime »

Bonjour, tu n’aurais des problémes de perte , déconnections, de tes volets ? Si le signal est perdu au moment de l’envoie de l’ordre par Ha , il n’est pas executer …

Comme @Pulpy-Luke il va être difficile de faire du débug d’un morceau si complexe…

Se serait moi, je scinderai cette automatisation en quelques cas d’utilisations avec par exemple 4 automatisations:

  • ouverture le matin
  • fermeture le soir
  • 50% si soleil direct
  • ouverture si pas de soleil

Avec pour chaque automatisation:

  • ses propres triggers
  • ses propres conditions
  • ses actions basées sur les entités et pas sur les appareils pour que ce soit lisible.

Ensuite :

  • soit les grouper par catégories ou labels.
  • soit si ça marche et si les conditions sont compatibles, et si on n’a pas peur de tout casser, tenter de tout remettre dans une seule automatisation.

autre piste:

mode: single

Vu la complexité de ton automatisation, si ça se bloque quelque part elle ne repartira pas.
Tu peux aussi envisager de changer de mode:

image
Quand c’est des automatisation « critiques » et que je suis sûr de ne pas avoir trop de triggers à la suite, moi je met le mode restart…

En effet ça ne me parle pas. Pour être honnête, le YAML ne me parle pas, je fais donc avec l’éditeur visuel.

J’ai tenté de faire une action « Volets » et en choisissant l’entité, mais j’ai « entity_id: cover.tz3000_zirycpws_ts130f_cover_4 », il va donc falloir que je renomme tous mes matériels.

@didier02100 : Je n’ai pas l’impression d’avoir de perte de communication, il faudrait que je regarde mais je pense plutôt que mon code n’est pas bon…

@BBE : Je voulais faire un seul script qui gère tous les cas des volets, mais comme tout le monde le dit, le script est pas simple. Je vais suivre ton conseil et refaire le script en le scindant.

Dans un premier temps, je pense que je vais le mettre sur papier pour mettre à plat les besoins.

Et si jamais tout fonctionne correctement, pourquoi pas tout regrouper pour que je n’ai pas 50 automatisations différentes.
Je n’aime pas avoir trop de scripts ça me donne une impression de bordel, mais ça peut être pas mal aussi de scinder pour faciliter le débogage

Par contre je n’ai pas compris quand tu dis « les grouper par catégorie ou labels »…

Merci en tous cas pour vos remarques :slight_smile:

Bonjour,

J’ai avancé dans mes modifications. Pour le moment, je ne gère que l’ouverture le matin. Après discussions avec Mme, il va falloir que je gère la luminosité, mais ça viendra plus tard :slight_smile:

Pour le moment, voici mon code qui ne fonctionne pas à trois endroits et je ne vois pas pourquoi :

alias: Volets_Ouverture
description: ""
trigger:
  - platform: time
    at: "06:30:00"
    id: Reveil
  - platform: time
    at: "07:45:00"
    id: OuvertureTotale
condition: []
action:
  - if:
      - condition: trigger
        id:
          - Reveil
    then:
      - service: cover.open_cover
        metadata: {}
        data: {}
        target:
          entity_id:
            - cover.volet_cuisine
            - cover.volet_terrasse
      - service: cover.set_cover_position
        metadata: {}
        data:
          position: 50
        target:
          entity_id: cover.volet_salon
        enabled: true
  - if:
      - condition: trigger
        id:
          - OuvertureTotale
    then:
      - if:
          - condition: state
            entity_id: input_boolean.vacances_exterieures
            state: "on"
            enabled: true
          - condition: or
            conditions:
              - condition: state
                entity_id: input_boolean.vacances_maison
                state: "off"
              - condition: state
                entity_id: binary_sensor.jourtravail
                state: "on"
        then:
          - service: cover.open_cover
            metadata: {}
            data: {}
            target:
              entity_id:
                - cover.volet_chloe
                - cover.volet_salon
                - cover.volet_bureau
          - service: cover.set_cover_position
            metadata: {}
            data:
              position: 30
            target:
              entity_id: cover.volet_parents
mode: single

Premier problème : Dans la première condition, le volet du salon ne s’ouvre pas du tout, alors que je lui demande d’être ouvert à 50%

Deuxième et troisième problème : Dans la seconde condition, rien ne s’ouvre dans l’état actuel. Je voudrais ouvrir lorsque je suis en vacances à l’extérieur ou lorsque je ne suis pas en vacances et que c’est un jour travaillé.
Si je supprime la condition des vacances extérieures, tout s’ouvre (sauf le volets des parents que je voudrais ouvrir à 30%, qui est mon 3ème problème).

Vous savez ce qui cloche ?
J’utilise le bon fonctionnement maintenant ?

Une fois que tout ça sera fonctionnel, je continuerais à modifier le programme avec l’ajout de la luminosité.

Merci :slight_smile:

L’éditeur graphique des automatisations est devenu, malgré les efforts des dev de l’améliorer, plus complexe que simplement faire du YAML. Et assez étonnant puisque toutes les docs montre du « code YAML » en long et en large !

Pour revenir à ton automatisation qui coince, il faut aller voir son historique d’exécution, puis tu devrais pouvoir comprendre ce qu’il s’est passé par rapport au volet du salon qui ne s’est pas mis à la position 50%.
Et dernier point, il serait peut-être plus judicieux d’utiliser des « choose » que des « if / then ».

1 « J'aime »

Je me suis permis de réécrire le code, avec mon idée du « choose »; un simple copier/coller dans l’UI de HA et il va prendre en compte le code de façon visuelle :

alias: Volets_Ouverture
description: ""
mode: single
trigger:
  - platform: time
    at: "06:30:00"
    id: Reveil
  - platform: time
    at: "07:45:00"
    id: OuvertureTotale
condition: []
action:
  - choose:
      - alias: Trigger Reveil
        conditions:
          - condition: trigger
            id: Reveil
        sequence:
          - service: cover.open_cover
            target:
              entity_id:
                - cover.volet_cuisine
                - cover.volet_terrasse
          - service: cover.set_cover_position
            data:
              position: 50
            target:
              entity_id: cover.volet_salon
      - alias: Trigger OuvertureTotale
        conditions:
          - condition: trigger
            id: OuvertureTotale
        sequence:
          - choose:
              - alias: Vacs exterieur ON et Vacances maison ou jour travail
                conditions:
                  - condition: state
                    entity_id: input_boolean.vacances_exterieures
                    state: "on"
                    enabled: true
                  - condition: or
                    conditions:
                      - condition: state
                        entity_id: input_boolean.vacances_maison
                        state: "off"
                      - condition: state
                        entity_id: binary_sensor.jourtravail
                        state: "on"
                sequence:
                  - service: cover.open_cover
                    target:
                      entity_id:
                        - cover.volet_chloe
                        - cover.volet_salon
                        - cover.volet_bureau
                  - service: cover.set_cover_position
                    data:
                      position: 30
                    target:
                      entity_id: cover.volet_parents

Il faut savoir que qu’une automatisation, ça peut être une série d’actions qui vont s’exécuter les unes après les autres; or avec le premier code (= « if / then ») il va effectuer deux actions : une première action pour tester si le trigger c’est l’id Reveil, puis une autre action pour tester si le trigger c’est l’id OuvertureTotale, donc dans tous les cas il y aura toujours deux actions qui vont se faire (=bof bof).

En passant par le choose, il n’y aura qu’une action avec un vrai test si c’est l’id Reveil ou si c’est l’id OuvertureTotale

1 « J'aime »

@chpego
Merci pour ton code ça m’aide à comprendre
Par contre la ligne « mode : single » n’apparait pas si je reviens dans le script et que je passe en YAML, c’est normal ?
Et j’ai l’impression que la partie où je demande au volet du salon de remonter ne fonctionne pas.

J’ai l’impression avoir des problèmes lors des ouvertures avec des volets qui ne récupèrent pas les ordres. Les modules sont tous centralisés donc ils devraient communiquer sans souci.

Il y a un endroit pour voir si j’ai eu un souci pendant l’exécution d’un script ?

Je viens juste de faire une autre automation avec des « choose » pour la fermeture, je vais voir ce que ça donne dans les jours à venir.

Merci

1 « J'aime »

Oui c’est ce que j’ai déjà dis plus haut, dans la liste des automatisations, il faut cliquer sur celle que l’on veut « debug », puis en haut à droite « historique des exécutions »

Hello,

bon je suis en vacances mais j’ai quand même pu voir l’ouverture de ce matin et j’ai eu une erreur (mais pas hier) :

De ce que je comprends, ça serait le « volet_chloe » qui n’aurait pas répondu c’est bien ça?

Pourtant quand je regarde le journal du module, il a bien répondu et s’est ouvert…
image

Bon après il a été fermé 15 minutes après alors qu’il n’y a aucune automatisation qui demande sa fermeture… Mais ce n’est pas le propos, un problème à la fois :sweat_smile:

Donc pour revenir à mon erreur de script, il faudrait que je regarde du côté du Volet_chloé ?

Merci.

ça en a tout l’air. il faut regarder l’entité maintenant et voir effectivement si il y a eu une déco de cet appareil. c’est quoi comme équipement ce volet ?

Voilà le module que j’utilise.
Il est remonté comme ça sur ZHA :
Modèle

Je ne vois rien dans le journal sur une éventuelle perte de connexion, ni une reconnexion au réseau.
Je ne cherche peut-être pas au bon endroit mais je n’ai rien vu d’autre…