Een Raspberry Pi, de domoticasoftware Home Assistant en de mobiele app OwnTracks. Meer heb je niet nodig om de locatie van je huisgenoten en jezelf continu op een kaartje te tonen en op basis daarvan taken te automatiseren.

Koen Vervloesem

Er bestaan talloze clouddiensten die je toelaten om de locatie van je smartphone op te volgen en met anderen te delen, maar die hebben één nadeel: de dienst kent altijd je locatie. Gelukkig kun je ook zelf zo'n dienst opzetten, bijvoorbeeld met de combinatie van Home Assistant (https://www.home-assistant.io/) en OwnTracks (https://owntracks.org/), twee opensourceprogramma's. In dit artikel tonen we je hoe.

kaartje android 2

Met Home Assistant en OwnTracks toon je eenvoudig
de locatie van jou en je huisgenoten op een kaartje.

Wat heb je nodig?
Op je smartphone dien je OwnTracks te installeren. Deze app is gratis en bestaat voor Android en iOS. De app wacht continu tot je smartphone via de gps-ontvanger heeft gedetecteerd dat hij bewogen is, en signaleert dan je locatie aan een server naar keuze. Die verbinding met een server kan op twee manieren: via mqtt of http. Wij gebruiken in dit artikel http.

De server dien je ook zelf te installeren. Wij maken gebruik van de domoticasoftware Home Assistant. Die installeer je bijvoorbeeld op een Raspberry Pi. Home Assistant heeft een ingebouwd systeem voor device tracking, dat onder andere OwnTracks ondersteunt.

Altijd bereikbaar
Daarnaast dient je smartphone ook je server van overal te kunnen bereiken, en dat op een veilige manier. In OwnTracks dien je in te stellen met welke server de app dient te verbinden. Omdat het ip-adres dat je internetprovider aan je internetaansluiting thuis toekent regelmatig verandert, dien je gebruik te maken van dynamic dns: een programmaatje op je Raspberry Pi registreert een domeinnaam die elke keer dat je ip-adres verandert naar dit nieuwe ip-adres verwijst. Als je dan in OwnTracks die domeinnaam invoert, is je server altijd bereikbaar. En als we voor dit domein een gratis tls-certificaat aanvragen bij de dient Let's Encrypt, verloopt de communicatie met de server ook nog eens op een veilige manier. Gelukkig kent Home Assistant een add-on die dit allemaal voor ons regelt, inclusief hernieuwen van de certificaten: DuckDNS.

Maar als OwnTracks nu zijn locatie naar dit adres stuurt, komt die op je router aan, want je publieke ip-adres is dat van je router. Je dient in je router daarom ook nog port forwarding in te stellen: als OwnTracks dan op de opgegeven poort verbindt met je domein, wordt het netwerkverkeer automatisch doorgestuurd naar de juiste poort op je Home Assistant-server.

Andere manieren om je locatie te volgen
Home Assistant kun je met nog heel wat andere manieren dan OwnTracks integreren om je locatie op te volgen. Op de pagina met componenten voor aanwezigheidsdetectie (https://www.home-assistant.io/components/#presence-detection) staan een vijftigtal componenten. Zo kun je werken met Google Maps Location Sharing, iCloud, Geofency (een app voor iOS), GPSLogger (een opensource app voor Android) en Traccar (een gps-tracker met bijbehorende server).

Home Assistant installeren en configureren
Download Hass.io (https://www.home-assistant.io/hassio/installation/), een Linux-distributie die Home Assistant installeert. Download het juiste bestand voor de Raspberry Pi (tijdens de redactiesluiting was dat hassos_rpi3-1.13.img.gz) en volg de installatie-instructies. Nadat je je Raspberry Pi vanaf het microSD-kaartje met Hass.io hebt opgestart, duurt het de eerste keer een tiental minuutjes voor Home Assistant is geïnstalleerd en draait. Ga daarna in je webbrowser naar http://hassio.local:8123.

Zodra de installatie is voltooid, maak je in de webinterface een gebruikersaccount aan. Log daarna met diezelfde gebruiker in. Je krijgt nu een welkomstkader te zien met verwijzingen naar meer informatie. Klik gerust op Sluiten. Home Assistant is een volwaardig domoticasysteem met talloze mogelijkheden, maar wij focussen ons in dit artikel op de geolokalisatie. Als je met een klik op de drie horizontale lijnen linksboven het zijpaneel opent, krijg je bij Kaart een kaartje te zien waar we de locatie van je gsm op gaan plaatsen.

Dynamische domeinnaam
Voor de dynamische domeinnaam maken we gebruik van DuckDNS (https://www.duckdns.org/). Log in met een van de daar aangeboden types accounts (Google, Facebook, Twitter of Reddit) om een gratis account aan te maken. Voeg dan een subdomein toe onder .duckdns.org en klik op add domain. Kopieer het token dat je bovenaan onder je accountgegevens te zien krijgt, van de vorm 14f7e44a-32bc-46d4-96d7-dc083341f311.

Ga dan naar de webinterface van Home Assistant, klik links op Hass.io en dan bovenaan op Add-on Store. Klik daar bij de Official add-ons op DuckDNS en dan op Install. Na de installatie van de add-on krijg je onder het kopje Config de configuratie van de add-on te zien. Verander daar de waarde bij "accept_terms" in true, vul achter "token" je token van DuckDNS in en bij "domains" je subdomein van DuckDNS. Let erop dat je rond het token en de domeinnaam aanhalingstekens zet. Klik daarna op Save om je wijzigingen op te slaan en bovenaan op Start om de add-on op te starten.

duckdns configuratie 2

In de add-on DuckDNS configureer je je subdomein voor dynamische dns

Veilige verbinding
We dienen nu nog in te stellen dat de toegang tot Home Assistant via het tls-certificaat van Let's Encrypt wordt beveiligd. Log daarom met PuTTY (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) op je Pi in met de gebruikersnaam en het wachtwoord dat je na de installatie hebt ingesteld voor Home Assistant. Voer dan de opdracht nano /config/configuration.yaml in en voeg de volgende configuratie toe:

http:

  base_url: https://jesubdomein.duckdns.org

  ssl_certificate: /ssl/fullchain.pem

  ssl_key: /ssl/privkey.pem

Sla het bestand op met Ctrl+O en sluit nano af met Ctrl+X. Klik dan in de webinterface van Home Assistant links op Instellingen, dan Algemeen en Controleer configuratie. Als je Geldige configuratie! te zien krijgt, klik je onderaan op Herstarten om Home Assistant te herstarten.

Terwijl je wacht tot Home Assistant opnieuw is opgestart, ga je naar de instellingen voor port forwarding in de webinterface van je router. Vul daar als bronpoort 443 in (de poort van https), als doelpoort 8123 (de poort waarop Home Assistant luistert) en als doeladres het ip-adres van je Raspberry Pi waarop Home Assistant draait. Dat ip-adres kun je op de pagina met dhcp leases van je router vinden. Nadat je deze regel om de poort te forwarden hebt ingevoerd, kun je van buitenaf je Home Assistant bereiken via het adres https://jesubdomein.duckdns.org. Als je ook van binnen je netwerk hetzelfde adres wilt kunnen gebruiken voor toegang, dien je misschien in je router nog NAT reflection in te schakelen. Merk op: nu https is ingeschakeld, kun je niet meer via http de webinterface van Home Assistant bereiken.

OwnTracks integreren in Home Assistant
Na deze voorbereiding is het een kwestie van OwnTracks in Home Assistant te integreren. Klik daarvoor in het linkerpaneel op Instellingen en dan Integraties. Klik naast OwnTracks op Configureer en bevestig met Submit dat je OwnTracks wilt instellen. Je krijgt dan de informatie te zien die je in de OwnTracks-app op Android of iOS dient in te voeren.

Installeer nu OwnTracks op je Android- of iOS-apparaat. Ga na een druk op de drie horizontale lijnen linksboven naar Preferences en dan Connection, kies bij Mode voor Private HTTP en vul bij Host de lange url in die Home Assistant je geeft. Je kopieert die het best in een e-mail om ze daarna in het veld in Android te plakken, zodat je geen typfout maakt.

Voer daarna onder Identification bij Username je naam in en bij Device ID en naam voor je apparaat. Beide zijn nodig om de locatie van meerdere personen en apparaten te kunnen volgen. Als je nu weer op de drie horizontale lijnen in het hoofdvenster van de app drukt en dan onderaan Reporting inschakelt, krijgt Home Assistant je locatie door.

Op de kaart
In het overzicht van Home Assistant is nu een component toegevoegd die je naam heeft. Als je thuis bent, staat er Thuis bij; anders Afwezig. Klik je erop, dan krijg je nog meer informatie te zien, waaronder de exacte gps-coördinaten. En klik je links op Kaart, dan zie je je locatie op de kaart als een cirkel met de eerste letter van je naam erin. Klik je op die cirkel, dan krijg je dezelfde pop-up met informatie te zien. Overigens toont de kaart geen apparaten die zich binnen een zone rond je thuis bevinden.

Op de kaart zie je ook de locatie van je thuis in de vorm van een icoontje van een huis. Waarschijnlijk staat dat niet helemaal correct. Home Assistant heeft de coördinaten van je thuis bij de installatie immers bepaald op basis van je ip-adres, wat niet altijd accuraat is. Dat pas je dus het best eerst aan.

Log weer met PuTTY in op je Pi en voer weer de opdracht nano config/configuration.yaml uit. Helemaal bovenaan zie je regels zoals:

    latitude: 51.1928

  longitude: 4.43502

Dit zijn de breedtegraad en lengtegraad die Home Assistant voor de locatie van je huis gebruikt. Pas deze aan als ze niet kloppen. Vul bijvoorbeeld je adres in op Google Maps en bekijk daarna de url: achter het teken @ vind je de breedtegraad en lengtegraad. Je kunt uiteraard ook kijken welke gps-coördinaten OwnTracks van je smartphone teruggeeft als je je thuis bevindt en die als je thuiscoördinaten invullen. Sla je wijzigingen op met Ctrl+O en sluit nano af met Ctrl+X. Ga dan in de webinterface van Home Assistant naar Instellingen en dan Algemeen, klik op Controleer configuratie en als je geen foutmelding krijgt op Herstarten. Vanaf nu gebruikt Home Assistant je nieuwe locatie voor je thuis.

kaartje thuis 2       afwezig 3
Bijna thuis, zien we op de kaart van Home Assistant   Home Assistant toont continu
of je thuis of afwezig bent,
inclusief je gps-coördinaten

Zones toevoegen
Home Assistant kan nu zien wanneer je thuis bent, maar je kunt ook andere plaatsen definiëren. Elke plaats die je zo definieert, heet een zone. Ga in het menu Instellingen naar Integraties en klik naast Zone op Configureer. Geef je nieuwe zone een naam (bijvoorbeeld 'School') en vul de breedtegraad en lengtegraad in.

Optioneel kun je ook de straal (in meters) invullen rond de gps-coördinaten die je als de zone beschouwt. Vul je hier niets in, dan kiest Home Assistant een straal van 100 m. Andere optionele informatie is het pictogram waarmee de zone op je kaart wordt getoond. Bezoek daarvoor de cheatsheet van de website Material Design Icons (https://materialdesignicons.com/cheatsheet), kies een icoontje uit en neem de naam die ernaast staat (bijvoorbeeld mdi-school), maar vervang het eerste streepje door een dubbele punt (in dit geval mdi:school). Vul dit bij de zoneparameters in het tekstveld voor het pictogram in en klik op Submit om de zone toe te voegen.

zone 2

Door zones in te stellen, geef je Home Assistant
kennis over je aanwezigheid in specifieke locaties

Als je dit nu voor elke locatie doet waar je je regelmatig bevindt en je OwnTracks op alle smartphones van jou en je huisgenoten instelt, kan iedereen op de kaart van Home Assistant zien waar de anderen zich bevinden. Bovendien toont Home Assistant in zijn overzicht van elke persoon de locatie: Thuis als je thuis bent, de naam van de zone als je je in die zone bevindt en Afwezig als je je in geen enkele van de zones bevindt.

Automatische reacties op je locatie
En zo komen we tot het sluitstuk van dit artikel: Home Assistant automatisch laten reageren op je locatie. Dat is niet zo heel moeilijk. Klik op Instellingen en dan Automatisering. Klik onderaan rechts op het plusteken om een nieuwe automatisering aan te maken.

automatisering 2

Home Assistant zaken laten automatiseren op basis van je locatie is heel eenvoudig

Geef je automatisering een naam die beschrijft wat ze doet, kies als triggertype Zone, kies uit de uitklaplijst de entiteit waarvan je op de locatie wilt reageren (je gsm) en kies dan uit de volgende uitklaplijst de zone. Vink daarna Betreden of Verlaten aan. Hiermee definieer je dat de automatisering wordt geactiveerd als je een specifieke zone betreedt of verlaat.

Eventueel kun je nog voorwaarden toevoegen, zoals dat de automatisering alleen actief wordt op specifieke tijdstippen. Kies tot slot welke actie de automatisering zal uitvoeren. Laat bijvoorbeeld het type actie op Service aanroepen staan en kies als service persistent_notification.create. Bij Service data vul je het volgende in:

{

  "title": "Koen vertrekt",

  "message": "Koen is vertrokken!"

}

Klik tot slot onderaan rechts om de automatisering op te slaan. Als je nu de ingestelde zone verlaat, krijg je in het overzicht van Home Assistant een melding. Uiteraard kun je op dezelfde manier veel complexere zaken automatiseren op basis van je locatie.

Automate
Een andere leuke app om in combinatie met Home Assistant te gebruiken, is Automate (https://llamalab.com/automate/). Hiermee kun je bijvoorbeeld een scriptje maken dat een boodschap naar Home Assistant stuurt zodra je smartphone via Bluetooth verbinding maakt met de carkit van je auto. En op die boodschap kan Home Assistant dan weer reageren door je huisgenoten automatisch te verwittigen dat je met de auto bent vertrokken...