Bonjour à tous
pour une fois, ce n’est pas une question, mais un petit bout de code que je n’ai trouvé nulle part ailleurs.
HA lit les CONDITIONS de manière séquentielle, la dernière validée et celle qui est activée, même si d’autres l’ont été avant celle ci.
Autrement dit ce n’est pas un « if/then/else » habituel ou la première condition validée fait sortir du bloc « if/then/else » sans évaluer les autres conditions.
3 lignes donc pour sortir après une validation quand cela est utile, sans évaluer les suivantes donc:
la petite astuce, c’est this.entity_id qui permet d’être indépendant du nom du script en cours.
A recopier donc tel que quelque soit votre script/automation.
Voila, si ça peut servir à d’autres.
@Pulpy-Luke
en réalité la sortie de la boucle if/then/else n’est intéressante qu’en cas de CONDITION ( if ) successifs en évitant les éventuels « else if » (que je n’ai pas trouvé dans le wui).
j’en ai eu besoin pour un planning:
ex:
quand on est à 00:01:00 la première condition est validée > action1
quand on est à 01:01:00 la première condition est validée > action1
& la deuxième condition est validée > action2
quand on est à 02:01:00 la première condition est validée > action1
& la deuxième condition est validée > action2
& la troisième condition est validée > action3
c’est la dernière validation qui compte, mais la validation d’actions successives peut entrainer des problèmes (style mettre à on puis off puis on un matériel)
si on souhaite 1 seule des 3 actions, il faut:
1: inverser l’ordre de test
& 2: sortir de la série de condition:
quand on est à 00:01:00 la première condition est validée > action1 & sortie
quand on est à 01:01:00 la deuxième condition est validée > action2 & sortie
quand on est à 02:01:00 la troisième condition est validée > action3 & sortie
c’est un exemple…
si il y plus simple pour ce type de problème, je suis preneur.
A voir, mais ce qui est sûr c’est que par habitude de prog j’ai rarement 2 conditions valides temps.
Sur ton premier exemple ça ressemble furieusement à faire un bête scheduling (XXh00 faire actionYYY) donc je vois forcement bien l’intérêt de tout regrouper : sur le moment ça semble plus simple mais dans le temps et en cas de debug, c’est beaucoup moins évident. Et plus c’est long, plus c’est sujets aux pannes.
Dans la logique de ton 2ème script (faire un choose et forcer la sortie), ça revient à faire un IIF . On se fiche de l’ordre puisque qu’on est pas dans un cas de if time > XXh00 mais plutôt du iff time > XXh00