Indoor Localization con Google Home

Indoor Localization con Google Home

 

Dalla versione 0.98 Home Assistant non supporta più il componente googlehome

 

Dopo l’articolo sul gateway Bluetooth-MQTT a cui rimando per tutti i dettagli relativi a Bluetooth, BLE, RSSI, beacon, etc., presento una soluzione molto interessante per conoscere all’interno della propria abitazione in quale stanza (“room”) si trova un determinato dispositivo Bluetooth o BLE come lo smartphone o la smartband oppure un beacon NUT.

La soluzione si basa su una API non ufficiale di Google che permette di sfruttare gli assistenti Google Home (GH) o GH Mini per tracciare i dispositivi BT e BLE. Home Assisstant permette di sfruttare questa funzionalità dalla versione 0.83 con il componente googlehome, una volta quindi configurato il componente e configurata la parte di device tracking sarà possibile con un “template sensor” ad hoc conoscere la posizione del dispositivo bluetooth all’interno della casa.

Ovviamente questo è possibile in maniera esatta se abbiamo un GH per ogni stanza della casa, se non siamo in questa condizione il sensore indicherà la stanza nella quale si trova il dispositivo bluetooth scegliendo tra i GH disponibili: se ad esempio ho un GH in cucina e uno in camera da letto e mi trovo nello studio il sensore riporterà come posizione quella con il miglior parametro RSSI tra cucina e camera da letto. Affinchè il risultato sia parlante occorre dare al diposistivo GH il nome della stanza in cui è posizionato.

Per verificare quali dispositivi BT o BLE sta rilevando il GH si può interrogarlo direttamente inserendo in qualsiasi browser web:

http://indirizzo_IP_GH:8008/setup/bluetooth/scan_results

Configurazione

Nel file configuration.yaml o in un package apposito occorre aggiungere il componente googlehome, di seguito per esempio ne sono stati configurati due, ovviamente occorre inserire gli indirizzi IP dei vostri dispositivi GH:

Successivamente occorre configurare la parte di device tracking sempre in configuration.yaml o apposito package:

Dopo queste operazioni il file known_devices.yaml  inizierà a riempirsi di dispositivi tutti con il formato device_tracker.<home hub ip>_<device mac address>, al momento non c’è un modo per evitare questo, conviene quindi mettere  track_new_devices: false, in modo che effettivamente siano tracciati solo i dispositivi che effettivamente ci interessano.

Configurazioni template sensor

Sempre nel file configuration.yaml o apposito package va inserito il seguente sensore (ripreso e personalizzato dal forum ufficiale di Home Assistant), ovviamente occorre inserire il BT mac-address del dispositivo che volete monitorare.

Il sensore restituirà come valore la posizione del dispositivo bluetooth scegliendo con il criterio descritto in precedenza oppure se il dispositivo non si trova in casa restituirà come valore “Fuori”.

Utilizzi della indoor localization in Home Assistant

Gli utilizzi della indoor localization sono molteplici: si possono creare automazioni basate sulla posizione come attivazione/disattivazioni di:

  • allarmi,
  • riscaldamento/condizionamento,
  • luci o prese comandate

Se avete altre idee condividetele qui e sul forum!

Aggiornamento del 13/4/2019

Di seguito aggiungo un “workaround” per limitare la crescita del file known_devices.yaml, le istruzioni da seguire sono:

  1. inserire nel fle known_devices.yaml la riga #end-of-my-devices# oltre la quale saranno cancellate tutte le entity presenti
  2. inserire in /config lo script clean_knowndevices.sh e dargli i permessi di esecuzione con chmod +x /config/clean_knowndevices.sh
  3. creare in Home Assistant script e automazioni per eseguire una o più volte al giorno la “pulizia” 🙂

——————————————–

clean_knowndevices.sh

in configuration.yaml o in package apposito:

 

 

4 risposte

  1. Giampi ha detto:

    Per tutti quelli che avevano problemi a visualizzare i dispositivi BT e BLE visibili ad un Google Home ed ottenevano [], prima di visitare dal browser

    http://indirizzo_IP_GH:8008/setup/bluetooth/scan_results

    eseguite questo comando da terminale (unix):

    curl -d ‘{“enable”: true}’ -H “Content-Type: application/json” -X POST http://indirizzo_IP_GH:8008/setup/bluetooth/scan

    Soluzione postata su gruppo Telgram da Mirko B.

  2. Luigi ha detto:

    Salve , bellissima guida , c’è un modo per fare lo stesso con Amazon Echo ?

  3. Matteo ha detto:

    Non funziona più giusto?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Advertisment ad adsense adlogger