Questions pour Automatisations

Bonjour,

Concernant les automatisations, est-ce que quelqu’un peut m’expliquer simplement pourquoi la première automatisation fonctionne et pas la deuxième :

1) Automatisation qui fonctionne :
Quand : Porte de service ouverte
Et Si : Système d’Alarme activé
Alors Faire : Activer sirène

2) Automatisation qui ne fonctionne pas :
Quand : Système d’Alarme activé
Et Si : Porte de service ouverte
Alors faire : Activer sirène

Perso, j’ai l’impression que c’est la même chose, mais non ???

Salut

Le quand est le déclencheur de l’automatisation

Le et si est une condition qui permet de passer à la suite de l’automatisation si elle est remplie.

Donc dans le premier cas

Quand on ouvre la porte et que l’alarme est en fonction la sirène donne.

Dans le second cas

Quand on met l’alarme en fonction et que la porte est ouverte la sirène donne

Au moment où tu activeras l’alarme si la porte est ouverte ça sonnera mais seulement au moment de l’activation de l’alarme puisque c’est l’activation de celle ci le déclencheur

5 « J'aime »

C’est fondamentalement différent et @Tochy a parfaitement répondu !

Alors pour creuser un peu plus, un petit tour là:

Avec le point 14 ce cet article: Home Assistant en 20 questions-réponses
La partie programmation de celui là: Architecture et concepts Home Assistant
Ou encore celui ci qui montre les outils de débug: Vos premiers projets avec Home Assistant

1 « J'aime »

Merci pour vos réponses et pour les liens vers les tutos.

Je suis certainement obtus mais j’ai toujours l’impression que c’est la même chose car quand les deux conditions sont remplies, elles devraient produire la même action, non ?

  • Porte ouverte + Alarme en fonction = Sirène
  • Alarme en fonction + Porte ouverte = Sirène

Mais bon, je me rappellerai qu’il faut mettre le déclencheur en premier.

Bonne soirée

Un déclencheur est un changement d’état.
Dans ton cas, la seconde automatisation se « déclenche » quand l’alarme se met en fonction.

Oui t’es obtus :grin: (c’est toi qui le dit)

C’est le déclencheur qui fait que l’auto se lance. Les conditions ne sont pas obligatoires. Et dans ton cas ce ne sont pas 2 conditions mais un déclencheur et une condition.

C’est pourtant bien indiqué, ce qui fait que l’automatisation se lance.

L’objectif ce n’est pas de mettre le déclencheur en premier, c’est de mettre en déclencheur ce qui doit déclencher l’automatisation.

Fait un test.

Quand porte ouverte action allume une lumière

Quand alarme enclenché action allume une lumière.

Tu verras bien qu’il n’y en a qu’une des deux qui se déclenche quand tu ouvre la porte.

Ps: La solution c’est le post qui t’a apporté la réponse

2 « J'aime »

@Gilles2 et @Tochy
Bonjour et merci pour votre persévérance à m’expliquer ce que j’ai du mal à comprendre.
Je vais bien finir par y arriver (je dois avoir un profil trop cartésien) et je pense que le mieux pour moi est de faire plein d’essais avec tous les modules que j’ai installé dernièrement pour éviter de faire plus de bêtises :smiling_face_with_tear:
PS : j’ai « cramé » la sirène du garage en la faisant fonctionner trop longtemps.
Je ne m’étais pas rendu compte que je l’avais activée avec mon automatisation « foireuse » et elle a probablement fonctionné trop longtemps sans que je l’entende (le garage n’est pas à côté de la maison)

1 « J'aime »

Salut

Il y a bien deux notions différentes à prendre en compte.

  • Les événements (le moments où se déclenche un changement d’état) qui sont les triggers
  • Les conditions qui permettent de vérifier que le bon contexte est là pour exécuter une action

Typiquement nous sommes bien d’accord que la porte qui s’ouvre / se ferme n’arrive jamais en même temps que l’alarme qui s’active / désactive.

A l’inverse quand l’un OU l’autre change il est possible/nécessaire après coup de vérifier que la porte ET l’alarme sont dans l’état qui nécessite de faire sonner la sirène

Donc comme évoqué au dessus, tu peux faire 2 cas :

Automatisation qui surveille la porte

  • Trigger : La porte passe de fermée à ouverte.
  • Condition : L’alarme est activée.
  • Action : Faire sonner la sirène.

Automatisation qui surveille l’alarme

  • Trigger : L’alarme passe de désactivée à activée.
  • Condition : La porte est ouverte.
  • Action : Faire sonner la sirène.

mais aussi un troisième

Surveillance de tous les évènements porte/alarme :

  • Trigger :
    • Porte qui s’ouvre OU alarme qui s’active.
  • Condition :
    • Porte ouverte ET alarme activée.
  • Action :
    • Faire sonner la sirène.
1 « J'aime »

Attention aussi à cette erreur classique, le fonctionnement de cette automatisation:
Automatisation qui surveille l’alarme

  • Trigger : L’alarme passe de désactivée à activée.
  • Condition : La porte est ouverte.
  • Action : Faire sonner la sirène.

N’est pas:

lorsque j’active l’alarme,
Si plus tard la porte s’ouvre,
alors la sirène sonne.

Les conditions sont évaluées au moment du trigger (ici lorsque l’alarme passe de désactivé à activé). Donc cette deuxième automatisation permet uniquement de couvrir le cas où tu pars en activant l’alarme et en ayant laissé une porte ouverte.


Dans les 3 exemples postés par @Pulpy-Luke

  • le premier est le cas le plus courants (l’ouverture de la porte déclenche l’alarme):

    • Lorsque la porte s’ouvre on déclenche une automatisation
    • ET Si à ce moment l’alarme est activée, l’automatisation a le droit de se poursuivre
    • L’action fait sonner la sirène
  • le second cas couvre le cas où la porte était déjà ouverte au moment de l’activation de l’alarme (donc le premier cas ne pourra jamais s’activer puisque la porte est déjà ouverte, le déclencheur est déjà passé)

    • Lorsqu’on active l’alarme on déclenche une automatisation
    • Et si à ce moment la porte est ouverte, l’automatisation a le droit de se poursuivre
    • L’action fait sonner la sirène
  • la troisième couvre tous les cas:

    • lorsque la porte s’ouvre ou lorsqu’on active l’alarme, on déclenche une automatisation
    • Et si, à ce moment, la porte est ouverte ET l’alarme est activée, l’automatisation a le droit de se poursuivre
    • L’action fait sonner la sirène

Il faut bien voir une automatisation comme la séquence de trois moments très différents:

  • déclencheur: les éléments qui vont lancer l’automatisation. N’importe lequel des déclencheurs va lancer l’automatisation (c’est un OU), mais à l’inverse, si aucun déclencheur n’est présent, l’automatisation ne se lancera jamais.

Si l’automatisation se déclenche, on passe à la suite :

  • les conditions : ils faut que toutes les conditions soient vraies (c’est un ET) au moment où l’automatisation se lance (au moment du trigger) pour que l’automatisation puisse continuer. Sinon l’automatisation s’arrête définitivement jusqu’au prochain déclencheur.

Si les conditions sont remplies :

  • les actions : le corps de l’automatisation se lance et les actions sont executées.

Le but de cocher un post en solution c’est aussi pour les suivants qui feraient une recherche de trouver facilement le post qui contient la solution ou l’explication au problème… Là attention, ta « solution » est un post qui ne contient pas la solution, bien au contraire ! @GB44 il serait sympa de cocher un autre post en solution, car ton post « solution » n’est absolument pas le mode de fonctionnement de HA :

Si on fait juste l’effort d’utiliser le bon vocabulaire (celui de l’interface d’ailleurs) on voit bien que ce n’est pas vraiment pareil de dire:

  • Porte ouverte + Alarme en fonction = Sirène
  • Alarme en fonction + Porte ouverte = Sirène

et

  • Quand Porte s’ouvre, Et si Alarme en fonction, Alors faire sonner Sirène
  • Quand Alarme mise en fonction, Et si Porte ouverte, Alors faire sonner Sirène
2 « J'aime »

Merci à tous pour vos explications très détaillées.
Je ne pensais pas que les automatisations étaient aussi complexes car celles que j’avais faites pour l’instant étaient assez simples (je n’utilisais que le déclencheur « Quand » et l’action « Alors faire »).
Il me faut juste un peu de temps et d’essais pour éviter de reproduire mes erreurs…
Bonne soirée à tous et encore un grand merci.

1 « J'aime »

Bonjour à tous,

Je reviens une dernière fois sur ce sujet car je pense avoir enfin compris le fonctionnement des automatisations grâce à vos explications et exemples.
Je pense que ce qui m’a le plus aidé, c’est le fait de comprendre que Les conditions sont évaluées au moment du trigger et donc que déclenchements et conditions ne sont pas deux entités identiques qui provoquent la même action.

Concernant le fait que je me suis trompé de post pour cocher la case « Résolue », est-ce qu’il est possible de modifier cette case pour la mettre sur un autre post plus approprié ?

1 « J'aime »

C’est l’erreur classique pour les conditions…

Pour changer de solution,. Il suffit de cliquer…

Bonjour à tous,

Pour résoudre un problème (du quand) selon une ou des condition(s)
J’utilise un triger de temps

dans cette exemple un /5 dans le champ “Secondes” indique que toutes les 5 secondes de toutes les minutes de toutes les heures je vérifie mon surplus solaire et si je dépasse les 2400 w j’active les résistances de mon chauffe eau.

Cordialement,

Jean-Luc

Salut

Attention, utiliser une périodicité pour tout n’est pas optimal.
Dans le cas de la production solaire par exemple, la nuit c’est inutile.
Dans le cas de la gestion de l’alarme, pas du tout adapté (99% du temps il ne se passe rien)

Techniquement, boucler toutes les 5 minutes ne consomme pas beaucoup unitairement, autant quand il y a ce genre de choses en quantité, c’est très différent et ça engendre des pics

1 « J'aime »

Tu peux aussi trigger sur tous les changement d’état de ton surplus.

Si ça ne bouge pas, ça ne trigge pas.

@Pulpy-Luke et @BBE

Merci de vos retours

Je me doute que ce n’est pas protocolaire mais ça fonctionne bien depuis 1 an et c’est simple a gérer pour moi. Le surplus change quasiment tout le temps, 5 secondes c’est lent pour un système info et c’est suffisamment rapide pour piloter mon chauffe-eau. j’ai réalisé de cette façon un pseudo routeur solaire car je suis en triphasé et j’alimente chaqu’une des 3 résistances du CE en fonction du surplus.

Je voulais juste indiquer a @GB44 cette possibilité sur le “quand” ça peut-être pratique quand x conditions ne sont pas successives ou sont indépendantes.

cordialement,

Jean-Luc

Oui ça fonctionne, mais c’est pas optimal.
Surtout que tu peux faire facile un truc plus malin du genre :

Trigger 1 : valeur > seuil1 pendant 5sec (par exemple 500)
Trigger 2: valeur > seuil2 pendant 5sec (par exemple 200)
Si trigger = trigger 1 => allumer le chauffe-eau
Si trigger = trigger 2 => eteindre le chauffe-eau

ça fait pareil, avec les même délais de réaction mais dans doute avec facile 70% de déclenchement en moins

Merci pour l’info je regarderai

je ne me suis pas mis au langage Yaml
je suis convaincu que ça m’apporterai un plus mais j’essaye peu pour l’instant je me suis juste adapté quelques lignes pour mon usage sans comprendre l’ensemble.

j’ai pourtant créé des scripts de sauvegardes et d’utilitaires divers avec plus de 6000 lignes de code en AUTOIT

M’enfin comme dirait Lagaffe

Cordialement,

Jean-Luc

1 « J'aime »

Euh à mon avis tu te mélanges un peu les pinceaux là.

Il n’y a pas de yaml dans ce que te proposes @Pulpy-Luke , ça se fait dans l’UI d’automatisations

1 « J'aime »

Il n’y a pas besoin de se mettre au yaml pour faire des automatisations.

Le YAML peut n’être utilisé que pour les partager plutôt que de faire des screenshot:

Pour envoyer ton automatisation sur le forum:
plutôt que ça, qui est vite inexploitable:

on clique sur les 3 points en haut à droite et on fait « modifier en YAML »

on copie colle le code obtenu et on le met dans le forum en utilisant les balises </>

alias: Gestion automatique du chauffage - v2.0
description: >-
  Lorsque l'etat d'un booléen: Auto - override - scheduler - tarif rouge change


  Si on est en saison de chauffage, en mode auto et sans override temporaire. 


  - Désactivation temporaire de la detection de changement de la PAC (overide
  temporaire)

  - Réglage automatique du chauffage en fonction du planning et du tarif:
    -  Chauffe à la temperature de consigne si planifié, sinon PAC off. 
    -  Si tarif rouge => PAC off.
  - ECAM pour le debug.
triggers:
  - trigger: state
    entity_id:
      - input_boolean.chauffage_mode_auto
      - input_boolean.pac_override_temporaire
      - input_boolean.saison_chauffage
      - schedule.planning_chauffage
      - input_boolean.tarif_rouge
conditions:
  - condition: state
    entity_id: input_boolean.chauffage_mode_auto
    state: "on"
    alias: Le chauffage est en mode AUTO
  - condition: state
    entity_id: input_boolean.saison_chauffage
    state: "on"
    alias: La saison est en mode Chauffage (mode hiver)
  - condition: state
    entity_id: input_boolean.pac_override_temporaire
    state: "off"
    alias: L'override temporaire n'est pas activé
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.pac_detect_inhib
    alias: Désactivation de la detection de changement manuel de la PAC
  - alias: Réglage auto du chauffage en fonction du tarif
    choose:
      - conditions:
          - condition: state
            entity_id: input_boolean.tarif_rouge
            state: "off"
        sequence:
          - alias: test du scheduler
            choose:
              - conditions:
                  - condition: state
                    entity_id: schedule.planning_chauffage
                    state: "on"
                sequence:
                  - action: climate.set_hvac_mode
                    metadata: {}
                    data:
                      hvac_mode: heat
                    target:
                      entity_id: climate.pac
                  - data:
                      temperature: >-
                        {{states('input_number.temperature_confort_hiver')|int
                        }}
                    target:
                      entity_id: climate.pac
                    action: climate.set_temperature
                  - action: climate.set_fan_mode
                    metadata: {}
                    data:
                      fan_mode: auto
                    target:
                      entity_id: climate.pac
                  - action: script.ecam_publish
                    metadata: {}
                    data:
                      message: "PAC: Chaud auto"
                alias: >-
                  planning Chauffage => allumer PAC en chauffage et régler la
                  temperature
              - conditions:
                  - condition: state
                    entity_id: schedule.planning_chauffage
                    state: "off"
                sequence:
                  - action: climate.set_hvac_mode
                    metadata: {}
                    data:
                      hvac_mode: "off"
                    target:
                      entity_id: climate.pac
                  - action: script.ecam_publish
                    metadata: {}
                    data:
                      message: "PAC: Auto Off"
                alias: planning OFF => éteindre la PAC
              - conditions: []
                sequence:
                  - action: script.ecam_publish
                    metadata: {}
                    data:
                      message: Etat scheduler inconnu
        alias: >-
          Tarif rouge est Désactivé => régler le chauffage en fonction du
          planning
      - conditions:
          - condition: state
            entity_id: input_boolean.tarif_rouge
            state: "on"
        sequence:
          - action: climate.set_hvac_mode
            metadata: {}
            data:
              hvac_mode: "off"
            target:
              entity_id: climate.pac
          - action: script.ecam_publish
            metadata: {}
            data:
              message: "PAC: Auto Rouge "
        alias: Tarif Rouge est activé => éteindre la PAC
      - conditions: []
        sequence:
          - action: script.ecam_publish
            metadata: {}
            data:
              message: Etat Tarif inconnu
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 5
      milliseconds: 0
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.pac_detect_inhib
    alias: Réactivation de la detection de changement manuel de la PAC
mode: restart
trace:
  stored_traces: 50

Si quelqu’un te corrige ton code dans le forum, tu copies le code, le colle dans la fenetre.

et tu reviens ensuite au mode editeur visuel en faisant la manip inverse: