Met Room Assistant is het mogelijk om nauwkeurig te bepalen waar iemand zich bevind. Althans, waar een bluetooth device zoals smartphone of smartwatch zich bevinden. Het idee is om een aantal ‘Raspberry Pi Zero W‘ te voorzien van ‘Room Assistant‘ en de bluetooth devices daarop te laten koppelen zodat in Home Assistant gedetecteerd kan worden op welke RPi de koppeling is gemaakt. Door deze RPI’s nu in de diverse ruimtes te plaatsen kan dus gedetecteerd worden of iemand thuis is en zoja, in welk gebied zich bevindt.
Als voorwaarde geldt dat MQTT reeds geïnstalleerd dient te zijn in Home Assistant.
Een Raspberry Pi Zero W koop je al voor 2 tientjes en daar komt dan nog een power supply en een SD-Card bij.
Met behulp van dew ‘Raspberry Pi Imager‘ kun je hier eenvoudig het ‘Raspberry Pi OS (other)‘ -> ‘Raspberry Pi OS (Lite)‘ op zetten en met Cmd + Shift + X kunnen de instellingen aangepast worden voor WiFi, de hostname, SSH, etc. Configureer WiFi en zet SSH aan en kies dan voor Save.
Hierna de RPi opstarten met deze SD-Card en inloggen via SSH met user ‘pi’ en je wachtwoord (default ‘raspberry‘). Voer de volgende commando’s uit:
sudo apt update && sudo apt upgrade wget -O - https://gist.githubusercontent.com/mKeRix/88b7b81e9bca044f74de1dc51696efb2/raw/799a20bca44cc61d8f8ae93878f2f28af8365a69/getNodeLTS.sh | bash sudo apt install -y libavahi-compat-libdnssd-dev libsystemd-dev bluetooth libbluetooth-dev libudev-dev libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev sudo npm i --global --unsafe-perm room-assistant sudo setcap cap_net_raw+eip $(eval readlink -f which node) sudo setcap cap_net_raw+eip /opt/nodejs/bin/node sudo setcap cap_net_raw+eip $(eval readlink -f which hcitool) sudo setcap cap_net_admin+eip $(eval readlink -f which hciconfig) sudo reboot
Vervolgens zorgen we ervoor dat room-assistant gestart wordt, ook na een herstart van de RPi. Daarvoor maken we het volgende bestand om room-assistant als een service te gebruiken:
sudo vi /etc/systemd/system/room-assistant.service
met hierin de volgende inhoud:
[Unit] Description=room-assistant service [Service] ExecStart=/usr/local/bin/room-assistant WorkingDirectory=/home/pi/room-assistant Restart=always RestartSec=10 User=pi [Install] WantedBy=multi-user.target
Het configuratie-bestand van room-assistant maken we in een nieuwe directory:
mkdir -p ~/room-assistant/config vi ~/room-assistant/config/local.yml
en zet hier de volgende inhoud in:
cluster: port: 6425 peerAddresses: - 192.168.1.11:6425 - 192.168.1.12:6425 global: instanceName: Kantoor integrations: - homeAssistant - bluetoothClassic homeAssistant: mqttUrl: 'mqtt://192.168.1.183:1883' mqttOptions: username: mqtt_user password: mqtt_password bluetoothClassic: minRssi: -20 hciDeviceId: 0 addresses: - 'AA:BB:CC:DD:EE:FF'
Cluster wordt gebruikt indien er meerdere Room-Assistant devices in het netwerk aanwezig zijn. Hiermee worden ze gegroepeerd tot één cluster.
Waarbij ‘InstanceName‘ de locatie van de RPi is, de ‘mqttUrl‘ de URL is van jouw MQTT Broker (met bijbehorende username en password) en onder ‘addresses‘ komt het MAC-Adres van het te volgen device, bijvoorbeeld je smartphone. Hierna kan ‘room-assistant’ gestart worden:
sudo systemctl enable room-assistant --now
In Home Assistant kunnen we nu zowel de RPI’s als de BT-devices zien die gekoppeld zijn. Hiervoor kijken we naar de ‘Apparaten‘ in de MQTT Integratie:
Momenteel zijn er twee RPI’s actief met ‘Room Assistant‘, met InstanceName ‘Kantoor’ en ‘Keuken’. Daar waar de iPhone het dichtst bij is, zal de locatie voor de iPhone worden. Klik op de iPhone zal laten zien waar dat is:
Dit kan nu gebruikt worden in een Lovelace dashboard en/of in automatiseringen.
Have fun!