ID.nl logo
Maak je eigen controller voor Home Assistant
© Reshift Digital
Huis

Maak je eigen controller voor Home Assistant

Je maakt je huis veel slimmer met slimme schakelaars en Home Assistant. Maar huisgenoten stellen het niet altijd op prijs als er complexe handelingen nodig zijn om bijvoorbeeld een automatisering te starten of alleen maar een lamp aan te zetten. Daarom gaan we in deze basiscursus een controller maken die nauw samenwerkt met Home Assistant. Met de controller kun je eenvoudig apparaten omschakelen, een automatisering starten of de status van apparaten weergeven. Voor weinig geld is je huis niet alleen slim, maar óók nog makkelijk te bedienen.

Wie eenvoudig apparaten wil omschakelen, een automatisering wil starten of de status van apparaten wil weergeven opgelet! In dit artikel leggen wij jou uit hoe je een controller kan maken die nauw samenwerkt met jouw Home Assistant. We bespreken:

  • Het downloaden van code
  • Het opzetten van een controller
  • ESPHome
  • Automatisering

Wil jij meer leren over slimme apparaten? Lees dan: Slimme tips voor slimme apparaten

Code downloaden

In deze basiscursus worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code ook downloaden en daarna bekijken of kopiëren. Zie het bestand code-hacontrol.txt, beschikbaar via https://kwikr.nl/codehacontrol.

Het is erg leuk om te automatiseren met Home Assistant. Alleen is het niet zo praktisch als je vervolgens de browser of een app moet starten om bijvoorbeeld een lamp te bedienen, een automatisering te starten of een bepaalde temperatuursensor uit te lezen. Er gaat weinig boven een simpele knop of een duidelijk schermpje. Daarom gaan we in deze basiscursus een controller maken die nauw samenwerkt met Home Assistant. Hiermee bedoelen we een klein kastje waarin je bijvoorbeeld drukknoppen, lampjes, een klein schermpje of sensoren voor beweging en temperatuur inbouwt. Het technische hart is een ESP32-microcontroller met ESPHome erop geïnstalleerd. Omdat de controller samenwerkt met Home Assistant kun je nu flexibel bijvoorbeeld een bepaald (slim) apparaat in je huis omschakelen, een automatisering activeren, de status van apparaten aangeven via leds of informatie weergeven op het display.

De ESPHome-software

De trouwe lezer zal eerder van ESPHome hebben gehoord. Met deze software kun je eenvoudig een microcontroller zoals de ESP8266 of ESP32 programmeren zonder dat je écht hoeft te programmeren. Via configuratiebestanden geef je aan wat voor componenten je hebt aangesloten en hoe er verbinding met je netwerk en met Home Assistant moet worden gemaakt. ESPHome schrijft deze configuratie dan naar de microcontroller. Wijzigingen kun je daarna zelfs op afstand ofwel ‘over-the-air’ maken. De microcontroller kun je eenvoudig toevoegen aan Home Assistant en zal hier daarna ook nauw mee samenwerken. We maakten in Computer!Totaal al eens een luchtkwaliteitsmonitor op basis van ESPHome. Die brengt voornamelijk sensorgegevens over naar Home Assistant, zodat je een goed beeld hebt van de luchtkwaliteit in een bepaalde ruimte. Raadpleeg dit uitgebreide artikel als je meer details nodig hebt (https://kwikr.nl/luchtmon), want in deze basiscursus geven we alleen beknopte aanwijzingen voor de installatie en het gebruik van ESPHome.

De ESPHome-software

De trouwe lezer zal eerder van ESPHome hebben gehoord. Met deze software kun je eenvoudig een microcontroller zoals de ESP8266 of ESP32 programmeren zonder dat je écht hoeft te programmeren. Via configuratiebestanden geef je aan wat voor componenten je hebt aangesloten en hoe er verbinding met je netwerk en met Home Assistant moet worden gemaakt. ESPHome schrijft deze configuratie dan naar de microcontroller. Wijzigingen kun je daarna zelfs op afstand ofwel ‘over-the-air’ maken. De microcontroller kun je eenvoudig toevoegen aan Home Assistant en zal hier daarna ook nauw mee samenwerken. We maakten in Computer!Totaal al eens een luchtkwaliteitsmonitor op basis van ESPHome. Die brengt voornamelijk sensorgegevens over naar Home Assistant, zodat je een goed beeld hebt van de luchtkwaliteit in een bepaalde ruimte. Raadpleeg dit uitgebreide artikel als je meer details nodig hebt (https://kwikr.nl/luchtmon), want in deze basiscursus geven we alleen beknopte aanwijzingen voor de installatie en het gebruik van ESPHome.

ESPHome vormt de basis van onze controller voor Home Assistant.

01 Microcontroller en voeding

In deze basiscursus kiezen we de ESP32 als microcontroller, verkrijgbaar vanaf ongeveer 5 euro. Die is wat krachtiger en heeft meer interfaces dan de ESP8266. Ook de extra GPIO-pinnen zijn prettig. Die kun je als ingang gebruiken voor bijvoorbeeld een drukknop of bewegingssensor, maar ook als uitgang voor het aanzetten van een led. Als voeding gebruiken we een aparte 5V-netadapter. Die hoeft niet veel stroom te leveren. Zo’n 250 mA voor de ESP32 en tot 20 mA voor elke led is voldoende. Een netadapter die 9 of 12 volt levert is meestal ook geschikt, maar controleer de vereisten voor de specifieke ESP32-controller die jij gekocht hebt. Intern brengt de ESP32 de aangeboden spanning overigens terug naar 3,3 volt, dat is waar de microcontroller zelf op werkt. Die spanning wordt ook aan de uitgangen aangeboden. De bewegingssensor die we gebruiken vraagt zo’n 5 tot 20 volt en zullen we daarom vanaf de ingangsspanning voeden. Heb je meer aansluitingen nodig dan de microcontroller je geeft? We laten zien hoe je dat met een I/O-expander kunt oplossen.

Voor het project gebruiken we de ESP32-microcontroller met ESPHome.

02 Opzet maken

Het is handig om eerst een opzet voor de controller te maken met de gewenste functies. Zelf plaatsen we bovenaan een rij met acht drukknoppen met led. Met deze drukknoppen schakelen we specifieke apparaten in of uit, waarbij de led de status van dat apparaat aangeeft. We noemen deze A1 t/m A8. Daaronder plaatsen we acht simpele drukknoppen die we B1 t/m B8 noemen. We gebruiken ze om bepaalde automatiseringen in Home Assistant te starten. Denk aan het instellen van de airco op een bepaalde temperatuur of het aan- of uitzetten van een hele reeks apparaten in één keer. Deze automatiseringen stellen we in Home Assistant zelf in. Jouw controller kan natuurlijk andere afmetingen hebben. Uiteraard kun je ook altijd meerdere kleinere controllers maken voor verschillende ruimtes. Je kunt ook sensoren inbouwen, bijvoorbeeld voor temperatuur of beweging, of een klein schermpje.

Bedenk een lay-out waarbij je rekening houdt met ruimte voor componenten.

03 Behuizing

Als je een idee hebt van de functies van je controller en de vereiste ruimte kun je een behuizing zoeken. Dat is in dit project ook de voornaamste kostenpost. Een aanrader is de lijn van de Duitse fabrikant Bopla die je bij Conrad kunt bestellen. Als je op ‘bopla bop’ zoekt, vind je meerdere opties. Bij het project hebben we de Bopla Bop 7.0 PQ-9016 consolebehuizing gebruikt (ongeveer 28 euro) die is 215 × 150 × 53 mm groot, in de kleur wit. Er is ook een zwarte uitvoering, de PQ-9005. Ook zijn er smallere uitvoeringen of juist grotere exemplaren. Let erop dat de behuizing diep en hoog genoeg is voor de componenten die je wilt inbouwen. De behuizing heeft een handig deksel dat je er af kunt schroeven zodat je de vereiste gaten kunt boren.

Als behuizing gebruiken we een model van de fabrikant Bopla.

04 Gereedschap

Veel gereedschap heb je niet nodig voor dit project. Een boormachine met een setje boren is genoeg, bijvoorbeeld metaalboren. Heel praktisch is een stapboor of trapboor. Dat is een boor waarmee je meerdere diameters kunt boren, zolang het niet te dik materiaal is. Je kunt daar ook meteen een beetje de bramen mee af frezen. Bovendien kun je grotere diameters boren dan de standaard boren die in je boormachine passen. Een schuifmaat is erg handig om de diameter van je componenten te meten als je die niet kent. Ook een multimeter is praktisch om spanning na te meten, zeker als iets niet werkt. Een soldeerbout met wat soldeertin is nodig om verbindingen te maken (zie ook het artikel over solderen op onze website: https://kwikr.nl/sold). Voor de verbindingen gaan we eenvoudige jumperdraden gebruiken met in ieder geval één vrouwelijke connector voor in de ESP32. Je zou ook een vrouwelijke voedingsaansluiting kunnen maken aan de achterkant van de behuizing waar je de connector van de netadapter in kunt steken.

Met een stappenboor kun je eenvoudig meerdere diameters boren.

05 Simpele drukknoppen

We gebruiken in het project componenten met ronde doorgang, zodat we alleen gaten in de juiste diameter hoeven te boren. Merk op dat we specifiek drukknoppen kiezen en geen schakelaars (zie het kader ‘Geen schakelaars, maar drukknoppen!’). We gebruiken eenvoudige kleurrijke drukknoppen met een doorgang van 16 mm. Je kunt deze op AliExpress voor weinig geld bestellen (ongeveer 0,25 euro per stuk), maar door de toegenomen verzendkosten via dergelijke routes kun je ook overwegen ze gewoon te bestellen via een Nederlandse (online) knutselwinkel. Let erop dat de drukknoppen wel minimaal 2 cm ruimte nodig hebben op je voorpaneel. Er zijn ook kleinere drukknoppen die uiteraard minder ruimte nodig hebben, maar de bediening wordt wat krampachtiger.

Deze eenvoudige drukknoppen gebruiken we om automatiseringen te starten.

Geen schakelaars, maar drukknoppen!

In onze controller gebruiken we alleen drukknoppen en geen schakelaars. Deze eigenschap wordt ook wel ‘momentary press’ genoemd. Ze veren in feite na het indrukken weer terug, terwijl een schakelaar ingedrukt blijft ofwel in één stand blijft staan. Dat laatste zou in een controller niet logisch zijn, omdat apparaten meestal ook buiten Home Assistant om aan- of uitgezet zullen worden. De stand van de schakelaar correspondeert dan niet meer met de werkelijke status. Na het indrukken laten we Home Assistant simpelweg de status omschakelen, dus van aan naar uit of andersom. Een drukknop met led is heel praktisch omdat je via die led kunt laten zien of het apparaat aan staat. Uiteraard zorgen we dat de led ook de juiste status aanneemt als je een apparaat elders plek bedient. We laten de microncontroller hiervoor reageren op evenementen in Home Assistant.

©PXimport

We gebruiken in het project bewust drukknoppen en geen schakelaars.

06 Drukknoppen met led

De drukknoppen met ingebouwde led hebben ook een diameter van 16 mm. Bij beperkte ruimte kan 12 mm ook, maar die zijn minder prettig te bedienen voor grotere vingers. Bij de bestelling van de drukknoppen moet je opletten dat de led voor 3,3 volt geschikt is. Dat is immers de spanning aan de uitgang van de microcontroller. Vaak kun je de spanning en kleur kiezen bij het bestellen. De led mag tot z’n 20 mA aan stroom verbruiken. Als echt meer nodig is, kun je dat met een transistor oplossen. Die kan met een lage stroom uit de microcontroller een grotere stroom schakelen. Vooral voor bijvoorbeeld een relais zal dit nodig zijn. Overigens zou je in plaats van een verlichte drukknop ook een losse signaal-led kunnen gebruiken (ook weer voor de juiste spanning) of een led waar je zelf een passende weerstand bij uitrekent, in dit geval veelal zo’n 220 tot 500 ohm.

Deze drukknoppen hebben een led die we als status gaan gebruiken.

07 Verbindingen maken

Voor elke drukknop heb je één GPIO-pin nodig die we straks als ingang instellen. Voor de drukknoppen met led heb je aanvullend nog een GPIO-pin als uitgang nodig voor de led. Je kunt de GPIO-pinnen van de ESP32 gebruiken, maar ook van een I/O-expander (zie het kader ‘Een I/O-expander gebruiken’). Omdat deze I/O-expander iets minder stroom kan leveren dan de ESP32 gebruiken we deze bij voorkeur voor drukknoppen en niet voor de leds. Een jumperdraad is zoals gezegd erg praktisch om verbindingen te maken. Soldeer deze aan één kant aan de drukknop en steek de vrouwelijke kant in de GPIO-pin op de ESP32 of de I/O-expander.

De andere aansluiting op de drukknop verbind je met ground (GND). Omdat we een hele reeks drukknoppen hebben, kun je deze allemaal met elkaar doorverbinden. Het aansluiten is dus eenvoudig, maar bereid je voor op spaghetti van verbindingen bij veel componenten!

Met jumperdraden maken we de verbindingen naar de microncontroller.

Een I/O-expander gebruiken

Als je meer GPIO-pinnen nodig hebt is een GPIO-expander erg praktisch. In ons project gebruiken we daarom de SX1509-expander. Je werkt via de I2C-interface. Je sluit hem via SDA en SCL aan op deze interface op de ESP32. Voor SDA gebruik je GPIO 21 en voor SCL is dat GPIO 22. Ook verbind je de I/O-expander met GND en 3,3 volt. Je kunt nu de genummerde pinnen op de SX1509 (0 t/m 15) als extra GPIO-pinnen gebruiken. In ons project gebruiken we de I/O-expander voor de twee rijen met acht schakelaars. Dezelfde SDA- en SCL-pin zou je voor bijvoorbeeld een temperatuursensor kunnen gebruiken. Het is wel belangrijk dat die een ander adres gebruikt. Het instellen van het adres gaat veelal via jumpers. We gebruiken de SX1509 op het standaardadres 0x3E. Dit zullen we straks in het configuratiebestand voor ESPHome aangeven.

De SX1509 is een handige I/O-expander voor extra GPIO-pinnen.

08 ESPHome installeren

We hebben ESPHome onder Windows geïnstalleerd. Via https://kwikr.nl/espinstall vind je de instructies. Het komt erop neer dat je Python installeert en aan de path-variabele toevoegt, zodat je de pakketbeheerder in elke map op je pc kan aanroepen via de Opdrachtprompt met de opdracht pip3. Installeer dan ESPHome met:

pip3 install wheel pip3 install esphome

Het is handig om een mapje te maken voor je project. Navigeer met de Opdrachtprompt naar die map. Controleer met de opdracht esphome version of ESPHome aanroepbaar is. Daarna kun je via de wizard een script maken dat als basis kan dienen.

Python is de voornaamste vereiste om ESPHome te kunnen installeren.

09 Script maken

In de hiervoor gemaakte map gaan we het script maken met de opdracht:

esphome wizard controller.yaml

Je kunt ook een andere naam gebruiken. In de wizard voer je de gewenste naam in, het type microcontroller (ESP32) en de naam van je ontwikkelbordje, in ons voorbeeld is dat esp32doit-devkit-v1. Verder geef je de wifi-naam van je netwerk op en het wachtwoord. Optioneel kun je een wachtwoord opgeven voor het verbinden met de ESP32. Dit laten we achterwege. Er wordt nu een configuratiebestand controller.yaml gemaakt waar we verder aan gaan werken. Dit bestand is in het YAML-formaat. Als je met Home Assistant hebt gewerkt, zul je er wellicht vertrouwd mee zijn. In dit bestand gaan we aangeven welke componenten zijn aangesloten en inhaken op gebeurtenissen in Home Assistant.

Via de wizard geef je details voor de ESP32 microcontroller op.

10 SX1509 toevoegen

We gaan het zojuist gemaakte script verder aanvullen. Als eerste zullen we de I/O-expander toevoegen, de SX1509. Hiervoor voeg je eerst de I2C-component toe aan ESPHome en definieer je vervolgens de SX1509 zelf met een ID (waar we straks naar verwijzen) en het gebruikte adres. We gebruiken de GPIO-pinnen van de SX1509 individueel, maar je zou ook voor een 8x8-matrix kunnen kiezen, voor tot 64 drukknoppen! Bij ESPHome kun je daar meer over lezen.

De toevoeging in het bestand controller.yaml wordt:

# i2c voor connectie met SX1509 i2c:   sda: 21   scl: 22   # sx1509 op default adres (aan te passen via jumpers) sx1509:   - id: sx1509_hub1     address: 0x3E
Voor de SX1509 zijn ook andere toepassingen zoals een keypad.

11 Leds toevoegen

We gaan nu eerst de acht leds toevoegen die in de eerste acht drukknoppen in de controller zitten. We noemen deze A1 t/m A8. Je begint hiervoor in je configuratiebestand met een regel switch: waar je vervolgens alle schakelaars onder zet. Hier zie je alleen de eerste led die op GPIO-pin 16 is aangesloten. Voor de andere leds gebruiken we GPIO 17, 18, 19, 23, 25, 26 en 27.

switch:   - platform: gpio     pin: 16     id: led_a1     name: "LED A1"
We voegen de leds toe die op de GPIO-pinnen van de ESP32 zijn aangesloten.

12 Drukknoppen toevoegen

We gaan nu de drukknoppen toevoegen. Hiervoor gaan we een GPIO-pin als ingang configureren en de interne pull-up-weerstand gebruiken. In ESPHome noemen we het een binary-sensor. In je script begin je met een regel binary_sensor:. Daaronder voeg je dan de drukknoppen toe. In onderstaande voorbeeld zijn twee drukknoppen aangesloten. De eerste is verbonden met GPIO 12 op de ESP32 en de tweede met pin 0 op de SX1509. Zelf hebben we gekozen om de eerste zestien drukknoppen aan te sluiten op pinnen 0 t/m 15 op de SX1509.

binary_sensor:   - platform: gpio     pin:       number: 12       mode:         input: true         pullup: true       inverted: true     name: "Pin A1"     - platform: gpio     name: "SX1509 Pin A1"     pin:       sx1509: sx1509_hub1       # Gebruik pin 0 op de SX1509       number: 0       mode:         input: true         pullup: true       inverted: true
De drukknoppen kun je verbinden met de ESP32, maar ook met de SX1509.

13 Status van Home Assistant

We willen de status van bepaalde apparaten weergeven via leds. Daarom voegen we die apparaten die al in Home Assistant bekend zijn ook toe aan de configuratie van ESPHome. Doet dit ook weer onder het kopje binary_sensor:, maar nu met Home Assistant als platform. Het onderstaande voorbeeld dient voor de status van een versterker die in dit geval is voorzien van een Sonoff Basic met de Tasmota-firmware. Maar ook andere slimme stekkers zoals de Shelly Plug en TP-Link HS110 werken prima, of verlichting met WLED. Cruciaal is dat je de entity_id overneemt van Home Assistant. Voor de versterker is dat switch.kantoorversterker. Bij name en id vul je een herkenbare naam voor gebruik binnen ESPHome in. Met on_state: kunnen we vervolgens reageren op statusveranderingen in Home Assistant. Hier stellen we in dat de schakelaar met de ID led_a1, die we bij de bewuste led hebben ingevuld (zie paragraaf 11), de status van de versterker moet volgen (aan of uit). Voor de andere apparaten ziet het er vergelijkbaar uit.

  - platform: homeassistant     name: "kantoorversterker"     id: kantoorversterker     entity_id: switch.kantoorversterker     on_state:       then:         # kantoorversterker aan, dan led A1 aan         - if:                    condition:               and:                 - binary_sensor.is_on: "kantoorversterker"             then:               - switch.turn_on: led_a1         - if:         # kantoorversterker uit, dan led A1 uit             condition:               and:                 - binary_sensor.is_off: "kantoorversterker"             then:               - switch.turn_off: led_a1
We zorgen dat de leds worden geschakeld naar gelang de status in Home Assistant.

14 Initialisatie na het starten

Als je de controller aanzet, zul je merken dat de leds uitstaan. Er gebeurt pas iets als de status van een apparaat in Home Assistant verandert. Daarom voegen we enkele regels toe als initialisatie bij het starten van de controller. Dit doe je onder het kopje esphome: dat je bovenaan in het script vindt, onder on_boot:. We beginnen met een vertraging van 20 seconden, zodat de microcontroller de tijd krijgt om verbinding met Home Assistant te maken. In dit voorbeeld controleren we de status van de kantoorversterker en schakelen de led led_a1 naar gelang de status. Voor de andere apparaten ziet het er vergelijkbaar uit.

esphome:   name: controller   on_boot:     then:       - delay: 20s       # A1 - Kantoorversterker aan, dan LED A1 aan       - if:           condition:             and:               - binary_sensor.is_on: "kantoorversterker"           then:             - switch.turn_on: led_a1       # A1 off - Kantoorversterker uit, dan LED A1 uit       - if:           condition:             and:               - binary_sensor.is_off: "kantoorversterker"           then:             - switch.turn_off: led_a1

15 Toevoegen aan Home Assistant

Als je klaar bent met de configuratie kun je deze compileren en uploaden met:

esphome controller.yaml run

Je kunt de controller als alles goed is gegaan toevoegen aan Home Assistant. Hiervoor ga je via de instellingen naar Apparaten en Diensten en kies je Integratie toevoegen. Zoek naar ESPHome, vul de hostnaam of het ip-adres in, en kies Opslaan. Na het toevoegen van de controller zijn alle componenten als entiteit binnen Home Assistant beschikbaar en kun je bijvoorbeeld reageren op het indrukken van een knop, zoals we zullen laten zien.

Na het toevoegen zijn alle componenten als entiteit beschikbaar.

16 Automatiseringen maken

Via automatiseringsregels kan Home Assistant reageren op het indrukken van knoppen. Als voorbeeld maken we een automatisering voor de eerste knop die de versterker omschakelt. Ga naar Instellingen / Automatiseringen & Scènes, kies Automatisering toevoegen en dan Begin met een lege automatisering. Geef de automatisering een naam. Onder Triggers zoek je de entiteit op. In ons voorbeeld is dat binary_sensor.sx1509_pin_a1. Bij Van voer je off in en bij Naar vul je on in. De automatisering wordt dan uitgevoerd als de drukknop wordt ingedrukt. Onder Acties kiezen we bij Type actie voor Apparaat. Selecteer het apparaat (in dit voorbeeld kantoorversterker) en kies bij Actie voor Omschakelen kantoorversterker.

Voor alle andere drukknoppen kun je hetzelfde doen. Uiteraard kun je meerdere acties toevoegen. Zo gebruiken we enkele van de simpele drukknoppen (B1 t/m B8) als een ‘master’ om een hele reeks apparaten aan of juist uit te zetten. Je kunt natuurlijk alle mogelijkheden van Home Assistant en de aangesloten apparaten benutten bij het maken van automatiseringen.

We maken automatiseringsregels om te reageren op drukknoppen.

Uitbreiden met bewegingssensor

Een bewegingssensor is een handige toevoeging in elke controller. Je kunt hiermee detecteren of iemand aanwezig is en op basis daarvan bepaalde apparaten aan- of uitzetten. Als bewegingssensor is de HC-SR501 heel geschikt. Die gedraagt zich overigens als schakelaar en voeg je toe onder het kopje binary_sensor:, zoals:

  - platform: gpio     pin: 5     name: "${node_name} pir"     device_class: motion

Op het printplaatje van deze bewegingssensor vind je twee potmeters. Met de eerste kun je de gevoeligheid instellen. Met de tweede stel je in hoelang de schakelaar ‘aan’ moet blijven na het detecteren van beweging. Let op dat de genoemde HC-SR501 5 tot 20 volt nodig heeft. Sluit deze daarom op de ingangsspanning aan.

Met een bewegingssensor kun je reageren op de aanwezigheid van personen.
▼ Volgende artikel
Slimme tweestapsverificatie: zo werk je met fysieke beveiligingssleutels
Zekerheid & gemak

Slimme tweestapsverificatie: zo werk je met fysieke beveiligingssleutels

Inloggen met enkel een wachtwoord blijft riskant. Steeds vaker stappen diensten daarom over op tweestapsverificatie of op volledig wachtwoordloos inloggen. In combinatie met een fysieke beveiligingssleutel leveren beide een nog robuustere bescherming op. Hoe werkt dit precies en wat zijn enkele concrete mogelijkheden?

We hoeven je niet meer uit te leggen dat inloggen met alleen een wachtwoord niet veilig is, zeker niet als je hetzelfde eenvoudige wachtwoord bij meerdere diensten gebruikt. Een wachtwoordbeheerder als Bitwarden helpt je wel complexere en verschillende wachtwoorden te gebruiken, maar de zwakheden blijven: wachtwoorden kunnen via phishing worden onderschept, bij een datalek buitgemaakt of met brute-force achterhaald. Daarom winnen alternatieve loginmethodes aan populariteit. Denk aan tweestapsverificatie, waarbij je naast je wachtwoord nog een extra factor gebruikt, zoals een code of biometrie, en aan wachtwoordloos inloggen, een methode op basis van een cryptografisch sleutelpaar. Beide methoden verhogen de beveiliging, maar met een fysieke beveiligingssleutel kun je het nog veiliger maken.

Fysieke sleutel

Zo’n fysieke sleutel is een stukje hardware van doorgaans zo’n 4 cm lang en 2 cm breed, enkele mm dik en met een gewicht van circa 4 gram. Er bestaan ook wel kleinere sleutels in de vorm van een usb-c-dongel, die nauwelijks uitsteken uit de poort van een computer. Verderop bekijken we enkele concrete, uiteenlopende toepassingen, maar hoe werkt zo’n sleutel eigenlijk?

Wanneer je een sleutel voor het eerst koppelt aan een dienst of account, wordt er een cryptografisch sleutelpaar aangemaakt. De private sleutel blijft altijd veilig in een aparte chip van de beveiligingssleutel, terwijl de publieke sleutel naar de server van de betreffende dienst wordt doorgestuurd. Wanneer je vervolgens inlogt op de site, vraagt de server via je browser de sleutel om een cryptografische handtekening te zetten.

De meeste beveiligingssleutels wegen slechts een paar gram en kun je altijd meenemen.

Veiligheid

De sleutel checkt daarbij welke domeinnaam in de browser actief is, bijvoorbeeld account.google.com, en zet de handtekening alleen als dit overeenkomt met het domein waarvoor je de sleutel eerder hebt geregistreerd. Daardoor is het systeem nagenoeg phishing-bestendig, in tegenstelling tot bijvoorbeeld sms- of OTP-codes. Zo’n code kun je immers ook op een valse site intypen, waarna een aanvaller deze meteen kan doorsturen naar de echte site. Bij wachtwoorden, sms en OTP bestaan bovendien gedeelde geheimen, zoals codes of hashes, die bij een datalek gestolen kunnen worden, terwijl er bij een fysieke sleutel zelfs bij een serverdatalek niets bruikbaars te halen valt. Een smartphone kan bovendien malware bevatten of gestolen worden, waardoor een aanvaller toegang kan forceren; een fysieke sleutel daarentegen bewaart de geheime sleutel veilig in een niet-uitleesbare chip.

Een beveiligingssleutel vormt (vaak samen met een wachtwoord) een solide log-in.

Nadelen

Zo’n fysieke sleutel geldt dus als een van de veiligste methoden, al zijn er ook enkele praktische nadelen. Zo moet je de sleutel bij je hebben tijdens het inloggen en bij verlies of diefstal riskeer je buitengesloten te raken als je geen back-up hebt, bijvoorbeeld in de vorm van back-upcodes of een tweede, veilig bewaarde sleutel. Bovendien ondersteunen nog niet alle sites of diensten zo’n sleutel. Op onder meer www.kwikr.nl/f2sup en www.kwikr.nl/yubisup vind je wel lijsten met diensten die via een of ander protocol inloggen met een fysieke sleutel ondersteunen. Tot slot kost een sleutel ook wel iets: tussen de 30 en 80 euro, afhankelijk van de ondersteunde functies en standaarden.

Yubico laat je kiezen tussen onder meer protocol, apptype en sleuteltype.
Meerdere protocollen

Er zijn verschillende producenten van beveiligingssleutels, zoals Feitian, Nitrokey, SoloKeys en Yubico, elk met een divers aanbod. In dit artikel focussen we op de populaire multi-protocol YubiKey 5-serie, die de protocollen FIDO U2F, FIDO2/WebAuthn, OTP, OpenPGP en PIV smartcard ondersteunt (zie ook www.kwikr.nl/yubi5). Zonder ons in technische details te verliezen, gaan we kort in op deze protocollen.

FIDO U2F (Fast IDentity Online Universal 2nd Factor) gebruikt de sleutel als tweede factor naast je wachtwoord. Bij het inloggen raak je de sleutel aan en die bewijst cryptografisch dat jij aanwezig bent. FIDO2/WebAuthn is de algemeen geaccepteerde opvolger van U2F, waarbij je niet alleen een tweede factor kunt gebruiken, maar ook volledig wachtwoordloos inlogt via een uniek sleutelpaar (passkeys). Met OTP (One-Time Password) kan de sleutel een eenmalige code genereren, zoals bij een authenticator-app. Je tikt de sleutel aan en er verschijnt een unieke code die je als extra log-infactor inzet. Met OpenPGP (Pretty Good Privacy) kan de sleutel je private PGP-sleutels opslaan, zodat je bijvoorbeeld e-mails kunt versleutelen en ondertekenen. Met PIV smartcard (Personal Identity Verification) functioneert de sleutel als slimme chipkaart, zoals een bedrijfsbadge. Je gebruikt dit bijvoorbeeld voor digitale handtekeningen, inloggen op Windows-domeinen of VPN-verbindingen. 

Inloggen via 2FA

We weten nu hoe een sleutel eruitziet, hoe die werkt en waarom die zo veilig is. Dat volstaat om er zelf mee aan de slag te gaan, in verschillende scenario’s en met diverse protocollen. In dit artikel gebruiken we een YubiKey 5(C) NFC die ongeveer 65 euro kost, maar je kunt ook andere sleutels inzetten zolang ze de vereiste protocollen ondersteunen. Sleutels die enkel FIDO U2F en FIDO2 ondersteunen, zijn al verkrijgbaar vanaf 15 euro.

Laten we als voorbeeld starten met de sleutel als tweede factor bij een Facebook-account. Hiervoor volstaat een sleutel met FIDO U2F, al accepteren niet alle diensten U2F. Zo vereisen Apple en Microsoft in dit geval een FIDO2-sleutel.

Meld je aan bij je Facebook-account via https://accountscenter.facebook.com. Ga in Accountinstellingen naar Wachtwoord en beveiliging. Open Tweestapsverificatie en selecteer je Facebook-account. Na het invullen van een verificatiecode via mail kies je de gewenste methode. Klik op Beveiligingssleutels en bevestig met Doorgaan. Na de controle van de beveiligingscode klik je op Beveiligingssleutel registreren. Selecteer Beveiligingssleutel, druk op Volgende en OK. Plaats de sleutel, raak deze even aan en klik opnieuw op OK. Bevestig ten slotte met je wachtwoord zodat de sleutel als tweede factor wordt toegevoegd.

De beveiligingssleutel is zojuist als tweede factor bij Facebook (Meta) toegevoegd.

2FA in Bitwarden

Zolang je nog met wachtwoorden werkt, is een wachtwoordbeheerder sterk aan te raden. Een degelijke en gratis te gebruiken tool is Bitwarden. We gaan ervan uit dat je deze hebt gedownload en geïnstalleerd (via www.kwikr.nl/bwpers; beschikbaar voor Windows, macOS en Linux) en dat je een Bitwarden-account hebt aangemaakt. Handig is ook de Bitwarden-browserextensie, die automatisch invullen en opslaan van wachtwoorden in je browser veel eenvoudiger maakt, maar daar gaan we hier niet verder op in. We bekijken hier namelijk vooral het koppelen van je fysieke sleutel aan je Bitwarden-account.

Meld je aan op https://vault.bitwarden.com. Open Instellingen en kies Beveiliging. Ga naar het tabblad Tweestapsaanmelding en klik op Beheren bij FIDO2 WebAuthn. Vul je Bitwarden-hoofdwachtwoord in en voer bij Naam een korte beschrijving van de sleutel in. Plaats je sleutel (via usb of NFC) en klik op Sleutel lezen. Als de sleutel om een pincode vraagt, vul je die in en raak je de sleutel kort aan. Bevestig met OK en klik op Opslaan zodat de sleutel wordt toegevoegd. Op dezelfde manier kun je ook een andere sleutel als reserve koppelen (zie ook verderop ‘10 Voorzorgsmaatregelen’). Bij het inloggen, ook via de Bitwarden-app, moet je nu naast je wachtwoord ook je sleutel gebruiken.

Bitwarden vraagt naast je wachtwoord ook om je beveiligingssleutel.

Inloggen met passkey

Steeds meer diensten ondersteunen wachtwoordloze aanmeldingen via toegangssleutels, oftewel passkeys. Wil je hiervoor je fysieke sleutel gebruiken, dan moet deze FIDO2/WebAuthn ondersteunen, waarbij de private sleutel van het cryptografische sleutelpaar op de sleutel zelf wordt bewaard. Om in te loggen hoef je de sleutel enkel te plaatsen of via NFC op je smartphone te gebruiken, als dit wordt ondersteund, en daarna te bevestigen met pincode en aanraaksensor. Kortom, je sleutel wordt je loginmiddel. We tonen dit met een Google-account.

Log in via https://myaccount.google.com. Ga naar Beveiliging en klik bij Inloggen bij Google op Tweestapsverificatie. Klik indien nodig op Tweestapsverificatie aanzetten. Voeg desgewenst een telefoonnummer toe en klik bij Toegangssleutels en beveiligingssleutels op Beveiligingssleutel toevoegen. Klik vervolgens op + Toegangssleutel maken en kies Ander apparaat gebruiken. Selecteer in het pop-upvenster Beveiligingssleutel. Druk op Volgende en daarna tweemaal op OK. Plaats nu de sleutel en voer de pincode in, of maak een nieuwe aan als de sleutel nieuw of gereset is. Bevestig met OK en raak de sleutel kort aan. De sleutel staat nu in de lijst met toegangssleutels in je Google-account.

Wanneer je je daarna bij Google afmeldt en opnieuw aanmeldt, zul je merken dat je je wachtwoord – op ondersteunde browsers en platformen – niet meer hoeft in te geven en met de sleutel kunt aanmelden. Google acht deze methode namelijk veilig genoeg. Wil je dit toch niet, open dan opnieuw Beveiliging, klik bij Inloggen bij Google op Wachtwoord overslaan als dat mogelijk is en schakel deze optie uit. Je sleutel fungeert dan enkel nog als tweede factor, waarvoor in principe FIDO U2F volstaat.

De beveiligingssleutel is zojuist aan ons Google-account toegevoegd.

Passkey bij Microsoft

Bij veel diensten werkt het koppelen vergelijkbaar als bij Google. We tonen je wel kort hoe je een beveiligingssleutel inzet in een wachtwoordloze oplossing bij Microsoft, die hiervoor een wat eigenzinnige werkwijze en terminologie hanteert.

Meld je aan via https://account.microsoft.comen open Beveiliging. Klik op Beheren hoe ik me aanmeld en kies Een methode voor aanmelden of verifiëren kiezen. Selecteer Gezicht, vingerafdruk, pincode of beveiligingssleutel en kies Beveiligingssleutel. Druk op Volgende en daarna tweemaal op OK, plaats de sleutel, voer desgevraagd de pincode in en raak de sleutel aan. Klik opnieuw op OK, geef de sleutel een naam en bevestig met Volgende en OK. De sleutel verschijnt nu in de lijst bij Een wachtwoordcode gebruiken (waar je hem ook kunt hernoemen of verwijderen). Je kunt de sleutel vanaf nu als tweede inlogfactor inzetten, ook op andere apparaten.

Wil je de sleutel volledig wachtwoordloos gebruiken, dan verplicht Microsoft je eerst de Microsoft Authenticator-app te installeren en hier via de plusknop je Microsoft-account toe te voegen. Klik daarna op je accountpagina in de rubriek Beveiliging op Inschakelen bij Account zonder wachtwoord en druk op Volgende. In de Authenticator-app verschijnt nu een melding die je bevestigt met Goedkeuren, waarna op de website wordt gemeld dat je wachtwoord is verwijderd. Voortaan kun je ook zonder wachtwoord inloggen, met je beveiligingssleutel.

Het opzetten van een wachtwoordloze login via je beveiligingssleutel bij Microsoft is wat complexer.
Lokaal Windows-account

Het leek veelbelovend: open je in Windows de Instellingen en ga je naar Accounts / Aanmeldingsopties, dan zie je wellicht Beveiligingssleutel staan. Voor lokale of persoonlijke Microsoft-accounts werkt dit helaas niet. Dit blijkt enkel mogelijk bij zakelijke Active Directory- of Entra ID-accounts.

Heb je een compatibele Yubico-sleutel, zoals de YubiKey 5(C) NFC, dan kun je deze wel als tweede inlogfactor gebruiken voor een lokaal Windows-account. Hiervoor heb je de gratis tool Yubico Login for Windows nodig (www.kwikr.nl/yubilogin). Zorg wel dat je de gebruikersnaam en het wachtwoord van het lokale account kent. Installeer de tool en herstart Windows. Meld je daarna aan met je lokale account via de optie Yubico Login en start de app Login Configuration als administrator. Gemakshalve kun je Express configuration kiezen. Plaats de sleutel en volg de instructies (zie ook www.kwikr.nl/yubiwin). Bewaar de herstelcode zorgvuldig. Voor de gekozen gebruiker is voortaan naast gebruikersnaam en wachtwoord ook de beveiligingssleutel vereist.

Je kunt een YubiKey ook als tweede factor inzetten voor je Windows-login.

Inloggen met TOTP

Als je beveiligingssleutel ook OATH-TOTP ondersteunt (Initiative for Open AuTHentication - Time-based One-Time Password), kun je die gebruiken om een eenmalige code te genereren, net als met authenticator-apps van Google, Microsoft, Proton of Authy. Veel apps en diensten ondersteunen deze 2FA-methode.

We nemen Dropbox als voorbeeld. Meld je aan op www.dropbox.com, klik op je profielicoon rechtsboven, kies Instellingen en open het tabblad Beveiliging. Schakel Tweestapsverificatie in, selecteer Authenticatie-app en druk op Verzenden. Je ziet nu een QR-code en de bijbehorende geheime sleutel.

Download en installeer vervolgens de gratis app Yubico Authenticator (www.kwikr.nl/yubiauth). Start de app, plaats je beveiligingssleutel en open Accounts. Klik op Add account en kies Scan QR code als je een camera hebt, of voer de geheime code handmatig in bij Secret Key. Vul bij Issuer bijvoorbeeld Dropbox in en bij Account name het e-mailadres van je Dropbox-account. Bevestig met Save. In de app verschijnt een cijfercode die je op de Dropbox-site invult bij Bevestigingscode. Noteer de herstelcodes, bewaar ze goed en rond af met Voltooien.

Bij het aanmelden op Dropbox tik je eerst je wachtwoord in en daarna de actuele eenmalige code die je in Yubico Authenticator bij je Dropbox-account ziet.

Net als veel andere diensten ondersteunt ook Dropbox TOTP (op een beveiligingssleutel) als 2FA-methode.

Challenge/Response

Tot slot tonen we je nog de challenge-response-methode. Hierbij genereert een dienst of app een willekeurige wiskundige vraag (challenge) in de vorm van een bitreeks. Deze gaat naar je beveiligingssleutel, die de overeenkomstige cryptografische response berekent en terugstuurt. Als de codes overeenkomen, krijg je toegang. We lichten dit kort toe voor de gratis wachtwoordbeheerder KeePassXC (www.keepassxc.org; Windows, macOS, Linux) om een lokaal bewaarde wachtwoordkluis te openen.

Verschillende sleutels ondersteunen deze methode, waaronder de meeste YubiKeys. Download en installeer voor zo’n sleutel eerst de gratis YubiKey Manager (zie kader ‘Sleutelbeheer’). Start de app, ga naar Applications/OTP en klik op Configure bij een vrij slot. Kies Challenge-response, klik op Generate voor de geheime sleutel, zet eventueel een vinkje bij Require touch voor extra veiligheid en sluit af met Finish.

Open vervolgens KeePassXC en laad je database. Ga naar Database / Database beveiliging, kies Aanvullende bescherming toevoegen / Challenge-Response toevoegen, selecteer het juiste slot van je geplaatste sleutel en bevestig met OK. Voortaan is je wachtwoordkluis enkel toegankelijk met je wachtwoord en je beveiligingssleutel.

Je (lokale) wachtwoordkluis is voortaan alleen toegankelijk met je beveiligingssleutel.
Sleutelbeheer

Beschik je over een beveiligingssleutel, dan zul je vroeg of laat de beheertool van de producent nodig hebben. Als voorbeeld nemen we de YubiKey Manager (www.kwikr.nl/yuman), die je het best als administrator opstart. Hiermee kun je functies of interfaces uitschakelen (OTP, FIDO U2F, FIDO2, OpenPGP, PIV en OATH), een pincode instellen of resetten voor FIDO2 of PIV, statische wachtwoorden of OTP-slots programmeren en certificaten beheren in PIV-modus (smartcardfunctie).

In de beheertool kun je ook specifieke protocollen uitschakelen, mocht je dat willen (hier: YubiKey Manager).

Voorzorgsmaatregelen

In het artikel hebben we al, ook tussen de regels door, enkele tips gegeven om (veiligheids)problemen te vermijden. We sommen ze kort nog even op.

Zo registreer je best altijd twee fysieke sleutels bij elke dienst, zodat je bij verlies of diefstal via de back-upsleutel toegang behoudt. Bewaar deze op een veilige plaats en test af en toe of de sleutel nog werkt. Activeer daarnaast bij elke dienst een alternatieve 2FA- of noodmethode, zoals TOTP-toegang via een authenticator-app, en druk back-upcodes af die je veilig bewaart. Zo kun je ook zonder sleutel nog aanmelden, al is dit wat minder robuust. Tot slot, ook al beschermt een beveiligingssleutel je technisch goed tegen phishing, blijf alert. Krijg je bijvoorbeeld een onverwachte vraag om de PIN-code van je sleutel in te voeren, wees dan op je hoede.

Heel wat diensten voorzien in (eenmalige) back-upcodes (hier: Google).
▼ Volgende artikel
Review Tefal Snack Collection - klein formaat, veel mogelijkheden
© Tefal
Huis

Review Tefal Snack Collection - klein formaat, veel mogelijkheden

Tefal lanceert een compact model tosti-ijzer dat met allerlei extra platensets te gebruiken is voor allerlei gerechten: van panini's en wafels in allerlei vormen en maten tot aan donuts en madeleines. Is de Snack Collection echt zo veelzijdig? ID.nl ging ermee aan de slag.

Uitstekend
Conclusie

De Tefal Snack Collection is een compact tosti-apparaat met verwisselbare platen, bedoeld voor wie met één toestel meerdere snacks wil bereiden. In de test leverde het apparaat goede resultaten met tosti’s en panini’s; de platen klikken stevig vast, zijn uitneembaar en vaatwasserbestendig. Met zijn kleine formaat, snoeropbergsysteem, 700 watt vermogen, maximale temperatuur van 230 graden en voorverwarm-indicator is het toestel praktisch, al is het grillvlak aan de krappe kant en is de temperatuur niet instelbaar. Per saldo is dit een ruimtebesparende keuze voor tostiliefhebbers die graag variëren.

Plus- en minpunten
  • Compact formaat en makkelijk opbergen
  • Goede grill-prestaties
  • Veel uitbreidingsmogelijkheden
  • Opwarmen duurt zo'n 4 minuten
  • Temperatuur niet instelbaar

Tafelgrills en tosti-apparaten zijn in bijna elk huishouden te vinden. Vaak gaat het om apparaten met een geribbelde grillplaat boven en onder, waar je je tosti tussen legt om die een paar minuten erna bruin en krokant uit te halen, met een lekker warme vulling. Het zijn eenvoudige apparaten die goed zijn in waarvoor ze ontwikkeld zijn. Meer dan je tosti erin maken kan vaak niet. Tefal komt nu met de compacte Snack Collection, een apparaat dat je koopt met twee bijgeleverde typen grillplaten en nog eens kunt uitbreiden door losse sets erbij te kopen.

©Saskia van Weert

Testexemplaar en meegeleverde platen

Ter review ontving de redactie een blauw testmodel, voorzien van twee grill/panini-platen (één boven, één onder in het apparaat) en twee platen om Brusselse wafels mee te maken. De Snack Collection is met zijn 28,5 centimeter breedte, 20,6 centimeter lengte en 34,5 centimeter hoogte een betrekkelijk klein apparaat dat makkelijk op te bergen is. Het snoer is aan de onderkant op te bergen, er zit een aan-uitknop aan de voorzijde, net als een vergrendeling om het ijzer op slot te zetten. Ook zit er een lampje aan de voorzijde dat groen oplicht als het apparaat is voorverwarmd. Hij heeft een vermogen van 700 watt en een maximale temperatuur van 230 graden. De temperatuur is niet handmatig in te stellen.

©Saskia van Weert

Inhoud van de doos en wisselen van platen

In de machine zit al een set grillplaten. Verder vind je in de doos twee verpakkingen die nog het meest doen denken aan videobandhoezen van vroeger. Ze zijn van harde kunststof en gaan wat lastig open. De ene doos is uiteraard leeg, want daar zaten de panini-platen in, maar we vinden er wel een receptenboekje in. In de andere doos zit de uitbreiding; in ons testexemplaar zijn dat de wafelplaten. De platen zijn los te halen uit de machine via een knopje boven en onder, en de platen kunnen er op maar één manier in vastklikken. Je kunt ze dus niet verkeerd bevestigen. Ze mogen in de vaatwasser; de machine zelf uiteraard niet.

©Saskia van Weert

Gebruik en bediening

Zoals wel vaker bij dit type apparaten is de werking enorm simpel. Je bevestigt de gewenste platen in de machine, doet de stekker in het stopcontact en zet hem aan. Dan wacht je tot het groene lampje aangaat, open je de machine, doe je je gerecht erin, sluit je alles weer netjes en wacht je tot je eten klaar is. Eet smakelijk!

©Saskia van Weert

Test: tosti's

De bijgeleverde grill/panini-plaat is net wat te klein voor een reguliere tosti van boterhammen uit de supermarkt; het korstje steekt net wat boven de plaat uit. Maar dat bleek voor het resultaat niet uit te maken: alle geteste tosti’s kwamen prima uit de Tefal. Opwarmen duurde wel wat lang, ongeveer 4 minuten.

Lees ook: Gezonde tosti’s om de hele middag op door te gaan

Brand je handen niet!

Gebruik een tang om je tosti's te serveren

Test: panini

De test met een panini had wat voeten in de aarde. De supermarkten in onze woonplaats verkochten geen panini-broodjes, maar een XL-shop in een andere plaats wel. Panini-broodjes zijn hoger dan normale afbakbroodjes en standaard voorzien van grillstrepen. Het deksel van de Snack Collection moest wel wat worden aangedrukt om de machine te kunnen sluiten met de vergrendeling, maar ook dat verliep verder prima.

Schoonmaken en opbergen 

De platen komen weer brandschoon uit de vaatwasser en klikken makkelijk vast in het apparaat. Door de betrekkelijk kleine afmetingen van dit keukenapparaat is het makkelijk op te bergen.

©Tefal

Uitbreidingssets (assortiment)

Dan de uitbreidingssets. Deze hebben we niet kunnen testen, maar zijn uiteraard te bekijken via de site van Tefal. Er is een aantal platen voor tosti’s in bijzondere vormen, zoals een schelpvorm of juist meteen als driehoek. Verder zijn er onder meer vormen voor bagels te verkrijgen. Tefal mikt duidelijk op een internationaal publiek, want er is ook een vorm voor madeleines (Franse zoete cakejes) verkrijgbaar.

Conclusie

De Tefal Snack Collection is een compact tosti-apparaat met verwisselbare platen, bedoeld voor wie met één toestel meerdere snacks wil maken. In de test leverde het apparaat nette resultaten op: tosti's kwamen goed uit de grill en panini's lukten eveneens prima na het sluiten met de vergrendeling. De platen klikken stevig vast, zijn uitneembaar en kunnen in de vaatwasser. Dankzij het kleine formaat en het opbergsysteem voor het snoer is het toestel eenvoudig weg te zetten. Het apparaat heeft een vermogen van 700 watt, een maximale temperatuur van 230 graden en een indicatielampje dat aangeeft wanneer voorverwarmen is voltooid.

Aandachtspunten: het grillvlak is aan de krappe kant voor standaardboterhammen, de opwarmtijd ligt rond de 4 minuten en de temperatuur is niet handmatig regelbaar. De uitbreidingsmogelijkheden zijn groot (onder meer wafels, donuts, madeleines en bagels), maar deze extra platen zijn in deze test niet inhoudelijk beoordeeld.

Per saldo is de Snack Collection een praktisch en ruimtebesparend apparaat voor de liefhebbers van tosti's die ook graag eens experimenteren met andere bereidingen.