Door Olaf Weijers

Redacteur

Zo laat een ESP32 Home Assistant je voordeur lokaal ontgrendelen

20-09-2026 • 06:00

146

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.

Home Assistant add integration knop

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.

Home Assistant add integration knop

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

Reacties (146)

Sorteer op:

Weergave:

Ik snap niet dat je een hele how to schrijft en dan zegt: maar eigenlijk is dit (in theorie) helemaal niet veilig. Hoe zou iemand zich dan alsnog geroepen voelen om met je how to aan de slag te gaan? Dan heb je het artikel toch helemaal voor nop geschreven?
De andere reacties zijn me al voor, maar hadden het niet beter kunnen zeggen.

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.
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 (
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.

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.
Excact.

Leuk dat je het werkend hebt gekregen.
Maar er dat ik dat zou gaan doen. Er hoeft maar een smartass in de buurt te zijn en vroeg of laat ben je de spreekwoordelijke Sjaak.
Goed, sleutels kan je ook verliezen. Maar toch...
Ik wete het niet hoor, Ik ben zeer terughoudend in juist dit soort domotica.
Sommige zaken zijn echt geweldig, en ja ook ik gebruik een remote voord egaragedeur, Maar ik weet dat ie per definite onveilig is.... laat staan een electronische fence..
Mooi dat je de zwakke punten aanhaalt. Maar je gaat er vanuit dat om dit systeem te misbruiken de kwetsbaarheid per definitie zit in het opvangen van het signaal dat de deur opent door een derde. En deze dat dan moet afspelen voordat je zelf bij de deur bent. Dat hoeft natuurlijk niet zo te zijn. Er kan best een andere aanvalsvector gebruikt worden. Wellicht is er een misbruik mogelijk van het protocol of is het slot simpelweg met een sterke magneet te openen.

Naarmate meer mensen deze sloten zullen gaan gebruiken zullen er meer kwetsbaarheden opduiken.
Helemaal eens. Ik snap ook niet dat je een inherent onveilig systeem hier publiceert. Als toch iets veilig moet zijn zijn het de sloten op je deuren.
Persoonlijk apprecieer ik dat de auteur zelf een risico-analyse toevoegt aan het verhaal. Ik ben zelf bekend met HA en met slimme sloten, maar niet met ESP32, dus mij bespaart het alvast heel wat opzoekingswerk om zelf de risico's te gaan inschatten. Als ik het zo lees, dan vind ik het best wel meevallen, mits je de parameters goed instelt.

Dank @Olaf !
Tuurlijk is het cruciaal voor zo'n how to, tegelijkertijd kun je je afvragen hoe mensen zonder enige kennis van smart home sensoren deze passage lezen.
Alle slimme apparaten zijn per definitie onveilig.

Dan moet je helemaal niet beginnen asn Home Automatusering
Hoezo is alles per definitie onveilig?

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?
Ik heb geen internet nodig om aan een zigbee hub te kunnen? Met een Sonoff ZBDongle-E kom je al een heel einde (welja, als je in range zit, dus geen groot einde).

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]

Maar daarmee beantwoord je niet de vraag wat er dan onveilig aan is?
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?
"gemiddeld goed geïsoleerd" en "amper buiten" zijn geen garanties dat jouw Zigbee signaal niet op een tiental meters van jouw huis is op te vangen met een goede antenne. En met een beetje sterke zender en/of richtantenne komen jouw Zigbee devices ook binnen bereik van iemand buiten jouw huis. Dat er nu nog geen exploit beschikbaar is (dit is een aanname) wil niet zeggen dat het veilig blijft. En daarnaast staan Zigbee devices er niet om bekend dat ze regelmatig worden voorzien van nieuwe firmware.

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).
Dat is te kort door de bocht. Het opvallende aan dit artikel is dat er (terecht) wordt benoemd wat er allemaal mis kan gaan.
Dat is net een goed iets. Op die manier kan de persoon die dat wil implementeren voor zichzelf de afweging maken tussen gebruiksgemak en beveiliging.
Als mijn aqara bewegingssensor onveilig is, is dat geen direct veiligheidsgevaar waardoor mensen mijn huis in kunnen. Dit is wel een ander soort project.
Ik vind dit soort veiligheid maatregelen wel heel discutabel om mee te hobbyen. Zag laatst ook iemand die softwarematig loadbalancing had geimplementeerd in zijn groepenkast. In mijn optiek moeten dit soort functionaliteiten stabiel en betrouwbaar werken.

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.
Maar elke laadpaal is toch ook loadbalancing met software?
Niet elke laadpaal, en maakt uit of die door en leverancier is geleverd of dat je zelf een loadbalancing hebt geknutseld.
Welke laadpaal niet dan?
Als de laadpaal geen CT-klemmen heeft of werkt met een P1 meter. Heb er een aantal gehad die het niet hadden of optioneel. Kijk maar eens naar de goedkoopste laadpalen dat zijn veredelde stekkerdozen met wat regelelektronica.

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]

Ook met CT klemmen is de load balancing gewoon softwarematig hoor. De software in de laadpaal leest de waarden van de CT klemmen uit en berekent dan softwarematig of de laadpaal terug moet schakelen of niet. Of dat nou software in een laadpaal is of externe software, het blijft softwarematig en dus niet per definitie meer of minder betrouwbaar.

[Reactie gewijzigd door Hathi op 20 september 2026 17:04]

Ik ben heel benieuwd hoe je load balancing zonder software voor je ziet.
Vroeger noemden we dat 'parallel schakeling' :+
Grappig, maar je hebt maar één hoofdzekering. Je laadpaal zal toch echt een instructie moeten krijgen om trager te laden bij overbelasting.
Stekkerdozen op elkaar aansluiten is ook discutabel. Toch zie ik dat 90% van mijn zogenaamde 'slimme' kennissen dat gewoon doet.
Haproxy in de groepenkast (y)
Een 'sleutel' is een stuke ijzer in een specifiek vormpje geslepen. Iedereen kan dit stelen, klopieren of zelfs afkijken met een foto en een 3d printer tegenwoordig.

Er is nooit 'veilig', maar altijd 'veilig genoeg'.
Klopt, maar dat vereist dat je ‘zeer dichtbij’ komt, iets fysiek wegneemt (relatief hoge pakkans), en de persoon die de sleutel kopieert heeft je zelfs mogelijk op film (al kun je natuurlijk naar een stad 60km verderop en dan doet dit weinig).

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.
Maar die sleutel werkt dan maar een paar seconden toch als ik het bovenstaande begrijp?

dus dan moet je snel naar binnen voor de eigenaar zelf binnen is. Daarna werkt de sleutel niet meer door de random generator?
Uit het artikel:
De willekeurfunctie van Home Assistant is een wiskundige reeks die je na genoeg waarnemingen kunt narekenen
Uiteindelijk met er een overeenstemming zijn 😊
Misschien heb ik het niet duidelijk genoeg omschreven, maar ik noem specifiek de Home Assistant RNG omdat daar geen gebruik van wordt gemaakt. De RNG van de ESP32 is echt random en geen algoritme, en daarom de betere keuze. Wekenlang keys scannen heeft dus geen enkele zin.
Ah, dan had ik het of verkeerd gelezen, of het was rottig beschreven. 😊

In elk geval bedankt voor de verheldering 😊
Ik heb het aangepast waardoor het hopelijk nu wat duidelijker is.
Dat is inderdaad niet heel duidelijk omschreven. Althans dat haalde ik er niet uit
dat betekent alleen wel dat iemand dus een paar weken voor je huis moet gaan rondhangen elke keer als je thuis komt? Ja zeker mogelijk, maar als iemand zo graag binnenkomt dan zijn er wel andere manieren ook toch?
Nee, je legt een klein apparaatje met een powerbank in de buurt, of als je in dezelfde flat woont, gewoon op tafel.

Maar inderdaad. Als je zo graag wilt zijn er waarschijnlijk praktischere methoden 😊
Bekijk het kanaal van The Lockpicking Lawyer op YouTube eens. Mogelijk is een goed elektronisch slot veiliger dan een goed mechanisch slot. De cilinders die wij overal gebruiken heeft een ervaren lockpicker binnen nog geen twee minuten schadevrij open.
Het zijn twee andere soorten beveiliging.

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)
De vraag is dan of de gemiddelde inbraak door iemand gebeurd die in de buurt is en de een lockpicksetje en een schroevendraaier oid bij zich heeft. Of iemand die lamgs huizen loopt met een computer met apparatuur en de kennis om in de systemen te komen om je deur te openen.

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.
Je hoeft hem niet eens fysiek in handen te hebben, met een foto kan je al een kopie maken tegenwoordig.
Dat is het punt niet. Ik vind dat de auteur een beetje zijn eigen werk afkraakt en vraag me af hoe relevant het dan nog is om deze te plaatsen.
Volgende keer zal ik het niet vermelden, dan kun je in vol vertrouwen lekker aan de slag met zo'n project.

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]

Je hebt mij aan het denken gezet. Wat is nou het meest veilig? De oplossing in het artikel en de traditionele sleutel dus niet. Maar een slot dat opengaat door je vingerafdruk te scannen, dat lijkt mij moeilijk om erin te komen als het niet jouw vingerafdruk is
Lijkt me dan weer lastig als de stroom is uitgevallen en je naar binnen wil.
Wat is nou het meest veilig?
Als ik de LPL moet geloven, de traditionele sleutel van goede kwaliteit en een alarminstallatie.

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]

Dat ligt er ook weer aan waar jouw vinderafrduk wordt gevalideerd. Zit de electronica direct achter de vingerafdruksensor en gaat er een simpel maak-contact naar binnen om het slot te openen, dan zou het dus mogelijk zijn om die vingerafdruk sensor met een hamer van je muur af te slaan en de draadjes te verbinden om binnen te komen.

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.
Ik zie wel toegevoegde waarde, hij tweakt en deelt zijn bevindingen met ons.
Hoe heet deze site ook alweer?
Hij had ook een artikel over fysieke sleutels kunnen afronden met: iemand met een lockpicksetje komt vaak zo binnen.

Dat maakt fysieke sleutels niet nutteloos.
Nu kan elke lezer de afweging maken, dat lijkt me beter dan het verzwijgen en het later alsnog in de reacties onder het artikel te moeten terugvinden. Een artikel als deze ís Tweakers. Ik mis dit soort artikelen enorm, al heb ik zelf geen slim slot, maar dit soort artikelen horen mijns inziens écht op Tweakers. Mijn complimenten, @Olaf

[Reactie gewijzigd door CH4OS op 20 september 2026 09:29]

Dit soort beschrijvingen worden natuurlijk ook voor educatie gebruikt op technische cursussen of trainingen. Zelf probeer ik dit soort dingen ook uit om het allegaal te doorgronden maar niet om mijn voordeur te beveiligen.

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.
Omdat het in de praktijk waarschijnlijk wel veilig genoeg is.
Ik vind juist dat hij het heel goed nuanceert en uitlegt hoe het in werkelijkheid zit, zeg de realiteit van je veiligheid. Of ben je gewoon gestopt met lezen?
Ik vind het wel een tof artikel - omdat het kan. ik wist niet dat je op deze manier esp's kon inregelen. ik heb mij tot op heden alleen bezig gehouden met lampen, sensors en powerplugs en daar fancy node-red flow omheen gebouwd. Aangezien ik best wat esp's heb liggen ga ik eens kijken of ik hier ook mee aan de gang kan - eens kijken of ik wat gpio aansluiten kan schrijven of uitlezen.
Tja, en ondertussen zijn er genoeg mensen die een willekeurig smart lock op Internet kopen omdat ze denken dat het dan veilig is. Of een lockbox gebruiken om daar 'veilig' in op te bergen voor de schoonmaker. Er zijn maar weinig deuren waar je niet met een beetje voorwerk binnenkomt. De vraag is of de gemiddelde crimineel zover gaat. Met alle kans om gezien te worden of om op beeld te staan.
Home Assistent ziet gewoon of m’n telefoon met Wifi verbonden is of niet via Personen… op die manier weet die constant wie van de familie thuis is (en wanneer iedereen weg is wordt bijvoorbeeld radio uitgezet, verwarming minder, …)

Ik zie dus niet in waarom je hiervoor een ESP32 zou nodig hebben.
Klopt, echter het voordeel van Bluetooth is dat je fijnmazig kan werken. Ik heb jarenlang presence geconfigureerd op basis van wifi connectie. Ik heb verschillende methodes hiervoor gebruikt, eigen scripjes die op router/gateway zelf draaiden, integraties in HA en later in NodeRED om meerdere methodes te combineren. Het werkte namelijk niet altijd feilloos. Als je het goed aanpakt werkt het redelijk goed. Maar wat krijg je als resultaat? Een binair resultaat. Je bent (waarschijnlijk) thuis of niet.

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]

Wi-Fi: @r2504 is ergens in of om het huis.
Bluetooth beacon: @r2504 staat bij de voordeur.

Het eerste is niet handig om de status van een voordeurslot te bepalen.

[Reactie gewijzigd door The Zep Man op 20 september 2026 07:47]

Van mij mag de voordeur best open zijn als mijn telefoon op zolder ligt en ik koffie aan het zetten op het moment dat PostNL aan de deur staat ;)

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
Leuk voor inbrekers. Lig je lekker te slapen, zit je even in de tuin of je vergeet je telefoon en dan is je voordeur permanent open. Je krijgt niets van je verzekering als er geen inbraaksporen zijn omdat dieven zo naar binnen konden lopen.
Goh, ieder z’n scenario natuurlijk maar de voordeur kan ik steeds langs binnen gewoon opendoen als PostNL voor de deur staat.

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 🤭
waar ik me vooral aan stoor bij dit soort zaken is

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.
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.
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.
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.

[Reactie gewijzigd door The Zep Man op 20 september 2026 11:29]

dus vraag je om een handmatige actie,
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
Het duurt soms minuten eer mijn gsm verbinding maakt met wifi en heel zelden gebeurt het ook dat die disconnect van wifi terwijl ik thuis ben.

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.
Dat is hier ook het geval. En de kinderen hebben bluetooth best vaak uitstaan heb ik gemerkt.
Heb je wel eens bijgehouden hoe "snel" je telefoon in en uit je netwerk gaat?

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.
Verlichting wil je snel doen lijkt me, voor een slot is dat minder nodig in veel gevallen. Ik moet eerst m'n auto parkeren of fiets op slot zetten en dan loop ik pas naar de deur. In veel gevallen heb je daar ook prima WiFi omdat de meterkast in de buurt zit en daar vaak wel een AP ofzo hangt.
Mijn voorbeeld met verlichting is om je visueel te laten ervaren hoelang het duurt voordat een telefoon (in standby stand) daadwerkelijk nodig heeft om in het wifi netwerk te belanden.

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]

Wifi is onbetrouwbaar omdat je telefoon bij niet gebruik de wifi verbinding dropt om de accu te sparen. Bluetooth blijft meestal wel aan.
@OlafWeijers Welk slot heb je in gebruik? Of heb ik eroverheen gelezen? Voordat mensen naar de winkel rennen voor een slim slot, niet elk slim slot integreert goed in Home Assistant.
Dat wisselt, voor mijn andere reviews verander ik soms elke paar weken van slot. Deze automatisering heb ik ontwikkeld en getest met het Bold slot en de Nuki Ultra in de deur.

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.
Maar dan nog wel relevant om te vermelden welke hardware je hebt gebruikt waarmee jij je succes hebt behaald lijkt me.

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)
Daarvoor heb ik een hele reeks prachtige smartlockreviews geschreven ;-)

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 :+.
Ik heb persoonlijk een SwitchBot vingertje die op de knop van mijn garage duwt.
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.
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.
Aangezien de robots het hebben overgenomen in inbraakland... De ESP32 chip heeft geen backdoor maar een complete backroom-command-n-control-center. De ene helft van de API staat in de public specs, de andere helft heeft de cnc commando's. Plus het feit dat deze chip geen zak kost. Alleen al deze chip is een gevaar voor onze nationale veiligheid.

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.
Met AI kan je, zeker als je een beetje kennis hebt, veel sneller tooltjes maken en dit soort zaken hacken.
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.
Wat doet dit met de batterijduur van je telefoon?
Vrij weinig. De beaconfunctie verbruikt niet veel, en staat als je de parameters goed afstelt niet zo lang uit te zenden. Je kunt zelfs de hele dag een beacon uitzenden op je telefoon zonder dat dat veel merkbare impact heeft op de batterijduur.
Let op dat dit iets met een inbraakverzekering kan doen.
Volgens mij (maar kan zijn dat ik iets essentieels mis) kan het simpeler door gewoon esphome (of een shelly) een BLE proxy te laten zijn, met bv Bermuda triangulation kan je dan de beacon signalen opvangen. Met een iphone werkt dat overiges prima door PrivateBLE te gebruiken, hoef je niet eens de companion app voor te gebruiken (en is ook veiliger wellicht omdat dit signaal moeilijker te spoofen is).

Detecteren of de telefoon thuis is via Wifi lijkt me ook een optie, maar kan wat trager zijn.
Hoe werkt PrivateBLE? Voor zover ik weet zend de iPhone geen BT signaal uit als je niet die instellingen opent.

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 technische achtergrond kan je het beste hier vinden: https://www.home-assistan...tions/private_ble_device/

De kern is
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.
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.
edit:
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]

Thx! Dit wist ik dan weer niet, zeker interessant.
Ik heb voor een uitgebreidere optie gekozen die in de praktijk zeer nauwkeurig werkt. Zoals in het artikel al staat, werkt dit niet met iPhone. Daarom maak ik gebruik van de volgende 2 elementen:
  • Apple HomeKit om m’n aanwezigheid in een zone naar Home Assistant te pushen
  • M’n Garmin horloge voor Bluetooth triangulatie
Omdat enkel m’n telefoon (locatie) geen enkele beveiliging gaf, wilde ik een soort 2FA. Daarvoor gebruik m’n horloge. Dankzij de Bermuda integratie kun je ook nog eens nauwkeurig de locatie bepalen.

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.
Mooie oplossing! En inderdaad, niet helemaal waterdicht, maar daaraan schaven is een leuke hobby.
Dit is precies wat ik ook gedaan heb. Er zijn altijd 2 factoren nodig om de deur te openen. Je kunt ook nog een vingerafdruksensor aan de ESP32 hangen. Als je daarna meeneemt dat altijd 2 dingen waar moeten zijn:
  • Telefoon in thuiszone en Apple watch binnen bereik
  • Apple Watch binnen bereik en geslaagde vingerafdrukherkenning
  • Telefoon in thuiszone en geslaagde vingerafdrukherkenning
Dan zit je ook nog goed als een van de batterijen leeg is.

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.
Let op: de ESP32-S2 en ESP32-H2 hebben respectievelijk geen bluetooth en wifi. Die moet je vermijden.
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 koppelt :Y) Want Zigbee ondersteunen de ESPs met Thread ook. En met Zigbee ga je wel een totaal ander data protocol gebruiken waardoor je helemaal custom uit komt, ook in de Home Assistant integratie. Daar waar "ESPHome API over Thread" een 99% drop-in replacement voor "[ESPHome API over] wifi" is. Je hoeft alleen het wifi blok (met SSID, wachtwoord, ...) te vervangen door een openthread blok met de benodigde gegevens van het Thread netwerk. Voor de rest blijft alles werken zoals ervoor.

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.
Om het behapbaar te houden voor een breed palet aan lezers, heb ik gekozen om het voor dit project bij Wi-Fi en Bluetooth te houden. Daar heeft vrijwel iedereen de ondersteuning voor in huis. Het grote voordeel van Wi-Fi is dus eigenlijk praktisch, en niet technisch van aard.

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