/ tech

Scene et automatisation sous Home Assistant

The SmartHome Logo

Les concepts scènes et automation sous Home Assistant

On va commencer par voir ce que sont les scenes sous Home Assistant

Les scenes sont en fait des ambiances.
On peut donc faire par exemple une scene Full Bright (éclairage pleine lumière), qui pourrait correspondre à toutes les lampes en brightness maximum, une scene Dim (pour un brightness très faible et qui correspond à une ambiance tamisée), mais également une scene Love avec un éclairage rouge (un peu comme en Hollande dans certains commerces de proximité ^^).

Bref la seule limite est votre esprit, on va donc voir comment mettre en place ce type d'ambiance.

Comme d'habitude tout se passe via le fichier de configuration de Home Assistant (fichier configuration.yaml).

Ce qu'il faut savoir c'est que sous l'application Hue on peut deja renommer chaque lampe (bibliothèque, salon, cuisine, chambre, ...) ce qui rendra la configuration plus aisée.

Pour ma part je ne veux automatiser que les lampes de mon salon, j'ai donc 3 lampes (une lampe bibliothèque, une lampe hue lightstrip et une lampe salon).

Home assistant une fois connecté au bridge Hue récupère de façon automatique le nom de lampes.

pour créer une scènes la balise à utiliser est la suivante :

scene:

sous cette balise on va définir les différentes ambiances que l'on souhaite créer.

-name: Salon_normal

la balise name correspond au nom de la scene qui doit être précédé par un "-"
-name:salon_normal

entities:

entities permet de définir les différents éléments à configurer ainsi que leur caractéristiques.

scene: 
   -name: Salon_normal
     entities:
        light.bibliotheque:
            state: on
            transition: 2
            brightness: 200
        light.hue_lightstrip_1:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]
        light.salon_couleur:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]

Comme vous pouvez le deviner l'attribut state permet de définir si la lampe est allumée ou éteinte.

Transition permet de donner une temporisation, ici 2 donc la lampe mettra 2 secondes à atteindre la configuration définie à partir de son état initial.

Brightness permet de définir la puissance d'éclairage de la lampe (plus c'est proche de 0 plus ce sera tamisé).

Enfin xy_color nous permet de configurer la couleur de la lampe (lorsque la composante est disponible ca ne fonctionne donc qu'avec les lampes colorées).

pour connaitre les codes couleurs voici le lien qui va bien :

http://www.developers.meethue.com/documentation/hue-xy-values

Bien à partir de là on a notre première scene.

Un redémarrage de Home assistant nous dévoilera sur l'interface une nouvelle pastille en haut avec le nom de la scene une pression sur ce bouton basculera les lampes dans l'ambiance définie, on peut voir que la réactivité de Home assistant est assez bluffante, et ca c'est plutôt cool.

Maintenant on va passer à l'automation, je vous entends deja hurler de joie :)

Automation permet d'automatiser des actions en fonction de trigger prédéfinis.

la balise est "automation"

automation:

sous cette balise on declare nos scenarios avec un alias (précédée s'un -) :

- alias: "Allume les lumieres quand le soleil se couche"

sous l'alias on declare le trigger (déclencheur pour les non anglophiles)

trigger:

et sous la balise trigger on declare la plateforme utilisée comme déclencheur, dans notre exemple "sun" qui correspond à l'état du soleil, a noter que plateform doit également être précédé du signe -

- platform: sun
     event: sunset
     offset: "-01:00:00"

Bon maintenant la balise event correspond à l'état du soleil dans notre cas on veut le coucher du soleil donc sunset.

offset correspond à une difference avec l'état pré déclaré, dans notre cas on veut que les lumières s'allument 1h avant le coucher du soleil.

Ensuite on passe aux conditions, cela permet d'ajouter des conditions à la bonne execution de notre automation.

Dans notre cas on ne veut que les lumières ne s'allument lors du coucher du soleil seulement dans le cas où nous sommes à la maison.

la balise est "condition"

condition:

Ensuite la plateforme utilisée (précédée comme à l'accoutumé d'un -)

-platform: state
    entity_id: group.all_devices

l'entity group.all_devices correspond à tous les devices déclarés dans notre installation.

state: home

Enfin state correspond à la localisation des devices à savoir home (à la maison).

Et pour finir les actions que l'on souhaite effectuer lorsque tous ces événements sont réunis.

La balise est "action"

action :

avec en suivant toutes les actions que nous souhaitons entreprendre dans notre cas on allume les lumières :

service: light.turn_on

Cool ca commence à être pas mal maintenant les lumières s'allumerons automatiquement 1h avant le coucher du soleil si on est à la maison.

Mais vous direz : non mais comment Home assistant peut savoir que je suis chez moi ?

Et là plusieurs options s'offrent à vous.

On a le services nmap qui permet de detecter si un périphérique est connecté en wifi sur son réseau.
En gros quand on capte plus le wifi de sa maison c'est qu'on est sortie, et quand on le recapte c'est que l'on est rentré.

Pour ma part cette méthode n'est pas celle que je recommande, pour plusieurs raisons :

  1. beaucoup de scans réseau seront nécessaires.
  2. il faut impérativement que vous soyez connecté en wifi (y compris quand vous rentrez chez vous), et perso le wifi de mon téléphone n'est pas toujours activé.

La méthode que j'ai préféré mettre en place consiste à utiliser Owntracks (sorte de google maps mais basé sur OpenStreetView) et qui permet de reporter sa position via un Broker MQTT.
L'appli sur le téléphone poste la position dans le broker qui sera consommé par Home Assistant lui aussi connecté à ce même broker.

On va commencer par déclarer notre device_tracker qui permettra de tester l'état de son téléphone via Home Assistant (ou tout du moins sa position) :

device_tracker:
  platform: owntracks

et on déclare en plateform "owntracks".

Ensuite il faudra s'inscrire sur MQTT Broker pour se créer un broker personnel, je vous conseille ce site :

https://www.cloudmqtt.com/

Une fois notre compte créé et notre Broker configuré on rentre les paramètres adéquates sous Home Assistant (dans le fichier de configuration) :

mqtt:
   broker: axx.cloudmqtt.com
   port: 16047
   client_id: home-assistant-1
   keepalive: 60
   username: login
   password: mdp

A noter que tous ces paramètres sont récupérables via l'interface d'administration de cloudmqtt.

Ensuite il faudra configurer le fichier known_devices.yaml en spécifiant un nom pour le device concerné comme suit :

mon_device:
  name: toto
  mac: 
  picture: 
  track: yes
  hide_if_away: no

Le track yes permet de suivre la position du telephone, et picture nous permettra d'ajouter une photo à notre device.
Ca évitera d'avoir une bulle avec le nom toto mais plutôt une bulle avec notre photo.

OK là on commence à être bien.

Pour allumer ou éteindre les lumières avec OwnTracks donc quand on part ou rentre chez soi voici la config :

  - alias: "Allume tout en arrivant à la maison"
    trigger:
     - platform: state
       entity_id: device_tracker.mon_device
       from: 'not_home'
       to: 'home'
    action:
        service: light.turn_on
  - alias: "Eteint tout en partant de la maison"
    trigger:
     - platform: state
       entity_id: device_tracker.mon_device
       from: 'home'
       to: 'not_home'
    action:
        service: light.turn_off

Pour le reste de la configuration ça reste personnel, mais je vous livre quand même l'automation pour éteindre les lumières quand on joue une musique ou un film via chromecast, et des les allumer quand on met sur pause ou quand on arrête la lecture.

  - alias: "Chromecast paused/stopped"
    trigger:
      - platform: state
        entity_id: media_player.chromecast2
        from: 'playing'
    condition:
      - platform: state
        entity_id: sun.sun
        state: 'below_horizon'
    action:
        service: scene.turn_on
        entity_id: scene.Allume
  - alias: "Chromecast playing"
    trigger:
      - platform: state
        entity_id: media_player.chromecast2
        to: 'playing'
    condition:
      - platform: state
        entity_id: sun.sun
        state: 'below_horizon'
    action:
        service: scene.turn_on
        entity_id: scene.Eteint

Pour info le entity_id correspond aux ambiances (scenes) créées.
Perso j'ai fait une scene allume et éteint pour simplifier la configuration ci dessous les scenes que j'ai configurées.

scene:
  - name: Salon_normal
    entities:
        light.bibliotheque:
            state: on
            transition: 2
            brightness: 200
        light.hue_lightstrip_1:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]
        light.salon_couleur:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]
  - name: Salon_soft
    entities:
        light.bibliotheque:
            state: on
            transition: 2
            brightness: 10
        light.hue_lightstrip_1:
            state: on
            transition: 2
            brightness: 10
            xy_color: [ 0.1399, 0.0810 ]
        light.salon_couleur:
            state: on
            transition: 2
            brightness: 10
            xy_color: [ 0.1399, 0.0810 ]
  - name: RougeLove
    entities:
        light.bibliotheque:
            state: on
            transition: 2
            brightness: 170
        light.hue_lightstrip_1:
            state: on
            transition: 2
            brightness: 170
            xy_color: [ 0.6111, 0.3261 ]
        light.salon_couleur:
            state: on
            transition: 2
            brightness: 170
            xy_color: [ 0.6111, 0.3261 ]
  - name: Eteint
    entities:
        light.bibliotheque:
            state: off
            transition: 2
            brightness: 170
        light.hue_lightstrip_1:
            state: off
            transition: 2
            brightness: 170
            xy_color: [ 0.6111, 0.3261 ]
        light.salon_couleur:
            state: off
            transition: 2
            brightness: 170
            xy_color: [ 0.6111, 0.3261 ]
  - name: Allume
    entities:
        light.bibliotheque:
            state: on
            transition: 2
            brightness: 200
        light.hue_lightstrip_1:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]
        light.salon_couleur:
            state: on
            transition: 2
            brightness: 215
            xy_color: [ 0.4448, 0.4066 ]

Beaucoup d'exemple sont donnés sur le site je vous laisse faire mumuse avec le système qui pour moi est le plus flexible et le plus open que j'ai pu voir...

On peut notamment afficher la météo via le module forecast, ajouter une webcam pour voir sa maison une fois à l'extérieur en live mais aussi déclencher des actions sur le mouvement (ou le son), gérer ses prises connectées (et récupérer la consommation électrique), bref que du bon ce soft.

Scene et automatisation sous Home Assistant
Share this