De afgelopen jaren heb ik veel slimme sloten getest. Geofencing vind ik een van de fijnste functies. Die houdt je locatie bij en opent de deur automatisch als je na afwezigheid weer in de buurt komt.
Voor de functie ontkom je er niet aan je locatie te delen met de app die bij je slot hoort. Dat zal niet iedereen prettig vinden. Afhankelijk van de fabrikant komt je locatie in cloudsystemen terecht. Die data kan in verkeerde handen vallen of verkocht worden aan derden.
Om dat tegen te gaan, ben ik gaan experimenteren met Home Assistant om een eigen geofencingfunctie te bouwen waarbij je locatiegegevens in eigen beheer blijven. In dit artikel laat ik zien hoe je dit zelf kunt opzetten voor slechts een paar euro.
Home Assistant Companion deelt je locatie met Home Assistant en gebruikt je telefoon om een bluetoothbeacon uit te zenden. Deze functie werkt vooralsnog alleen met Android-telefoons. Gebruikers van een iPhone hebben dus een goede reden om over te stappen of zullen moeten wachten tot hun telefoon ook een beacon kan emuleren.
Zodra Home Assistant ziet dat je na afwezigheid weer in de buurt van je huis bent, draagt het systeem de Companion-app op om het beaconsignaal te activeren.
De bluetoothradio op het ESP32-bord luistert totdat die het signaal van de beacon ontvangt. Dat bevestigt dat je fysiek bij de voordeur bent aangekomen en is voor Home Assistant het sein om de voordeur te ontgrendelen.
Met Home Assistant en een slim slot heb je bijna alles al in huis. Om geofencing op te zetten, heb je drie componenten nodig. De eerste is een slim slot dat met Home Assistant verbonden is. De overige twee zijn de Home Assistant Companion-app op je smartphone en een experimenteerbord met een ESP32-microcontroller.
Van de ESP32-microcontroller zijn meerdere varianten verkrijgbaar. Voor geofencing hebben we een uitvoering met bluetooth en wifi nodig. Geschikte varianten zijn de ESP32, C3, C6 en S3. Let op: de ESP32-S2 en ESP32-H2 hebben respectievelijk geen bluetooth en wifi. Die moet je vermijden.
Ook een op de ESP8266 gebaseerd bord werkt niet. Het draait wel ESPHome, maar ondersteunt geen bluetooth en is dus niet geschikt voor dit doel.
Het ESP32-bord moet een plekje krijgen in de buurt van de voordeur of langs de route ernaartoe. Op de beoogde plek heeft het een USB-voeding nodig. De plaatsing ervan is erg belangrijk voor de timing. Als het bord te ver weg staat, zal geofencing niet of te laat werken.
Voor geofencing gebruikt Home Assistant Companion de locatie- en beaconfunctie. We gaan ervan uit dat je je locatie al deelt met Home Assistant. Zo niet, dan moet je locatiedeling eerst activeren.
Ga daarvoor in de app naar de instellingen van Home Assistant en kies de optie 'Companion-app'.
Daar kies je voor 'Sensoren beheren' en zoek je naar de groep bluetoothsensoren. Daarin open je de 'BLE-zender (Bluetooth Low Energy)'. Bovenaan dit venster activeer je de beacon. Verderop vind je wat geavanceerde instellingen. Hier kies je bij 'Adverteermodus' voor 'Lage latentie (10Hz)' en bij 'Zendvermogen' voor 'Hoog'.
Controleer ook of je de instelling hebt uitgeschakeld die het uitzenden van de beacon beperkt als je niet met wifi verbonden bent.
Voor een soepele werking mag de Companion-app niet slapen als je thuiskomt. Deze moet zo snel mogelijk reageren op een notificatiebericht met hoge prioriteit. Zorg er daarom voor dat het energiegebruik niet wordt beperkt. Dit doe je door in Android de batterijinstellingen voor de Companion-app naar 'unrestricted' te zetten. Om de beacon uit te zenden, heeft Home Assistant Companion onder de locatieinstellingen ook toestemming voor 'Apparaten in de buurt' nodig. Androids energiebeperking is de grootste vijand voor soepele geofencing, ook bij commerciële apps. Zelfs met optimale instellingen is dit de meest veranderlijke factor voor de reactietijd.
Om de geofencing enkel te starten als je naar huis reist, heb je de nabijheidssensor nodig. Die installeer je door op onderstaande link te klikken.
Nadat je de nabijheidssensor hebt geïnstalleerd, kies je in de configuratie eerst een zone (meestal 'Thuis') en daarna welke personen of apparaten je wilt volgen voor geofencing.
Op de ESP32 gebruiken we de ESPHome-firmware. Dit pakket integreert naadloos met Home Assistant en je kunt het gebruiken om allerlei hardware te bouwen op basis van ESP32- en ESP8266-microcontrollers.
Klik op onderstaande link om ESPHome in Home Assistant te installeren.
Na de installatie verschijnt de ESPHome Device Builder in de navigatiebalk van Home Assistant. Is die niet zichtbaar, dan kun je de app vinden onder Instellingen -> Apps. Hier vind je ook de optie om de app op de navigatiebalk te tonen.
Binnen de ESPHome Device Builder klik je rechtsonder op de knop 'Apparaat aanmaken'.
Zoek in de volgende stappen je experimenteerbord in de lijst met mogelijkheden. Staat het bord ertussen, kies het dan. Anders werkt 'Generic ESP32 board' voor deze toepassing ook prima met elke variant van de ESP32-microcontroller.
Kies je bij de apparaatnaam voor 'geofencing', dan komen de entiteitsnamen in de automatiseringen uit deze handleiding overeen met die in Home Assistant. Kies je een andere naam, gebruik die dan in de entiteitsnamen van de automatiseringen verderop in dit artikel.
Als je het apparaat hebt aangemaakt, kun je de configuratie bewerken. Aan de rechterkant van het bewerkingsvenster vind je de configuratie in tekstvorm. De standaardconfiguratie eindigt bij 'captive_portal:'.Laat de standaardconfiguratie staan, maar voeg onder de laatste regel de volgende tekst toe:
Hierna kun je de configuratie opslaan en installeren op de ESP32. De eenvoudigste methode is om het ESP32-bord via USB te verbinden met je computer en vanuit de browser te laten flashen.
De ESPHome Device Builder begeleidt je hier doorheen. Flashen via de browser werkt niet met Firefox, maar wel met Chrome of op Chromium gebaseerde browsers zoals Edge.
Als de firmware eenmaal is geflasht, kun je de ESP32 bijwerken via wifi en is USB daarvoor niet meer nodig.
De ESP32 kun je nu op zijn definitieve plek plaatsen: zo dicht mogelijk bij de voordeur of, indien mogelijk, langs het pad daarnaartoe, zodat hij sneller reageert.
Voor geofencing met de ESP32-scanner heb je in Home Assistant een automatisering nodig.
De automatisering in dit artikel staat in YAML-formaat. Je kunt die direct kopiëren en plakken. Hiervoor ga je in Home Assistant naar 'Automatiseringen en scènes → Automatisering aanmaken → menu rechtsboven → Bewerken in YAML'.
Alle stappen zijn samengebracht in één automatisering per gebruiker. Voor elke huisgenoot moet je een aparte automatisering aanmaken met de juiste entiteiten. In dit voorbeeld is de automatisering voor 'Bob'. Die naam heb ik vetgedrukt, zodat je deze voor je eigen situatie kan aanpassen.
Daarnaast is de naam 'geofencing' vetgedrukt. Als je de ESP32 zo hebt genoemd, hoef je niets aan te passen. Anders moet je de waarde naar wens aanpassen.
'Tot slot selecteer je onder variabelen het juiste slot. In het voorbeeld heet dit simpelweg 'voordeur'.
BobbobtelefoonbobvoordeurgeofencinggeofencinggeofencinggeofencinggeofencinggeofencinggeofencinggeofencingbobOnder 'Integraties -> ESPHome' vind je nu de ESP32-geofencingmodule. Je vindt er alle instellingen om de geofencing op je eigen situatie af te stemmen. Zo kun je de deur direct laten openen bij de eerste ontvangst van het juiste beaconpakket. Je kunt de deur ook pas laten openen als het telefoonsignaal sterker wordt omdat je dichter bij de deur bent.
De verschillende instelmogelijkheden werken als volgt:
InstellingVerklaringGeen enkele beveiliging is waterdicht en deze methode zeker niet. Beaconsignalen zijn niet versleuteld en kunnen worden opgevangen. In theorie kan iemand het beaconsignaal ontvangen en klonen. Als deze gekloonde beacon bij je deur wordt uitgezonden voordat je er zelf bent, wordt de deur geopend.
De ID's voor de beacons worden willekeurig gegenereerd voor elke geofencingsessie, waardoor een gebruikte code nooit meer zal werken. Hiervoor gebruikt de ESP32 zijn random number generator. Die haalt zijn willekeur uit ruis in de hardware en is daardoor niet te voorspellen. De willekeurfunctie van Home Assistant is een wiskundige reeks die je na genoeg waarnemingen kunt narekenen.
Wil je misbruik zoveel mogelijk uitsluiten, dan zul je de automatisering nauwkeurig moeten afstellen. Zo voorkom je dat de telefoon het beaconsignaal al uitzendt terwijl je nog kilometers van huis bent. Ook gaat de deur dan niet open terwijl je nog om de hoek komt aanrijden.
In zo'n geval zal een 'kloner' continu bij je in de buurt moeten blijven om het signaal te onderscheppen. Die kan dan misschien alsnog enkele seconden eerder naar binnen lopen dan jij.
De gemiddelde inbreker zal geen geavanceerde bluetoothhacking gebruiken om bij je in te breken. Die slaat een ruit in of breekt je slotcilinder. Heb je een conflict met een vaardige medetweaker of een binnen- of buitenlandse veiligheidsdienst, dan is het altijd een beter idee om helemaal geen slim slot of andere smarthomeapparatuur zoals een spraakbediende televisie te installeren.
Hoewel het heel jammer is dat de Companion-app nog geen beacons kan uitzenden op iPhones, is het relatief simpel en goedkoop om zelf geofencing te bouwen met Home Assistant. Daarmee houd je je gegevens uit handen van datahongerige fabrikanten die ze vaak maar al te graag verzamelen, analyseren en zelfs verkopen aan derden. Niet elke fabrikant van slimme sloten is even datahongerig. Toch is het nog beter om ze niet in verleiding te brengen door de data helemaal niet beschikbaar te stellen.
Redactie: Olaf Weijers • Eindredactie: Monique van den Boomen
Source: Tweakers.net