Vous êtes-vous déjà agité les bras devant un capteur de mouvement pour allumer votre lumière extérieure pendant que vous dîniez sur la terrasse ? Cela m’arrivait tout le temps et c’était vraiment frustrant… alors j’ai créé une automatisation pour résoudre ce problème ! 😎
De quoi avez-vous besoin ?
Une ampoule connectée (ou équivalent pour contrôler une ampoule)
Un capteur de mouvement intelligent
Un
input_booleanpour vérifier la façon dont la lumière est alimentée
Input Boolean#
Rien de spécial ici, vous avez juste besoin de le mettre dans votre fichier input_boolean.yaml ou directement dans configuration.yaml, selon comment vous gérez votre configuration HassIO.
Pour simplifier, je l’ai mis dans mon fichier de configuration global : input_boolean: !include components/input_boolean.yaml
input_boolean: !include components/input_boolean.yamlCela vous permet de garder toutes les configurations booléennes dans un seul fichier.
Une autre approche, que j’utilise pour les automatisations, est d’utiliser un dossier et de laisser Home Assistant tout fusionner : automation: !include_dir_merge_list automations/
automation: !include_dir_merge_list automations/Cela vous permet de mettre un YAML par automatisation, gardant les choses organisées.
Revenons à notre boolean. Que mettre dans le fichier :
terrasse_salon_auto_on:
name: Terrasse Salon Motion ON
icon: mdi:lightbulbCela créera un input_boolean nommé terrasse_salon_auto_on que nous utiliserons plus tard dans notre automatisation.
L’automatisation#
Nous avons deux automatisations : une pour l’allumage, une pour l’extinction.
- alias: Terrasse Salon ON
id: terrasse_salon_on
trigger:
platform: state
entity_id: binary_sensor.motion_salon_occupancy
to: "on"
condition:
- condition: state
entity_id: light.terrasse_salon
state: "off"
- condition: numeric_state
entity_id: sensor.motion_salon_illuminance_lux
below: 50
- condition: state
entity_id: input_boolean.terrasse_motion_sensor_enabled
state: "on"
action:
- service: light.turn_on
entity_id: light.terrasse_salon
- service: input_boolean.turn_on
entity_id: input_boolean.terrasse_salon_auto_on
- alias: Terrasse Salon OFF
id: terrasse_salon_off
trigger:
platform: state
entity_id: binary_sensor.motion_salon_occupancy
to: "off"
for:
minutes: 2
condition:
- condition: state
entity_id: light.terrasse_salon
state: "on"
- condition: or
conditions:
- condition: state
entity_id: input_boolean.terrasse_salon_auto_on
state: "on"
- condition: state
entity_id: input_boolean.ignore_light_manual_on
state: "on"
action:
- service: light.turn_off
entity_id: light.terrasse_salon
- service: input_boolean.turn_off
entity_id: input_boolean.terrasse_salon_auto_onPassons en revue chaque partie pour comprendre comment cela fonctionne.
Le déclencheur#
Nous voulons contrôler la lumière basée sur la détection de mouvement, donc nous utilisons un déclencheur d’état sur le capteur de mouvement.
trigger:
platform: state
entity_id: binary_sensor.motion_salon_occupancy
to: "on"Lorsque le capteur d’occupation s’allume, l’automatisation se déclenche.
Pour le déclencheur d’extinction, nous l’avons légèrement amélioré pour éviter les scintillements lorsque le mouvement n’est pas constant.
trigger:
platform: state
entity_id: binary_sensor.motion_salon_occupancy
to: "off"
for:
minutes: 2Le for: minutes gère cela : si l’occupation est désactivée pendant 2 minutes, l’action se déclenche.
Les conditions#
Lorsqu’il y a du mouvement, quand la lumière doit-elle s’allumer ? Quand il fait sombre et que la lumière est éteinte, bien sûr.
condition:
- condition: state
entity_id: light.terrasse_salon
state: "off"
- condition: numeric_state
entity_id: sensor.motion_salon_illuminance_lux
below: 50
- condition: state
entity_id: input_boolean.terrasse_motion_sensor_enabled
state: "on"La partie
statevérifie si la lumière est éteintenumeric_statevérifie la valeur d’illuminance du capteur de mouvement. Quelle valeur utiliser ? J’ai fait quelques tests. 0 fonctionnerait (pas de lumière), mais je l’ai légèrement augmentée pour également déclencher en faible luminosité.Le dernier
stateest un autreinput_booleanqui peut désactiver complètement la lumière. Je l’utilise la nuit : si l’alarme est activée, personne ne sera dehors, donc le mouvement ne devrait pas allumer la lumière.
L’automatisation d’extinction est similaire, mais c’est ici que la magie opère avec notre input_boolean.
condition:
- condition: state
entity_id: light.terrasse_salon
state: "on"
- condition: or
conditions:
- condition: state
entity_id: input_boolean.terrasse_salon_auto_on
state: "on"
- condition: state
entity_id: input_boolean.ignore_light_manual_on
state: "on"La lumière doit être allumée.
Le
input_booleanque nous avons configuré. La lumière s’éteint uniquement si elle a été allumée par l’automatisation. Si nous l’avons allumée manuellement, le flag reste à false et la lumière ne s’éteindra pas automatiquement.Il y a aussi une condition
oravec un second booléen qui écrase ceci : il force l’extinction de la lumière indépendamment de la façon dont elle a été allumée.
L’action#
Si les conditions sont remplies, la lumière s’allume ou s’éteint — et nous contrôlons également le input_boolean.
action:
- service: light.turn_on
entity_id: light.terrasse_salon
- service: input_boolean.turn_on
entity_id: input_boolean.terrasse_salon_auto_onLe script d’allumage exécute deux services : un pour la lumière, un pour mettre le boolean à true. Cela marque que la lumière a été allumée par l’automatisation.
C’est la méthode la plus simple que j’ai trouvée, mais il y a d’autres approches.
L’extinction fait le contraire : elle remet le flag à false.
action:
- service: light.turn_off
entity_id: light.terrasse_salon
- service: input_boolean.turn_off
entity_id: input_boolean.terrasse_salon_auto_on