Vous voilà content, vous pouvez allumer, gérer et éteindre votre ampoule via Home Assistant. Je suis sur que vous savez également faire ça via un bouton sans fil, par exemple via ControlerX etc... Mais on peut mieux faire et automatiser en détectant la présence dans une pièce avec quelques lignes et un capteur d'occupation genre Aqara ou Xiaomi... Et pour ça il y a plusieurs méthodes.
EDIT 25/10/2022 : Finalement le problème majeur de Entity Controler est que toute modification impose un redémarrage complet de Home Assistant. J'ai donc basculé sur AD-Automoli qui lui est sous AppDaemon, donc dynamique car les modifications sont prises en compte immédiatement. A considérer également Light Automation pour des éclairages heures fixes.
L'option classique en YAML
- id: 'fab33b5b-b526-4f6c-a23f-ee98c300012c'
alias: "PRESENCE : Eclairage Bureau"
description: ''
trigger:
- platform: device
type: occupied
id: enter
device_id: a65b2d5c507be85f0964131f26f8d31e
entity_id: binary_sensor.motion_bureau_occupancy
domain: binary_sensor
- platform: device
type: not_occupied
id: leave
device_id: a65b2d5c507be85f0964131f26f8d31e
entity_id: binary_sensor.motion_bureau_occupancy
domain: binary_sensor
condition:
action:
- if:
- condition: trigger
id: enter
then:
- service: light.turn_on
data:
entity_id: light.shellydimmer_db2f18
- if:
- condition: trigger
id: leave
then:
- service: light.turn_off
data:
entity_id: light.shellydimmer_db2f18
Alternatives
Pour les plus flémards on peu aussi faire ça avec des BluePrint's, ou même en NodeRed si on veut se compliquer la vie (je déteste mais ça vous le savez). Mais j'ai encore plus simple à vous proposer.
Entity Controler
EC pour les intimes. EC est un moteur qui va contrôler des entités (light, switch, scènes, etc...) en fonction d'informations binaires. Donc les sensor:
d'entrée seront de détecteurs de présence ou de mouvement, des capteurs d'ouverture ou dans l'absolu n'importe quel binary_sensor:
, et pourquoi pas ceux que vous aurez créé dans un usage détourné... A ce contrôle on va bien sur pouvoir appliquer diverses contraintes (horaires, nuit/jour) ou simplement dire que dès lors qu'une lampe s'est allumée automatiquement elle ne s'étendra que manuellement. C'est assez souple et adaptable à quasiment tous les besoins. En tous cas les miens.
Le Git est ici et la doc très complète là.
Voici un exemple pour allumer une lampe pendant 180 secondes (durée par défaut) : 3 lignes
motion_light:
sensor: binary_sensor.motion_sejour
entity: light.shellydimmer_d3e57c
On peut bien sur régler la durée :
delay: 320
Faire en sorte que ça ne s'allume que la nuit, avec ici un offset :
start_time: sunset - 00:30:00
end_time: sunrise + 00:30:00
Et appliquer des valeurs à la lampe :
service_data:
brightness: 255
color_name: blue
service_data_on:
transition: 5
service_data_off:
transition: 10
Faire en sorte que ça ne s'éteigne pas !
stay_mode: on
Ou applique une contrainte externe. Ici j'ai mis un input_boolean:
mais ça aurait pu être l'état d'une autre lampe, voire un media_player:
. A noter que l'on peu également se servir des overrides pour simplement désactiver le contrôle. J'ai par exemple un éclairage extérieur avec des projecteurs que je ne veux pas voir s'allumer quand on dine et que l'éclairage via la guirlande est amplement suffisant et plus agréable.
overrides:
- input_boolean.auto_motion_salon
Pareil quand on regarde un film il ne faut pas que l'éclairage se mette en route si on bouge sur le canapé. Pour ça j'ai déjà une automation qui fonctionne sur le play/pause et qui augmente lentement l'éclairage quand je fait pause et inversement (comme au cinéma). Pour l'instant ça ne fonctionne que sur Emby, il faut que je l'intègre à Android TV et EC., je métrais à jour ici quand je le ferait).
Conclusion
Un peu comme ControlerX, voilà de quoi simplifier la chose et gagner des lignes de code. A noter que sous AppDaemon il y Wasp in a Box qui est un peu moins complet ou AD-Automoli qui lui est trop complet...
On peut en discuter ici ou sur HACF.