/ tech

Nut/iBeacon Detection de presence

Ca fait un moment que je cherche le moyen parfait pour la detection de présence.
Depuis mes débuts sous Home Assistant je trouvais plus pratique de faire le tracking via le Wifi de mon telephone, pour plusieurs raisons :

  • Tout d'abord mon telephone je l'ai toujours sur moi

  • Quand je me couche je passe mon telephone en mode avion, du coup ca me permet d'éteindre les lumières quand Home Assistant ne voit plus mon téléphone.

Double emploi, mais quelques inconvénients tout de même.

  • Android a ammené pas mal de changements sur la gestion de la connectivité, lié au processus Doze introduit sous Marshmallow et fortement renforcé sous Nougat.
    Pour économiser la batterie du telephone, Android met en pause forcée les processus Wifi (et Bluetooth par la même occasion), ce qui se traduit sous Home Assistant par des passages home/not_home surtout lors du passage en mode économie d'energie.

  • Forcément l'activation constante du Wifi provoque une baisse significative de la batterie du telephone.

J'ai donc cherché à combiner plusieurs types de tracking pour éviter ce soucis, sans réel succés.

La solution que je viens de mettre en place repose sur les Beacons et HappyBubbles.

Qu'est-ce qu'un beacon

Un beacon est un petit boitier (grand comme un porte clef la plupart du temps) qui n'a qu'un role, envoyer regulierement un message de type "coucou je suis là" via un protocole Bluetooth LE (Low Energy).
L'utilisation du BT LE, a comme avantage une tres faible consommation, les beacons avec une pile bouton tiennent donc entre 6 et 18 mois selon les modèles.

Le but serait donc de mettre ce beacon sur les clefs de maison par exemple, et de scanner via Home Assistant la présence ou non de ce beacon.

Un probleme de taille la Bluetooth Low Energy

Malheureusement, il m'a été impossible pour ma part de configurer correctement le BT LE sur mon installation, même si le scan est disponible, après plusieurs heures le module ne répond plus. la seule solution est de relancer le service bluetooth, de faire un hciconfig hci0 down, puis refaire un hciconfig hci0 up, pour pouvoir refaire un scan.
Il n'est donc pas possible d'utiliser ce module convenablement.

La solution devra passer par un autre moyen.

HappyBubbles

C'est là, que j'ai trouvé cette solution.
Happy Bubbles est une petite carte electronique alimenté par un microUSB, et qui a pour role de scanner les Beacons autour de lui et de reporter les scans dans un broker MQTT.
Le module Happybubbles est donc composé d'un puce BT LE ainsi que d'une puce Wifi.

Une fois configuré (en renseignant son broker MQTT avec username et password, ainsi que les informations Wifi), il ne reste plus qu'a configurer la partie Home Assistant pour finaliser l'installation.

Pour ma part j'ai renommé le hostname de mon HappyBubbles en home,ce qui permet de positionner le statut 'home' quand mon beacon est repéré, et 'away' lorsqu'il n'est plus vu.

Pour la partie configuration et installation du Happy Bubbles je vous renvoi à leur site web :
https://www.happybubbles.tech/presence/detector

Il est à noter que le but du Happy Bubbles est d'abord le positionnement indoor, il permet (si on en installe plusieurs) de connaitre la borne Happy Bubbles la plus près d'un beacon, donc sous entendue, le positionnement du beacon dans son domicile.

On peut par exemple demander à sa domotique : "Jarvis ou sont mes clefs de voiture ?".

Les clef ayant été repérées la derniere fois dans la chambre à coucher, Jarvis nous répondera : "Les clefs de voiture sont dans la chambre à coucher !"

Chouette idée, mais ce n'est pas ce dont j'ai besoin.

La seule configuration nécessaire coté Home Assistant est de créer un sensor par beacon ci dessous la config pour un beacon nut :

 - platform: mqtt_room
  device_id: c1f41191700e
  name: 'NutBlanc'
  state_topic: 'happy-bubbles/presence/ha'
  timeout: 5
  away_timeout: 60

Le parametre device_id est l'id du beacon (il peut etre recupéré via le soft presence https://github.com/happy-bubbles/presence). Ce soft presence permet notamment lorsque l'on a plusieurs HappyBubbles de positionner le beacon dans la piece de celui qui en est le plus prés, dans notre cas l'utilisation du soft presence n'est pas obligatoire.

Ne reste plus qu'a configurer les automations :

   - alias: "Retour maison"
    trigger:
     - platform: state
       entity_id: sensor.nutblanc
       from: 'away'
       to: 'home'
    condition:
      - condition: time
        after: '16:00'
        before: '23:30'
    action:
      - service: tts.google_say
        entity_id: media_player.kodi
        data_template:
          message: "{{ ['Heureux de vous voir','Bon retour à la maison','Salut'] | random }},  {%- if states.sensor.salon_temperature.state | int < 17 -%} pour information il fait un peu froid dans le salon {%- endif %}"
          cache: false
Nut/iBeacon Detection de presence
Share this