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
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.
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.
@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
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)
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 :
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.
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 :
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.
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é ?
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.
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
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.
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
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
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: