Gestion de présences avec HomeKit sur Home Assistant

Comme indiqué dans l'article décrivant ma box domotique, nous n'avons pas accès à la box domotique à distance et par conséquent, nous n'utilisons pas la localisation présente dans l'application mobile d'Home Assistant. Une solution simple et fiable est d'utiliser HomeKit (à l'aide de l'application Maison) depuis nos iPhone.

Prérequis

Pour gérer la présence d'autres personnes, il suffit de les inviter et de partager le contrôle de votre domicile.

Configuration sur Home Assistant

Dans un premier temps, il va falloir créer un input_boolean pour chacune des personnes dont vous voulez gérer la présence (en remplaçant xxx par le prénom de la personne par exemple) :

input_boolean:
  presence_at_home_xxx:
    name: xxx à la maison
    icon: mdi:account

Si vous n'utilisez aucun device_tracker, vous pouvez l'activer en ajoutant cette ligne à votre fichier de configuration :

device_tracker: []

Nous allons maintenant ajouter l'automatisation qui va faire la liaison entre l'input_boolean (HomeKit) et le device_tracker (Home Assistant).

Pour gérer la présence d'une seule personne :

automation:
  - description: Homekit to Device Tracker
    alias: homekit_to_device_tracker
    id: be7d19d0-0671-464c-9a45-01d7af3f854c
    mode: queued
    max: 10
    trigger:
      - platform: state
        entity_id: input_boolean.presence_at_home_xxx
      - platform: homeassistant
        event: start
    action:
      - service: device_tracker.see
        data:
          dev_id: homekit_presence_at_home_xxx
          location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx', 'on') else 'not_home' }}"

Pour gérer la présence d'au moins 2 personnes (à adapter pour plus de personnes) :

automation:
  - description: Homekit to Device Tracker
    alias: homekit_to_device_tracker
    id: be7d19d0-0671-464c-9a45-01d7af3f854c
    mode: queued
    max: 10
    trigger:
      - platform: state
        entity_id: input_boolean.presence_at_home_xxx1
        id: presence_at_home_xxx1
      - platform: state
        entity_id: input_boolean.presence_at_home_xxx2
        id: presence_at_home_xxx2
      - platform: homeassistant
        event: start
        id: homeassistant_start
    action:
      - if:
          or:
            - condition: trigger
              id: presence_at_home_xxx1
            - condition: trigger
              id: homeassistant_start
        then:
          - service: device_tracker.see
            data:
              dev_id: homekit_presence_at_home_xxx1
              location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx1', 'on') else 'not_home' }}"
      - if:
          or:
            - condition: trigger
              id: presence_at_home_xxx2
            - condition: trigger
              id: homeassistant_start
        then:
          - service: device_tracker.see
            data:
              dev_id: homekit_presence_at_home_xxx2
              location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx2', 'on') else 'not_home' }}"

Si vous filtrez les entités que vous envoyez sur HomeKit, n'oubliez pas d'ajouter les input_boolean pour la gestion de présences :

homekit:
  name: Home Assistant
  filter:
    include_entity_globs:
      - input_boolean.presence_at_home_*

Vous pouvez à présent redémarrer Home Assistant et vérifier que le ou les interrupteurs correspondant à la présence soient bien présent !

Configuration sur Maison

Répétez les opérations pour chacune des personnes dont vous gérez la présence :

Gestion de l'arrivée d'une personne

  1. Dans l’application Maison, accédez à l’onglet Automatisation. Touchez ou cliquez sur le bouton + en haut à droite, puis sélectionnez Ajouter une automatisation
  2. Touchez ou cliquez sur le bouton Des personnes arrivent
  3. Dans Quand, Touchez ou cliquez sur le bouton Quelqu'un arrive et choisissez une seule personne uniquement. Pour le Lieu, laissez sur Domicile et Heure sur Tout puis touchez ou cliquez sur le bouton Suivant en haut à droite
  4. Sélectionnez l'interrupteur xxx à la maison, puis touchez ou cliquez sur Suivant
  5. Réglez l'interrupteur pour qu'il est soit sur Allumer
  6. Touchez ou cliquez sur OK

Gestion du départ d'une personne

  1. Dans l’application Maison, accédez à l’onglet Automatisation. Touchez ou cliquez sur le bouton + en haut à droite, puis sélectionnez Ajouter une automatisation
  2. Touchez ou cliquez sur le bouton Des personnes partent
  3. Dans Quand, Touchez ou cliquez sur le bouton Quelqu'un part et choisissez une seule personne uniquement. Pour le Lieu, laissez sur Domicile et Heure sur Tout puis touchez ou cliquez sur le bouton Suivant en haut à droite
  4. Sélectionnez l'interrupteur xxx à la maison, puis touchez ou cliquez sur Suivant
  5. Réglez l'interrupteur pour qu'il est soit sur Éteindre
  6. Touchez ou cliquez sur OK

Pour chacune des automatisations, vous avez un bouton Tester l'automatisation, appuyer dessus pour voir le changement d'état de l'interrupteur et de device_tracker sur Home Assistant. Une fois le fonctionnement validé, vous pouvez ajouter le device_tracker à la personne concernée (Settings➔ People)

Ajout du device_tracker à un utilisateur sous Home Assistant
Ajout du device_tracker à un utilisateur sous Home Assistant

Conclusion

J'utilisais déjà cette méthode sur Jeedom et nous n'avons jamais eu le moindre problème de géolocalisation. Cette solution me sert pour beaucoup d'automatisation comme par exemple l'activation de l'alarme ou l'extinction des lumières quand la maison est vide.