J’ai créé une automatisation assez basiques qui m’envoie une notification critique si jamais une prise connectée s’est mise en OFF toute seule (ça m’arrive de temps à autre sur certaines prises).
Code YAML de mon automatisation pour une seule prise
Mais le soucis c’est que je voudrais « surveiller » plusieurs prises différentes. Et j’aimerais bien ne pas faire autant d’automatisation que j’ai de prises.
Comment puis-je faire ?
Merci d’avance
edit : ha, et aussi, si possible, faire en sorte que le titre de la notification puisse être modifié à la volée sur le nom de la prise ?
Oui tu peux tout à fait regrouper toutes tes prises dans une seule et même automatisation.
Pour ça en trigger tu choisis le menu « Entité » puis « État » et tu indiques ensuite toutes les entités de tes prises et pour l’état tu indiques passant à « Désactivé ».
Encore une question : comment je fais pour relancer la prise qui est OFF ?
J’entends par là, comment dans l’automatisation je peux faire en sorte que ce soit la prise OFF qui soit remise en ON quand il y a plusieurs prises dans l’automatisation ?
Cependant, une partie de l’auto me pose question, à propos du repeat :
Si je comprends bien la logique, tu souhaites répéter l’action « turn on » 3 fois, au cas où celle-ci échouerait c’est bien ça ? J’ai l’impression que la condition template à la fin est inutile et mal construite dans cette logique (« on » vs « off » et en dernière position).
Si tu souhaites répéter la séquence 3 fois tant que la prise n’est pas « on », je partirai plutôt la dessus :
Dans l’absolu il me semble même que la condition template n’est pas utile car je crois que la fonction repeat s’exécute quoiqu’il arrive, elle évitera simplement de « turn on » une prise déjà « on » lors des répétitions suivantes. Mais à confirmer n’étant pas un spécialiste de cette fonction.
Il existe aussi un repeat until, donc répéter jusqu’à ce que la prise passe sur « on », mais pas sur que ce soit conseillé dans une auto… .
Si je ne met pas ce condition template ça ne fonctionne pas et pire je ne peux pas sauvegarder les modifications. Je retenterai tout à l’heure, mais hier CoPilot m’avait proposé ta correction et j’avais une erreur à la sauvegarde de l’automatisation.
Ha ça aurait été pratique ça ! Ça aurait évité les 2 répétitions suivantes lorsque la prise est bien réactivée…
Pourquoi ça ne serait pas conseillé en automatisation ?
Parce que s’il n’arrive pas à la passer on, il va tenter… tenter… tenter jusqu’à ce qu’il plante.
Si après 3 tentatives il n’y arrive pas, ça ne sert à rien de tenter plus !
Oui c’est pas faux qui n’y a pas de break de boucle …
Ça peut finir en plantage
Est-ce qu’un script peut gérer une sortie de boucle ?
Sinon je code trois tests successifs à base de if then else if then …
Ainsi je n’aurais plus de boucle et si la première réactivation est un succès alors les deux autres tests ne sont pas utilisés.
Oui le repeat until peut tout faire planter si ta prise est pour une quelconque raison indisponible (panne Wifi etc…).
Normalement le code ci-dessous fait cela. À savoir vérifier l’état de la prise, si elle est « off » alors la passer sur « on » puis attendre 5 secondes. Et refaire la boucle 2 fois. Si elle passe en « on » après une boucle la fonction repeat s’exécute à nouveau mais ne tentera pas le « turn on », d’où la condition template. Certes la boucle est relancée mais elle n’effectuera aucune action.
J’ai modifié le template celui-ci ne génère pas d’erreur chez moi. À tester si tu le souhaites car plus simple dans l’idée qu’un if/then/else répété plusieurs fois.
Et là avec ta version, on ne risque pas d’avoir une boucle infinie ?
Je me dis que rien ne permet de sortir de la boucle… sauf le changement d’état de la prise.
Dans le cas où la prise est bien réactivée, c’est ok. Mais si ce n’est pas le cas, même au bout de 3 fois… ça va planter la boucle puisque rien n’est prévu pour sortir dans le cas de 3 essais maxi…
En regardant Script Syntax - Home Assistant je me suis dit chouette, c’est utilisable dans une automatisation.
mais on revient sur la combinaison des deux critères : la prise passe de OFF à ON , et/ou on atteint les 3 essais.
Vu qu’on ne peut pas coder comme en C++, je pense partir sur la solution simplifiée, mais moins élégante : les if then else
Fera exactement la même chose.
Avec la condition tu gagneras juste 5 a 10 secondes sur le temps d’exécution total de l’automatisation, selon si la prise se rallume a la première ou a la seconde tentative.
Et là non tu n’auras pas de boucle infinie, si après les 3 répétitions la prise n’a pas rebasculé sur « on » alors le reste de ton automatisation suivra si je ne dis pas de bétises = tu recevras la notif que tu as prévu dans ce cas de figure : « La prise est toujours éteinte après plusieurs tentatives . Vérifie manuellement ! ».
Et comme le dit @Tochy, la condition template sert seulement à éviter de « turn on » une prise déjà sur « on » dans la 2ème et/ou 3ème répétition, donc 5 à 10 secondes de gagnées.