Bonjour,
Je suppose que ce genre de blueprint existe sans doute en 25 exemplaires, mais c’était une bonne occasion pour moi de découvrir comment ça fonctionnait, et me simplifier la vie.
Le besoin de départ était simple : au clic sur un interrupteur, lancer une scène (allumer les lumières, la clim, lancer la musique, …) et pour un second clic, éteindre tout ça.
J’étais donc parti sur à chaque fois une suite d’instructions qui disait : « en fonction de l’état actuel d’un input_boolean, lance la scène A ou la scène B, puis change l’état de mon input »
Puis la situation se représentant, je me suis dit qu’il y avait plus intelligent à faire. D’où ce blueprint qui me permet de créer une automatisation pour chaque toggle de scène que je veux faire.
3 entrées requises :
- un input_boolean qui va servir à « stocker » l’état actuel du toggle
- une scène « ON » à déclencher quand l’état du input_boolean vaudra ‹ on ›
- une scène « OFF » à déclencher quand l’état du input_boolean vaudra ‹ off ›
J’ai mis mon code dans /homeassistant/blueprints/automation/PBN/toggle_scene.yaml :
blueprint:
name: Switch between 2 scenes
description: Switch between two scenes based on an input_boolean state
domain: automation
# source_url: TODO
author: PBN
input:
input_boolean_entity:
name: Boolean input that will switch the scenes
selector:
entity:
filter:
domain: input_boolean
scene_on_entity:
name: ON scene
description: "Scene that will trigger when the state of the input_boolean is 'on'"
selector:
entity:
filter:
domain: scene
scene_off_entity:
name: OFF scene
description: "Scene that will trigger when the state of the input_boolean is 'off'"
selector:
entity:
filter:
domain: scene
trigger:
platform: state
entity_id: !input input_boolean_entity
variables:
var_input_boolean: !input input_boolean_entity
action:
if:
- condition: template
value_template: "{{(states(var_input_boolean) == 'on')}}"
alias: "The input_boolean state is 'on'"
then:
- alias: "Turn on the 'ON scene'"
service: scene.turn_on
target:
entity_id: !input scene_on_entity
else:
- alias: "Turn on the 'OFF scene'"
service: scene.turn_on
target:
entity_id: !input scene_off_entity
A l’écoute de toutes vos remarques bienveillantes, et sinon, utilisez la tant que vous voulez