Créer un mode présence/absence dans Home Assistant

Publié le 18 juillet 2019 Temps de lecture : 7 min.

La première étape, selon moi, lorsque l’on début en domotique est assez simple : exécuter des actions automatiquement lorsque vous quittez ou arrivez à votre domicile. Aujourd’hui, je vais vous expliquer comme configurer 2 automatisations simples pour gérer un mode présence/absence dans Home Assistant.

Avant de commencer à exécuter des actions, il va tout d’abord falloir que l’on réussisse à savoir si vous êtes présents chez vous ou non. Nous allons donc configurer pour cela un device tracker. Il en existe plusieurs dizaines comme le Wi-Fi ou le bluetooth de votre smartphone, votre position GPS via Google Maps ou OwnTracks ou encore la localisation de votre voiture.

Configurer un device tracker

Je vous recommande dans un premier temps de commencer avec un tracking simple basé sur le Wi-Fi de votre téléphone. À l’utilisation vous verrez que ce n’est peut-être pas le plus fiable (surtout avec les smartphones récents qui coupent le Wi-Fi pour optimiser la batterie), mais c’est relativement simple à mettre en oeuvre.

Voici ce que l’on retrouve dans mon fichier configuration.yaml. Un device tracker avec mon routeur Netgear Orbi et Google Maps également.

device_tracker:
  # Netgear Orbi
  - platform: netgear
    password: !secret orbi_pwd
    host: 192.168.1.XX
    port: 80
    accesspoints: node
    interval_seconds: 15
    consider_home: 180
    new_device_defaults:
      track_new_devices: true

  # Google Maps
  - platform: google_maps
    username: !secret email
    password: !secret google_pwd

Après un redémarrage de Home Assistant (vérifiez bien votre configuration avant tout de même via le bouton disponible en back), un nouveau fichier va apparaitre avec la liste des appareils découverts : know_devices.yaml. On retrouve ainsi mon téléphone ainsi que celui de ma copine.

pixel3_wifi:
  hide_if_away: false
  icon:
  mac: XX:XX:XX:XX:XX:XX
  name: Pixel 3
  picture:
  track: true

oneplus7_wifi:
  hide_if_away: false
  icon:
  mac: XX:XX:XX:XX:XX:XX
  name: OnePlus 7 Pro
  picture:
  track: true

Parfait, maintenant nous allons devoir créer un groupe d’utilisateurs avec ces appareils. L’idée étant que si tous les appareils sont absents, alors cela signifie que la maison est vide. Dès que un appareil apparait à nouveau, quelqu’un est à la maison.

Créer un groupe d’utilisateurs

Copier simplement ce bout de code suivant dans votre fichier configuration.yaml. Bien entendu, adaptez la partie avec vos appareils en reprenant le nom que vous avez défini dans la partie know_devices.yaml.

group: 
  all_users:
    name: all users
    view: true
    entities:
      - device_tracker.pixel3_wifi
      - device_tracker.oneplus7_wifi

J’ai donc un groupe qui se nomme « all users » qui tracke la connexion Wi-Fi du Pixel 3 et du OnePlus 7 Pro. Il nous reste plus qu’à créer deux automatisations pour gérer le mode présence/absence de la maison.

Automatisation : Mode présence

Le fonctionnement est simple : dès qu’un des appareils présent dans le groupe « all users » passe du statut « not_home » à « home », alors l’automatisation se déclenche, c’est ce qui va nous servir de trigger. Ajoutez le code ci-dessous dans automations.yaml.

- id: mode_presence
  alias: Mode presence
  trigger:
    platform: state
    entity_id: group.all_users
    from: 'not_home'
    to: 'home'
  action:
    - service: alarm_control_panel.alarm_disarm
      entity_id: alarm_control_panel.somfy_home_alarm
      #Macbook de Antoine
    - service: switch.turn_on
      entity_id: switch.XXX
      #Macbook de Magali
    - service: switch.turn_on
      entity_id: switch.XXX
      #Macbook de Magali
    - service: switch.turn_on
      entity_id: switch.XXX
      #Envoi message Telegram
    - service: notify.telegram
      data:
        message: 'Mode présence activé'

Dans mon cas, je désactive l’alarme Somfy et rallume mes prises connectées : MacBook Antoine, MacBook Magali et le bloc TV. Enfin, j’envoie une petite notification Telegram pour être averti que tout fonctionne bien dans un channel dédié. J’aurais pu aussi activer la ré-ouverture de mes volets, l’allumage de lumières, etc.

C’est simple mais ça fonctionne bien. Il faut environ entre 10 et 40 secondes pour que l’automatisation s’exécute !

Automatisation : Mode absence

Même chose maintenant avec le mode absence. On attend alors que TOUS les appareils du groupe « all users » soit considérés comme « not_home » pour déclencher l’automation.

- id: mode_absence
  alias: Mode absence
  trigger:
    platform: state
    entity_id: group.all_users
    from: 'home'
    to: 'not_home'
  action:
      #Alarme Somfy
    - service: alarm_control_panel.alarm_arm_away
      entity_id: alarm_control_panel.somfy_home_alarm
      #Lumières
    - service: light.turn_off
      entity_id: group.all_lights
      #Sonos
    - service: media_player.turn_off
      entity_id: media_player.salon
      #Riva
    - service: media_player.turn_off
      entity_id: media_player.riva
      #Macbook de Antoine
    - service: switch.turn_off
      entity_id: switch.XXX
      #Macbook de Magali
    - service: switch.turn_off
      entity_id: switch.XXX
      #Multimédia
    - service: switch.turn_off
      entity_id: switch.XXX
      #Envoi message Telegram
    - service: notify.telegram
      data:
        message: 'Mode absence activé'

Cette fois, je fais un peu plus de choses en activant l’alarme Somfy et en éteignant les lumières, enceintes connectées et les prises. La routine s’exécute généralement 2 à 3 minutes après mon départ de la maison.

Conclusion

Grâce à ce petit tutoriel, vous avez maintenant les bases pour gérer un mode présence/absence chez vous grâce à Home Assistant. Libre à vous ensuite d’ajouter des actions supplémentaires, des trackers supplémentaires pour améliorer la précision, etc.

De mon côté, je l’utilise depuis environ 1 mois et demi et je n’ai du avoir que 1 ou 2 faux positifs. Avant je me basais sur le système de Nest avec le Home/Away mais le délai, surtout au retour à la maison, était beaucoup plus long.

J’espère que ce tutoriel vous a plu. N’hésitez pas à me donner vos idées d’améliorations ou vos questions dans les commentaires. À bientôt !

Commentaires

Made with by Antoine Guilbert