How-to - Zo laat een ESP32 Home Assistant je voordeur lokaal ontgrendelen
20-09-2026 • 06:00
Privacyvriendelijke geofencing met Home Assistant
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.
Hoe werkt het?
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.
Wat heb je nodig?
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.
Home Assistant Companion voorbereiden
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 locatie-instellingen 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 veranderlijkste factor voor de reactietijd.
Home Assistant voorbereiden
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.
De ESP32 voorbereiden en flashen
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:
globals:
- id: laatste_ibeacon_melding
type: uint32_t
restore_value: no
initial_value: '0'
esp32_ble_tracker:
scan_parameters:
active: false
on_ble_advertise:
- then:
- lambda: |-
auto beacon = x.get_ibeacon();
if (!beacon.has_value()) return;
char buf[37];
beacon->get_uuid().to_str(buf);
std::string uuid(buf);
for (auto &c : uuid) c = tolower(c);
int rssi = x.get_rssi();
uint32_t nu = millis();
bool andere_beacon = id(laatst_geziene_ibeacon).state.compare(0, 36, uuid) != 0;
if (nu - id(laatste_ibeacon_melding) >= (andere_beacon ? 10000 : 60000)) {
id(laatste_ibeacon_melding) = nu;
id(laatst_geziene_ibeacon).publish_state(uuid + " (" + std::to_string(rssi) + " dBm)");
}
const std::string &lijst = id(uuid_lijst).state;
size_t start = 0;
while (start < lijst.size()) {
size_t eind = lijst.find(',', start);
if (eind == std::string::npos) eind = lijst.size();
if (lijst.compare(start, eind - start, uuid) == 0) {
id(signaalsterkte_telefoon).publish_state(rssi);
if (!id(openen_bij_eerste_ontvangst).state && rssi < id(minimale_rssi).state) return;
if (id(gematchte_uuid).state != uuid) id(gematchte_uuid).publish_state(uuid);
return;
}
start = eind + 1;
}
text:
- platform: template
name: UUID-lijst
id: uuid_lijst
mode: text
max_length: 255
set_action:
- lambda: |-
std::string opdracht = x;
for (auto &c : opdracht) c = tolower(c);
std::string lijst = id(uuid_lijst).state;
std::string uuid;
bool toevoegen = false, verwijderen = false, nieuw = false;
if (opdracht.empty()) {
lijst = "";
} else if (opdracht.size() == 37 && (opdracht[0] == '+' || opdracht[0] == '-')) {
uuid = opdracht.substr(1);
toevoegen = opdracht[0] == '+';
verwijderen = !toevoegen;
} else if (opdracht.size() == 9 && opdracht[0] == 'n') {
uint8_t bytes[16];
if (random_bytes(bytes, sizeof(bytes))) {
const char *hex = "0123456789abcdef";
for (int i = 0; i < 16; i++) {
if (i == 4 || i == 6 || i == 8 || i == 10) uuid += '-';
uuid += hex[bytes[i] >> 4];
uuid += hex[bytes[i] & 0x0f];
}
toevoegen = true;
nieuw = true;
}
}
if (toevoegen || verwijderen) {
std::string bijgewerkt;
size_t start = 0;
while (start < lijst.size()) {
size_t eind = lijst.find(',', start);
if (eind == std::string::npos) eind = lijst.size();
std::string item = lijst.substr(start, eind - start);
if (!item.empty() && item != uuid) bijgewerkt += (bijgewerkt.empty() ? "" : ",") + item;
start = eind + 1;
}
if (toevoegen) {
while (bijgewerkt.size() + 37 > 255) {
size_t komma = bijgewerkt.find(',');
bijgewerkt = komma == std::string::npos ? "" : bijgewerkt.substr(komma + 1);
}
bijgewerkt += (bijgewerkt.empty() ? "" : ",") + uuid;
}
lijst = bijgewerkt;
}
id(uuid_lijst).publish_state(lijst);
if (nieuw) id(nieuwe_uuid).publish_state(opdracht.substr(1) + ":" + uuid);
text_sensor:
- platform: template
name: Gematchte UUID
id: gematchte_uuid
- platform: template
name: Nieuwe UUID
id: nieuwe_uuid
icon: mdi:key-variant
entity_category: diagnostic
- platform: template
name: Laatst geziene iBeacon
id: laatst_geziene_ibeacon
icon: mdi:bluetooth-audio
entity_category: diagnostic
disabled_by_default: true
sensor:
- platform: template
name: Signaalsterkte toegestane telefoon
id: signaalsterkte_telefoon
unit_of_measurement: dBm
device_class: signal_strength
state_class: measurement
accuracy_decimals: 0
entity_category: diagnostic
filters:
- throttle: 1s
- timeout: 10s
number:
- platform: template
name: Minimale RSSI
id: minimale_rssi
icon: mdi:signal-distance-variant
entity_category: config
optimistic: true
restore_value: true
initial_value: -85
min_value: -100
max_value: -40
step: 1
unit_of_measurement: dBm
mode: box
- platform: template
name: Vertrekafstand
id: vertrekafstand
icon: mdi:map-marker-radius-outline
entity_category: config
optimistic: true
restore_value: true
initial_value: 200
min_value: 100
max_value: 5000
step: 10
unit_of_measurement: m
mode: box
- platform: template
name: Armafstand
id: armafstand
icon: mdi:map-marker-radius
entity_category: config
optimistic: true
restore_value: true
initial_value: 50
min_value: 20
max_value: 1000
step: 10
unit_of_measurement: m
mode: box
- platform: template
name: Zoekduur
id: zoekduur
icon: mdi:timer-outline
entity_category: config
optimistic: true
restore_value: true
initial_value: 5
min_value: 1
max_value: 60
step: 1
unit_of_measurement: min
mode: box
switch:
- platform: template
name: Openen bij eerste ontvangst
id: openen_bij_eerste_ontvangst
icon: mdi:bluetooth-connect
entity_category: config
optimistic: true
restore_mode: RESTORE_DEFAULT_OFF
- platform: template
name: Slot openen in plaats van ontgrendelen
id: slot_openen
icon: mdi:door-open
entity_category: config
optimistic: true
restore_mode: RESTORE_DEFAULT_OFF
- platform: template
name: Melding bij ontgrendelen
id: melding_bij_ontgrendelen
icon: mdi:bell-ring-outline
entity_category: config
optimistic: true
restore_mode: RESTORE_DEFAULT_ON
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.
De automatisering aanmaken
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'.
alias: Geofencing auto-unlock - Bob
mode: single
max_exceeded: silent
variables:
afstand_sensor: sensor.thuis_bob_distance
telefoon: notify.mobile_app_telefoon_bob
slot: lock.voordeur
uuid_lijst: text.geofencing_uuid_lijst
match_sensor: sensor.geofencing_gematchte_uuid
nieuwe_uuid: sensor.geofencing_nieuwe_uuid
vertrekafstand: number.geofencing_vertrekafstand
armafstand: number.geofencing_armafstand
zoekduur: number.geofencing_zoekduur
slot_openen: switch.geofencing_slot_openen_in_plaats_van_ontgrendelen
melding: switch.geofencing_melding_bij_ontgrendelen
triggers:
- trigger: state
entity_id: sensor.thuis_bob_distance
not_to:
- unavailable
- unknown
- trigger: homeassistant
event: start
id: start
actions:
- if:
- condition: trigger
id: start
then:
- action: "{{ telefoon }}"
data:
message: command_ble_transmitter
data:
command: turn_off
priority: high
ttl: 0
- action: text.set_value
target:
entity_id: "{{ uuid_lijst }}"
data:
value: ""
- condition: template
value_template: "{{ states(afstand_sensor) | float(0) > states(vertrekafstand) | float(99999) }}"
- wait_template: "{{ states(afstand_sensor) | float(99999) < states(armafstand) | float(0) }}"
- variables:
volgnummer: >-
{% set ns = namespace(h='') %}{% for i in range(8) %}{% set ns.h = ns.h ~ ('0123456789abcdef' | random) %}{% endfor %}{{ ns.h }}
- action: text.set_value
target:
entity_id: "{{ uuid_lijst }}"
data:
value: "n{{ volgnummer }}"
- wait_template: "{{ states(nieuwe_uuid).startswith(volgnummer ~ ':') }}"
timeout: "00:00:15"
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ not states(nieuwe_uuid).startswith(volgnummer ~ ':') }}"
then:
- stop: De ESP32 leverde geen nieuwe UUID. Staat het apparaat online en draait het het geofencingblok?
error: true
- variables:
uuid: "{{ states(nieuwe_uuid).split(':')[1] }}"
- action: "{{ telefoon }}"
data:
message: command_ble_transmitter
data:
command: ble_set_uuid
ble_uuid: "{{ uuid }}"
priority: high
ttl: 0
- action: "{{ telefoon }}"
data:
message: command_ble_transmitter
data:
command: turn_on
priority: high
ttl: 0
- wait_template: "{{ is_state(match_sensor, uuid) or states(afstand_sensor) | float(0) > states(vertrekafstand) | float(99999) }}"
timeout: "{{ (states(zoekduur) | float(5) * 60) | int }}"
continue_on_timeout: true
- if:
- condition: template
value_template: "{{ is_state(match_sensor, uuid) }}"
then:
- action: "{{ 'lock.open' if is_state(slot_openen, 'on') else 'lock.unlock' }}"
target:
entity_id: "{{ slot }}"
- if:
- condition: template
value_template: "{{ is_state(melding, 'on') }}"
then:
- action: "{{ telefoon }}"
data:
title: Geofencing
message: Het slot is automatisch geopend bij thuiskomst.
- action: "{{ telefoon }}"
data:
message: command_ble_transmitter
data:
command: turn_off
priority: high
ttl: 0
- action: text.set_value
target:
entity_id: "{{ uuid_lijst }}"
data:
value: "-{{ uuid }}"
Geofencingparameters afstellen
Onder '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:
| Instelling | Verklaring |
| Armafstand | Bepaalt op welke afstand van het huis geofencing wordt geactiveerd wanneer je het huis nadert. |
| Minimale RSSI | Bepaalt hoe sterk het telefoonsignaal minimaal moet zijn om het slot te openen. |
| Openen bij eerste ontvangst | Bepaalt of het slot direct bij de eerste ontvangst van het telefoonsignaal wordt geopend, ongeacht de minimale RSSI. |
| Slot openen in plaats van ontgrendelen | Bepaalt of naast de nachtschoot ook de dagschoot wordt geopend. Schakel deze instelling niet in als je slot het openen van de dagschoot niet ondersteunt. |
| Vertrekafstand | Bepaalt hoe ver je minimaal van huis moet zijn geweest voordat geofencing bij terugkomst wordt geactiveerd. |
| Zoekduur | Bepaalt hoelang de telefoon na het bereiken van de armafstand de beacon blijft uitzenden en het ongebruikte beacon-ID geldig blijft. |
| Melding bij ontgrendelen | Geeft een notificatiebericht als de automatisering je deur ontgrendelt. |
Hoe veilig is dit?
Geen 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 door de ESP32 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 gebruiken we niet, want deze 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. Een 'kloner' zal continu bij je in de buurt moeten blijven om het signaal te onderscheppen. Hoe korter de beacon uitzendt, hoe kleiner de kans om deze te onderscheppen. Lukt dat wel, dan kan de kloner misschien alsnog enkele seconden eerder naar binnen lopen dan jij. Ook dan geldt weer dat het moeilijker wordt om dit ongezien te doen bij een kortere uitzendperiode.
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.
Tot slot
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
Lees meer
Reacties (141)
Het is geen optie om zoiets te publiceren terwijl je weet dat er 'zwakke punten' in het ontwerp zitten maar die niet benoemt.
Hoe zwaar je tilt aan die zwakke punten is aan de lezer / degene die het implementeert. Maar die moet ik natuurlijk wel eerlijk informeren.
Voor mijzelf vind ik dit veilig genoeg, en besef daarbij terdege dat ik de beveiliging van mijn huis inclusief het achterdeurtje op een goed gelezen website publiceer. Aan de andere kant: Iedereen die mijn smartlockreviews leest kan zien dat er een manshoog raam naast mijn voordeur zit. Dat is een stuk ernstiger gat in de beveiliging dat acuut door iedereen misbruikt kan worden met eenvoudige gereedschappen (CVE 8/10 gok ik zomaar
Zoals @ApexAlpha zei: Er is nooit 'veilig', maar altijd 'veilig genoeg'.
Waar je die lat legt, bepaal je zelf.
Ik ben het eens dat een inbreker met eenvoudig gereedschap waarschijnlijk makkelijker toegang kan verkrijgen tot je woning via het raam, en zolang iemand met kennis van de zwakke punten van deze implementatie niet weet dat de deur op deze manier is beveiligd en diegene geen inbreker is zal het feitelijk risico niet groter hoeven worden.Aan de andere kant: Iedereen die mijn smartlockreviews leest kan zien dat er een manshoog raam naast mijn voordeur zit. Dat is een stuk ernstiger gat in de beveiliging dat acuut door iedereen misbruikt kan worden met eenvoudige gereedschappen (
Maar een raam of de voordeur forceren op mechanische wijze maakt nogal wat geluid en laat inbraaksporen achter, en dat kan de kans dat de inbraak slaagt kleiner maken en de kans dat de verzekering niet uit zal keren lijkt mij zo goed als uitgesloten. Dus hoewel het risico dat het fout gaat waarschijnlijk minimaal is, moet je wel beseffen dat als dit zwakke punt misbruikt wordt dat de gevolgen groter kunnen zijn dan bij een gebruikelijke inbraak.
Als je camerabeelden hebt van de inbraak en kunt bewijzen dat het slot gehackt is sta je wellicht sterker t.o.v. verzekering, maar ik verwacht gedoe zeker als het gaat om een DIY beveiliging als deze. Maar iedereen moet natuurlijk zelf het risico afwegen.
Naarmate meer mensen deze sloten zullen gaan gebruiken zullen er meer kwetsbaarheden opduiken.
Dank @Olaf !
Dan moet je helemaal niet beginnen asn Home Automatusering
Zigbee apparaten hebben geen mogelijkheid het internet op te gaan, de hub heeft in principe geen internet toegang nodig.
Wat is er dan onveilig aan?
Het is niet omdat iets niet aan het internet werkt, het perse veilig is. Tenzij de hele setup bekabeld is en de ota uit staat, kan je eraan. De vraag is eerder wie zich daarmee gaat bezig houden bij de gemiddelde particulier. (tot er iets geautomatiseerd op de 'markt' komt zoals bij auto's)
[Reactie gewijzigd door Yoshi op 20 september 2026 08:38]
Omdat het draadloos is? Met een gemiddeld goed geïsoleerd huis komt een Zigbee signaal amper buiten en het is niet alsof de spullen altijd in pairing mode staan dus wat is er dan onveilig aan?
Als voorbeeld: WPA-TKIP werd vroeger ook als veilig beschouwd, tegenwoordig kost het een minuut om in iemands wifi in te breken als deze nog gebruik maakt van WPA-TKIP (wat hopelijk niet het geval is).
Hier wil ik zeker niet mee zeggen dat je geen Zigbee moet gebruiken (ik gebruik het zelf ook), maar het is wel een "attack surface" die je in overweging moet nemen. Bedenk vooral wat voor jou "veilig genoeg" is. Schakel je alleen een paar lampen, of zit je complete fysieke beveiliging er op (rolluiken, flood light, sirene, sloten, toegangshek, etc).
Hoe vervelend is het als de voordeur door een foutje opengaat als je op vakantie bent? Ik heb zoiets wel eens gehad met nuki door gebruikersfout. Nou dat is geen fijn gevoel, gelukkig wel buurman kunnen inschakelen.
De meeste verkochte laadpaal was de newmotion Lolo 1 / 2, die hebben geen dynamische loadbalancing.
[Reactie gewijzigd door Vaevictis_ op 20 september 2026 14:35]
[Reactie gewijzigd door Hathi op 20 september 2026 17:04]
Er is nooit 'veilig', maar altijd 'veilig genoeg'.
Bovenstaande is anders dan op x meter afstand hangen, doen alsof je iets je op je telefoon doet terwijl je de sleutel kopieert.
Mogelijk dat de persoon die dat doet, het zelfs als ‘minder fout’ ervaart. Vergelijk het (kort door de bocht), meer mensen die anderen met de dood bedreigen of zeer racistische opmerkingen maken via social media. Geloof maar dat slechts een fractie van die mensen dat face-to-face (durven te) doen.
dus dan moet je snel naar binnen voor de eigenaar zelf binnen is. Daarna werkt de sleutel niet meer door de random generator?
Uiteindelijk met er een overeenstemming zijn 😊De willekeurfunctie van Home Assistant is een wiskundige reeks die je na genoeg waarnemingen kunt narekenen
In elk geval bedankt voor de verheldering 😊
Maar inderdaad. Als je zo graag wilt zijn er waarschijnlijk praktischere methoden 😊
Een slot openen met een slotenmakerset kost tijd in het openbaar en vereist een kunde (als je voor het eerst met een slotenmakerset aan de slag gaat zit je echt te prutten) en specifiek gereedschap.
Het afluisteren van Bluetooth signalen kan met een simpel computertje aan een powerbank onder een struik. Wanneer je de digitale sleutel hebt gekraakt loop je nonchalant het huis in. Dit kan door iedereen die toevallig een webpagina op het internet heeft gevonden.
Welke in de praktijk moeilijker/makkelijker is, verschilt per situatie en is weinig algemeens over te zeggen.
Zo zijn dimple keys (weet de Nederlandse naam even niet) moeilijker dan ‘normale’ sleutels. Of denk aan Mul T Locks. En uiteraard heb je daar ook betere en zwakkere sloten in. (En ik weet dat er filmpjes op youtube staan waar ook die sloten in een gecontroleerde omgeving (aan een bankschroef) in een paar minuten open zijn)
Ik vermoed het eerste en ben je nu de smartlocks in de minderheid zijn, veiliger met een dergelijk slot in mijn ogen.
Als je smartlocks wilt hacken zou ik vakantieparken en hotels proberen, daar heb je meer slagingskans met alle digitale sloten.
Ik zie liever transparantie: Een fabrikant die duidelijk aangeeft welke sloten een twee- of driesterren SKG klassificatie hebben. Een VPN-aanbieder die aangeeft dat totale privacy niet bereikt wordt door een VPN te gebruiken. 'Kan sporen bevatten van noten'.
Daarmee kraakt een fabrikant zijn product niet af, maar biedt consumenten de optie om geinformeerd wel of juist niet voor een product te kiezen.
[Reactie gewijzigd door OlafWeijers op 20 september 2026 13:25]
Als ik de LPL moet geloven, de traditionele sleutel van goede kwaliteit en een alarminstallatie.Wat is nou het meest veilig?
Verder kan je overwegen voor extra veiligheid om een rol concertina's te leggen met hier en daar een m14 of POMZ-2.
[Reactie gewijzigd door nullbyte op 20 september 2026 21:36]
Ik denk dat een goed slot met keurmerk en meerpuntssluitingen op dit moment het meest veilig is.
Er zit natuurlijk ook een keerzijde aan het zo moeilijk mogelijk maken om binnen te komen. Het kan je extra tijd kosten om snel buiten te komen bij brand, en het kan ook hulpdiensten belemmeren om snel binnen te komen in een medische noodsituatie.
Hoe heet deze site ook alweer?
Dat maakt fysieke sleutels niet nutteloos.
[Reactie gewijzigd door CH4OS op 20 september 2026 09:29]
Daarnaast zijn we geneigd om het oude vertrouwde altijd als veilig te beschouwen en nieuwe concepten zeer kritisch op veiligheid te controleren. Soms is een nieuw concept niet heel veilig maar is het oude vertrouwde concept nog onveiliger.
Ik zie dus niet in waarom je hiervoor een ESP32 zou nodig hebben.
Door het hele huis heb ik verschillende ESP's hangen, die ieder zijn eigen doel heeft. Niet zo heel lang geleden heb ik daarnaast de Bluetooth Proxy functie geconfigureerd, zodat HA door het hele huis devices kan oppikken. Stom toeval, maar begin van deze week had ik het idee of ik wellicht BLE kon gebruiken om mijn automation daarop af te stemmen. Als ik buiten te dicht bij mijn huis ben, of in de tuin/schuur zit, flippert wifi continue en worden zaken uitgevoerd die niet hoeven of wordt ik gek van mijn continue lopende beveiligingsflows. "Er staat iemand te lang bij mijn tuinpoort!". Ja, dat ben ik, ik sta daar al 15min onkruid aan het wieden.
Anyhow, om verder een lang verhaal korter te maken. Ik ben nu aan het experimenteren met Bermuda BLE Trilateration. Dit werkt ontzettend goed en als je jouw BLE proxies netjes hebt ingedeeld in een area en/of op verdieping, dan kun je nu opeens een geschatte locatie krijgen waar je telefoon of ander BLE device zich bevindt. Het is dus een van kamer naar kamer principe. Nu nog wat extra Bluetooth proxies hebben in de schuur en dichter bij de voordeur en kan ik weer verder om mijn automatisering te verfijnen. Omdat het zo goed en snel werkt (sneller dan wifi connectie meting + grace period) wil ik het later gebruiken voor de algehele presence detectie ipv wifi. Gewoon via de normale Personen optie.
PS: ongestoord mijn Unifi systeem updaten is daarbij een pluspunt
[Reactie gewijzigd door Aurora op 20 september 2026 12:32]
Ik zit dus in kamp @r2504, dit klinkt als veel moeite voor functionaliteit die al bestaat. Dat ibeacon verhaal lijkt me persoonlijk interessanter voor het volgen van de verlichting, of audio terwijl je ie door de kamers beweegt met bijvoorbeeld deze addon
https://github.com/agittins/bermuda. Maarja, zoveel mensen zoveel wensen
Als je zelf voor de voordeur staat is het natuurlijk een ander verhaal maar dan kies ik eerder voor een UniFi Access oplossing (met tal van toegangs methodes) dan een slim slot.
Op zich is het artikel wel interessant voor locatie bepaling binnen huis al heb ik een iPhone 🤭
hoe complex men het maakt ... je gaat je telefoon batterij uitputten door constant ble signalen te sturen (of je gaat je telefoon wakker houden om te testen of je al binnen berijk van je huis bent voordat je het BLE beacon aan zet...
hoe moeilijk is het om gewoon een shortcut op je telefoon te zetten die een signaal stuurt naar HA ...
telefoon -> he home assistant open de voordeur
HA -> zit je op het wifi ???
>> Ja == open deur
>> Nee == sorry man, maak eerst verbinding met het wifi of gebruik je sleutel.
Behalve dat iedereen dan de voordeur kan openen als je smartphone thuis is. Ook als je zelf thuis 's nachts slaapt. Verder is het dan insluiping en geen inbraak, want er was immers geen slot om iemand tegen te houden.In principe is het eerste prima om de status van het voordeurslot te bepalen. Als je dichtbij genoeg bent om met wifi te verbinden dan mag het slot open.
[Reactie gewijzigd door The Zep Man op 20 september 2026 11:29]
op je smartwatch of smartphone een widget met deur openen maar die alleen laten werken waneer je daadwerkelijk binnen wifi bereik bent (heb je een goede (ondersteunde) router kun je misschien zelfs kijken of je verbinding hebt met 5ghz of 6ghz (om verplicht nog dichterbij te zijn dan bij 2.4
GPS is zelfde verhaal, duurt veel te lang eer die mij in de geofence ziet. Ook gebeurt het random dat die denkt dat ik in het veld zit ipv thuis.
Een BT ibeacon was nog de snelste en meest betrouwbare manier zonder dat die mijn batterij leegzuipt.
Nu, ondanks al die dingen gecombineerd gebeurt het nog een paar keer per jaar dat k thuiszit en ineens alles uitgaat.
Probeer maar eens maandje je buitenverlichting in te schakelen o.b.v. wifi thuiskomst. Dat is bij lang en na niet zo snel en nauwkeurig als een PIR sensor.
Het is geen betrouwbare en snelle bron voor een slot.
Ik heb exact de situatie met Unifi apparatuur waarbij mijn bij AP bij de voordeur hangt, heb er wekenlang mijn alarm automatisch mee willen ontgrendelen en het is gewoon niet consistent genoeg. Er zijn wel wat tweaks waarmee je je telefoon sneller met netwerken kunt laten verbinden, maar het is gewoon niet ideaal.
Zaken als het in- en uitschakelen van alarmen of sloten moeten gewoon zonder nadenken snel en zonder problemen werken. Met de methodiek uit het artikel gaat dat om enkele seconden.
[Reactie gewijzigd door Spelvoutig op 21 september 2026 08:23]
Een opsomming van alle sloten die goed werken met Home Assistant gaat te ver maar elk slot met Matter-ondersteuning is lokaal te bedienen met Home Assistant, sommige kun je direct bedienen via bluetooth. Ondanks dat een slot goed werkt met Home Assistant kan het dus zijn dat je alsnog extra hardware nodig hebt voor de communicatie, zoals een bluetooth-module, Thread-radio of border-router.
Ik bedoel dus om te voorkomen dat iemand een of ander slot koopt, en daarna zegt dat je gedeelde ervaring niet klopt. Maar als diegene dan gelijk kijkt naar de Bold of Nuki, dan komt het er een stuk beter uit de verf. En het kan helpen om een aankoop te bepalen. (linkje via Pricewatch)
Ergens moet dit artikel ook wel een beetje to-the-point blijven. Het had ook deels kunnen ontsporen in een aankoopadvies-hoofdstuk voor het ESP32-experimenteerbord, ook in die markt is een hoop rommel te koop.
Je kunt mij natuurlijk altijd in de reacties onder het artikel of via DM om advies vragen, maar liever niet allemaal tegelijk op een zondag aub
De vraag is hoelang dit nog waar is. Met AI kan je, zeker als je een beetje kennis hebt, veel sneller tooltjes maken en dit soort zaken hacken. Het is met autosleutels ook al gedaan. Maar goed de doelgroep (als in targets) is klein.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.
Onze geheime diensten beschermen ons niet tegen deze ellende, want zij denken lekker mee te liften in deze backdoors. De oorlog tegen het eigen volk is belangrijker dan het veilighouden van de basis voor iedereen. Wat een debacle.
De grap is juist dat huisgeschreven automatiseringen juist daardoor veiliger zijn dan vertrouwen op de fabrikant, immers meerdere sloten in 1 keer kraken is boeiender dan 1 specifieke.Met AI kan je, zeker als je een beetje kennis hebt, veel sneller tooltjes maken en dit soort zaken hacken.
Detecteren of de telefoon thuis is via Wifi lijkt me ook een optie, maar kan wat trager zijn.
Voor wifi hetzelfde euvel; de iPhone verbind pas zodra je hem gaat gebruiken. Wanneer je iPhone stand-by is, zal hij dus niet met het wifi verbinden en is het voor zover ik weet onbruikbaar.
De kern is
Bij de Iphone van mijn dochter werkt het prima, ik weet niet of de BLE beacon of we wifi het eerste aanmeldt maar het alarm gaat daarop uit en ik heb vrijwel nooit dat ze binnen komt met het alarm aan. Ik gebruik een Fritzbox voor de presence detection van Wifi.Some BLE devices use a privacy feature called Resolvable Private Addresses to stop businesses from tracking you when you are out with your smart devices. Instead of having a single static address that can be used to track you, its Bluetooth address changes frequently. If you have Bluetooth enabled and functioning and know your device’s Identity Resolving Key, you can add it to Home Assistant as a Private BLE Device. We can then work out which random MAC addresses are related to the IRK and track those.
Overigens werkt dit bij Android ook, alleen dan is de beacon juist minder betrouwbaar. Dus daarvoor gebruik ik de in dit artikel vermelde methode met de companion app.
[Reactie gewijzigd door stat op 20 september 2026 09:39]
- Apple HomeKit om m’n aanwezigheid in een zone naar Home Assistant te pushen
- M’n Garmin horloge voor Bluetooth triangulatie
Praktische probleem waar ik tegenaan liep: m’n horloge zend geen signaal uit zolang hij verbonden is. Daarom heb ik op m’n telefoon een shortcut gemaakt die Bluetooth uitschakelt en na 2 minuten weer ingeschakeld.
Dit werkt zeer nauwkeurig en geef een extra laag aan beveiliging. Waterdicht? Nee zeker niet. Op termijn wil ik gezichtsherkenning toevoegen via de deurbel. Dat zou het geheel voldoende veilig maken voor lange termijn gebruikt.
- Telefoon in thuiszone en Apple watch binnen bereik
- Apple Watch binnen bereik en geslaagde vingerafdrukherkenning
- Telefoon in thuiszone en geslaagde vingerafdrukherkenning
Verder is de private BLE van Apple best veilig. Het is alleen lastig om de onderliggende sleutel te achterhalen als je niet ook een Mac gebruikt.
Mocht je je ESP32 buiten hangen vanwege de vingerafdruksensor, kun je ook nog een roterende sleutel te implementeren en sabotagesensoren toevoegen. Dan kun je het hele onwaarschijnlijke scenario voorkomen dat een inbreker je ESP32 probeert te hacken.
Wifi lijkt mij geen vereiste voor dit project? De vereiste is dat ESPHome met Home Assistant kan babbelen, en het liefst "zo vrij mogelijk". Standaard doet ESPHome dat via de "ESPHome API" over "het netwerk" (wifi / ethernet). Maar ESPHome heeft al een hele tijd ondersteuning voor Thread als netwerk protocol. En over Thread stuurt het vervolgens de "ESPHome API" als data laag. ESPs met Thread ondersteuning (zoals de ESP32-H2) integreren dus net zo goed als de wifi varianten. Mits je ze dus via Thread koppeltLet op: de ESP32-S2 en ESP32-H2 hebben respectievelijk geen bluetooth en wifi. Die moet je vermijden.
En de voordelen van wifi zijn hier verder niet van toepassing. Het enige voordeel is immers "grotere bandbreedte". Maar dit projectje heeft geen hoge bandbreedte nodig (dat zou alleen relevant zijn als je een camera of zo gebruikt). En een vereiste van de Thread oplossing is uiteraard dat je een Thread netwerk hebt. Dat de meeste, incl. de auteur, wellicht niet hebben.
Er zijn overigens al meer mensen met een Thread-netwerk dan je misschien zou denken. Een border-router aan Home Assistant koppelen is genoeg. Dat kan bijvoorbeeld een Nest-Hub zijn, Apple HomePod, of Apple TV. Het is dus niet altijd nodig om aparte hardware aan te schaffen voor Thread-ondersteuning. Bij mij loopt het Thread-netwerk al tijdenlang heel stabiel via twee Nest-hubs als border-router aangevuld met wat Ikea-lampen als routers.
Of ik het project thuis binnenkort naar Thread om ga zetten betwijfel ik overigens, op dit moment draait het op mijn 'Deurbel-ESP32' die met Geofencing een tweede functie heeft gekregen, en in de meterkast al op de juiste plek hing. Als die ooit aan vervanging toe is zal ik Thread zeker heroverwegen.
Om te kunnen reageren moet je ingelogd zijn
/i/2008364940.png?f=imagenormal)
:strip_icc():strip_exif()/u/1672520/crop61f1e29690ef3.jpg?f=community)
/u/2173836/crop670edc9ca7631.png?f=community)
:strip_icc():strip_exif()/u/637028/crop6a3e22601b0f7_cropped.jpg?f=community)
:strip_icc():strip_exif()/u/55486/crop6597c6403e549_cropped.jpg?f=community)
:strip_icc():strip_exif()/u/71414/images.jpg?f=community)
/u/93629/crop5f5b31620d196_cropped.png?f=community)
/u/125453/crop62335f519aebf.png?f=community)
:strip_exif()/u/456379/crop56cdb270cdd54_cropped.gif?f=community)
:strip_icc():strip_exif()/u/4202/crop59500930db0d0_cropped.jpeg?f=community)
:strip_icc():strip_exif()/u/208430/3f5a00acf72df93528b6bb7cd0a4fd0c.jpeg?f=community)
/u/176086/crop5f0823fa5e8d6_cropped.png?f=community)
:strip_icc():strip_exif()/u/52072/crop5de51ebf91960_cropped.jpeg?f=community)
:strip_icc():strip_exif()/u/133678/133963684346bda9327d0a6-1.jpg?f=community)
:strip_exif()/u/53522/crop583d477015a24.gif?f=community)
:strip_icc():strip_exif()/u/151605/1201277976.jpg?f=community)
/u/94596/crop643fb12fd4e6d.png?f=community)
:strip_icc():strip_exif()/u/198189/crop67ecf5f08705a_cropped.jpg?f=community)
:strip_icc():strip_exif()/u/140051/BSOD.jpg?f=community)
:strip_icc():strip_exif()/u/243344/crop5e013b248e994_cropped.jpeg?f=community)
:strip_exif()/u/121799/6d89df1809e5dffe256e3eddd2362554448.gif?f=community)
:strip_exif()/u/301133/crop6737b754ae5aa_cropped.gif?f=community)
/u/141998/crop57f8cd396d9ce_cropped.png?f=community)
:strip_icc():strip_exif()/u/45606/BigOne.jpg?f=community)