Trackeig de la nostra localització a casa amb Home Assistant

En aquest post vam veure una cosa molt interessant, i no és més que la possibilitat de seguir o atrakejar certs dispositius bluetooth (polseres intel·ligents, telèfons mòbils…) per casa, amb l' objectiu de localitzar la posició en tot moment per realitzar automatitzacions.

El que s'ha dit, tots a dia d'avui tenim un telèfon mòbil que ens segueix a tot arreu, o portem una polsera intel·ligent o smartband, tots aquests dispositius tenen bluetooth, i podem fer servir la direcció MAC de cada dispositiu per localitzar-lo dins de casa nostra. Per a què? Doncs primer per estadística, podem visualitzar quant temps passem i on, és molt curiós. Òbviament ho podrem fer per encabir automatitzacions, per exemple, si és de nit i estàs a l'habitació i la porta d'entrada a casa no està tancada amb clau, doncs que es tanqui. Quan arribis a la cuina al matí et dels bons dies, et posi les notícies… O jo què sé, per pintar-nos directament al Floorplan o pla animat de casa nostra, asseguts al sofà, menjant, dormint… 😉 Ull, que també podem localitzar els nostres animals, si els posem un tracker d'aquests bluetooth, i que si el gat/gos entra en una habitació que no ha de, que ens ho xiulen els altaveus de casa.

Com fem això? Hem de pensar que cal col·locar certs dispositius a cada habitacle de la casa, a cada habitació, bany… on vulguem localitzar. I la solució òbviament ha de parlar entre cada dispositiu, per saber de quin estem més a prop.

La millor solució personalment si no tens aquests dispositius és basar-te en ESP32-mqtt-room, que mitjançant unes plaques basades en el xip ESP32 i sobretot molt barates podràs repartir i amagar fàcilment per casa. He de dir-vos que jo utilitzo aquesta solució durant un any aproximadament, al final migraré a la solució que veurem avui en aquest post, ja que com tinc diverses Raspberry Pi repartides per casa, no em costava gens afegir aquesta funcionalitat. Un dia si m'avorreixo faig un post per a l'ESP32-mqtt-room, que també està molt xulo.

El que s'ha dit, avui veurem room-assistant, una solució boníssima també, i que podrem instal·lar i córrer a les nostres volgudes Raspberry Pi, i per suposat com l' anterior opció, totalment integrable en el nostre Home Assistant ¡així que atents!

Instal·lació a Raspbery Pi,

Comencem! Seguirem aquests passos a cada Raspberry Pi que tinguem i vulguem instal·lar-li room-assistant, el primer, instal·lar NodeJS:

curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

Instal·lem totes les dependències que necessitarem:

sudo apt-get update && sudo apt-get install -y build-essential libavahi-compat-libdnssd-dev bluetooth libbluetooth-dev libudev-dev libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

Instalamos room-assistant, class-transformer i class-validator:

sudo npm i --global --unsafe-perm room-assistant sudo npm install i --global class-transformer sudo npm install i --global class-validator

Afegim els següents permisos:

sudo setcap cap_net_raw + eip $(eval readlink -f 'which node')
sudo setcap cap_net_raw + eip $(eval readlink -f 'which hcitool')
sudo setcap cap_net_admin +eip $(eval readlink -f 'which hciconfig')

Sincerament no recordo gaire bé perquè hi ha el següent, però ho tinc documentat 🙂

sudo nano /etc/avahi/avahi-daemon.conf enable-dbus=yes

Creem el directori i el fitxer de configuració per a room-assistant (ull que després omplim el fitxer de configuració, només perquè sàpigues on queda):

mkdir -p ~/room-assistant/config touch ~/room-assistant/config/local.yml

Abans de començar amb el fitxer de configuració, vam crear el servei per arrencar room-assistant:

sudo nano /etc/systemd/system/room-assistant.service

I introduïm la següent configuració al servei:

[Unit]
Description =room-assistant service

[Service]
ExecStart=/usr/bin/room-assistant WorkingDirectory=/home/pi/room-assistant Restart=always RestartSec=10 User=pi

[Install]
WantedBy=multi-user.target

Habilitem el servei, l'iniciem (bo abans d'iniciar-lo hauràs de tenir el fitxer de configuració per al teu room-assistant que veurem a continuació) i verificam que està arrencat:

sudo systemctl enable room-assistant.service sudo systemctl start room-assistant.service sudo systemctl status room-assistant

Fitxer de configuració de room-assistant, de exemple individual, o sigui, una Raspberry Pi funcionant de manera individual, sense parlar amb la resta de Raspberrys, al qual li indicarem un nom a 'instanceName', afegirem les direccions MAC dels dispositius bluetooth a trackejar o perseguir en 'addresses', i important, indicarem el nostre servidor broker MQTT, per enviar-li les dades:

global:
  instanceName: Garatge integrations:
    - homeAssistant
    - bluetoothClassic homeAssistant:
  mqttUrl: mqtt://DIRECCIÓN_IP_BROKER_MQTT:1883
  mqttOptions:
    username: USUARI password: CONTRASENYA bluetoothClassic:
  minRssi: -20
  addresses:
    - 'FD:72:03:6B:BC:XX'
    - 'EA:4B:B2:2A:56:XX'
    - '7C:2F:80:EC:61:XX'
    - 'B4:C4:FC:64:19:XX'

I a continuació us passo un exemple en mode clúster del fitxer de configuració de room-assistant, que serà el que utilitzem quan tinguem més d'una Raspberry Pi amb room-assistant. A diferència de l' anterior, en aquest haurem d'afegir l'adreça IP de cada Raspberry Pi en peerAddresses:

global:
   cluster:
     autoDiscovery: false port: 6425
     peerAddresses:
       - DIRECCION_RASPBERRY_PI_1:6425
       - DIRECCION_RASPBERRY_PI_2:6425
       - DIRECCION_RASPBERRY_PI_3:6425
       - DIRECCION_RASPBERRY_PI_4:6425
       - DIRECCION_RASPBERRY_PI_5:6425
   instanceName: Cuina integrations:
     - homeAssistant
     - bluetoothClassic homeAssistant:
   mqttUrl: mqtt://DIRECCIÓN_IP_BROKER_MQTT:1883
   mqttOptions:
     username: USUARI password: CONTRASENYA bluetoothClassic:
   minRssi: -20
   hciDeviceId: 0
   addresses:
    - 'FD:72:03:6B:BC:XX'
    - 'EA:4B:B2:2A:56:XX'
    - '7C:2F:80:EC:61:XX'
    - 'B4:C4:FC:64:19:XX'

Bo, ara sí, després de gravar i tenir el teu fitxer de configuració, acusa't de reiniciar el servei (o dimoni) de room-assistant.

Configuració a Home Assistant,

¡Bueno, que ja el tenim! Ara només queda afegir en el nostre volgut. amarat i desitjat Home Assistant els dispositius que volem visualitzar, això és, els telèfons mòbils, polseres… així que anem al fitxer de configuració de Home Assistant, configuration.yaml i a la secció de 'sensor’ afegim el següent bloc, indicant la MAC i la descripció del dispositiu:

sensor:
...
  - platform: mqtt_room device_id: "b4c4fc6419XX"
    name: 'Teléfono móvil de Héctor'
    state_topic: 'room_presence'
    timeout: 5
    away_timeout: 0
...

I com sempre, gravem el fitxer i reiniciem Home Assistant perquè carregui la configuració. Podrem afegir cada Entitat que hàgim donat d'alta fàcilment amb el ratolí filtrant per dispositius de tipus 'room_presence'.

I res, deixem que la màgia corri, veurem com depenent d'on estem, anirem veient en aquest historial l'estat de l'Entitat i el seu posicionament.

Si se us va molt la pinça i teniu un Grafana per aquí, podreu visualitzar per exemple amb una vista de forma d'una manera molt senzilla els temps, i clar, això té un històric… A les cotilles, he tret el temps que passo al bany, jeje, i amb aquest tipus de que el tindríem:

SELECT state as metric, TIMESTAMPDIFF(SECOND, min(last_updated), max(last_updated)) as value, last_changed as time_sec FROM states WHERE $__timeFilter(created) and state = 'Cocina' and entity_id = 'sensor.maixu_dordoka_room_presence' GROUP BY last_changed ORDER BY created DESC ;

I bo, és hora de veure un exemple d'automatització, a les imatges ho veureu faciló, en aquest cas és, a la nit, quan la meva txabala o jo estem al llit, si no s' ha tancat amb clau la porta, doncs que la tanqui, a part ho notifiqui pels altaveus de casa, mani un Telegram, bla, bla…

Com sempre un plaer, espero que ho disfrutin, una abraçada i moltes gràcies per aquests likes a les xarxes socials que no costa res!! 🙂

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!