Zo krijg je een beter bluetooth-bereik voor Home Assistant
Bluetooth-signalen hebben vaak een beperkt bereik. Dit kun je verbeteren door met ESPHome een zogenoemde bluetooth-proxy te maken van een ESP32-module. Door enkele van deze microcontrollerbordjes strategisch in je huis te plaatsen, vangen ze van alle kanten bluetooth-signalen op en sturen die door naar Home Assistant. Wij leggen uit hoe je dit doet.
In dit artikel laten we je zien hoe je het bluetooth-bereik van apparaten vergroot die je met Home Assistant gebruikt.
- Activeer de bluetooth-integratie in Home Assistant
- Installeer de bluetooth-proxy op een ESP32-bordje
- Verbind de bluetooth-proxy met je wifi-netwerk
- Test tot slot of het bereik voldoende is
Lees ook: Zo maak je met ESPHome apparaten geschikt voor je smarthome
In Home Assistant kun je communiceren met allerlei apparaten via bluetooth low-energy, wat we vanaf nu kortweg BLE of bluetooth zullen noemen. Het aanbod is divers: alleen al voor temperatuursensoren zijn er tal van fabrikanten, van Xiaomi tot ThermoBeacon en ThermoPro. Deze apparaatjes versturen hun data via bluetooth naar alle ontvangers in de buurt. Verder zijn er ook deursloten, leds en andere apparaten die Home Assistant via bluetooth kan aansturen.
Maar het bereik van bluetooth is beperkt. Als je Raspberry Pi of Linux-server met Home Assistant aan de ene kant van je huis staat, bereik je wellicht niet de bluetooth-apparaten aan het andere uiteinde. Werkt het wel, dan vaak slechts sporadisch of met frequente uitval. De ontwikkelaars van Home Assistant hebben hiervoor een oplossing: een bluetooth-proxy. Dit is een microcontrollerbordje dat speciale firmware draait en bluetooth-signalen opvangt, en die via wifi of ethernet naar Home Assistant doorstuurt. In omgekeerde richting neemt zo’n proxy ook opdrachten van Home Assistant aan via wifi of ethernet, en stuurt deze via bluetooth naar de betreffende apparaten door.
Als je dus op enkele strategische plaatsen in huis een bluetooth-proxy ophangt, verhoog je het bereik van je bluetooth-apparaten.
1 Bluetooth-integratie
Om de bluetooth-integratie in Home Assistant te activeren, klik je in de linkerzijbalk bij Instellingen op Apparaten & diensten. Doorgaans heeft Home Assistant je bluetooth-adapter, zoals de ingebouwde adapter van de Raspberry Pi of een externe usb-adapter, al ontdekt onder het kopje Bluetooth. Klik op Configureren bij de ontdekte integratie om de adapter in te stellen. Je kunt ook altijd rechtsonder op Integratie toevoegen klikken en dan op Bluetooth.
Vanaf dat moment zal je Home Assistant-installatie bluetooth-apparaten in de buurt ook automatisch ontdekken. Het duurt wellicht niet lang voordat je allerlei apparaten in het tabblad Integraties ziet verschijnen met een knopje Configureren om ze aan Home Assistant toe te voegen. Voeg ze zo een voor een toe.
Als je meerdere bluetooth-adapters hebt aangesloten, zal de bluetooth-integratie de data die het van al die adapters ontvangt overigens samenbrengen voor ze naar de apparaatspecifieke integraties worden doorgestuurd.
2 ESP32 als bluetooth-proxy
Als je een bluetooth-proxy wilt opzetten, kan dat eenvoudig met elk willekeurig ESP32-ontwikkelbordje. De ESP32-microcontroller heeft namelijk zowel bluetooth als wifi ingebouwd, en is dankzij ESPHome aan te sturen en met Home Assistant te integreren zonder dat hiervoor geavanceerde programmeervaardigheden nodig zijn. Nabu Casa, het bedrijf achter Home Assistant, ontwikkelt ook ESPHome en ze hebben het component Bluetooth Proxy aan ESPHome toegevoegd.
Je hoeft zelfs niet met ESPHome vertrouwd te zijn om hun bluetooth-proxy te gebruiken. Op een pagina met kant-en-klare projecten van ESPHome vind je namelijk een webgebaseerde installer om firmware met een bluetooth-proxy te installeren op enkele types ESP32-ontwikkelbordjes. Dat werkt overigens alleen via Google Chrome of Microsoft Edge.
3 ESPHome installeren
Sluit een ESP32-microcontrollerbordje via usb aan op je computer. Het type bordje maakt niet uit, zolang het maar een standaard ESP32-chip bevat en geen variant zoals de ESP32-C3. We hebben dit getest met de ESP32-DevKitC V4, een officieel ontwikkelbordje van Espressif. Open dan de pagina met kant-en-klare projecten van ESPHome, selecteer Bluetooth proxy en selecteer onderaan Generic ESP32. Mocht je toevallig over een van de twee andere bordjes beschikken, de M5Stack Atom Lite of de Olimex ESP32 Power-over-Ethernet ISO, selecteer die dan.
Klik daarna op de blauwe knop Connect. Je browser toont een lijst met seriële interfaces. Als je maar één microcontroller hebt aangesloten, dan zie je normaal gesproken maar één interface. Onder Windows is dat een COM-poort, onder Linux en macOS een poort als ttyUSB0. Selecteer de juiste poort en klik op Connect. Kies dan Install Bluetooth proxy en bevestig dat je alle data op het apparaatje wilt overschrijven met de nieuwe firmware. Na ongeveer twee minuten staat de firmware op het microcontrollerbordje.
Driverproblemen Om de firmware op je microcontrollerbordje te installeren, heeft je besturingssysteem drivers nodig voor de chip op het bordje die de omzetting van usb naar seriële poort afhandelt. Linux-distributies beschikken standaard al over drivers voor de meest voorkomende chips. Maar in Windows en macOS moet je die drivers misschien eerst nog installeren. De pagina met kant-en-klare projecten van ESPHome begeleidt je daar gelukkig uitstekend bij. Zodra de webapplicatie merkt dat je geen poort hebt gekozen (bijvoorbeeld omdat er geen te zien zijn door een gebrek aan drivers), stelt het je voor om drivers te downloaden, inclusief downloadlinks voor de meestgebruikte chips. Na de installatie krijg je de poort dan wel in je browser te zien.
4 Bluetooth-proxy integreren
Nadat je de melding Installation complete! te zien krijgt, klik je op Next. Kies nu het wifi-netwerk waarmee je je bluetooth-proxy wilt laten verbinden en vul het bijbehorende wachtwoord in. Let op: de ESP32 ondersteunt alleen 2,4GHz-netwerken. Je 5GHz-netwerken verschijnen dus niet in de lijst. Na een klik op Connect wordt de wifi-verbinding op je bluetooth-proxy geconfigureerd en maakt het apparaatje verbinding met je netwerk.
Je kunt nu vanaf deze webpagina je bluetooth-proxy aan Home Assistant toevoegen. Maar als je de webinterface van je Home Assistant-installatie bezoekt, zul je zien dat er bij de meldingen al een nieuw apparaat is ontdekt. Dit vind je via Instellingen / Apparaten & diensten bij de lijst van ontdekte apparaten, onder de naam Bluetooth Proxy met de laatste zes hexadecimale cijfers van het MAC-adres van de ESP32. Klik op de knop Configureren en bevestig dat je het ESPHome-apparaat wilt toevoegen. Je kunt het optioneel ook aan een ruimte toevoegen. Voltooi tot slot de configuratie.
05 Bereik testen
Maar hoe weet je nu of je bluetooth-proxy werkt? Als alles goed gaat, hoef je niets te doen. Home Assistant zou nu meer bluetooth-apparaten moeten ontdekken, omdat het nu niet alleen via de lokale bluetooth-adapter, maar ook via de bluetooth-proxy apparaten ontdekt. Als je de vorige stappen voor een of meer extra ESP32-bordjes herhaalt en deze op verschillende locaties in huis plaatst, dan zul je meer en meer bluetooth-apparaten in Home Assistant kunnen gebruiken.
Je kunt eventueel zelfs je lokale bluetooth-adapter uitschakelen. Klik op de integratie Bluetooth in Instellingen / Apparaten & diensten en klik naast je bluetooth-adapter op de drie verticale bolletjes en dan op Uitschakelen. Bevestig dat je de adapter wilt uitschakelen. Je zult zien dat je bluetooth-apparaten nog altijd bereikbaar zijn voor Home Assistant. De bluetooth-integratie handelt de bluetooth-signalen gewoon af, of die nu via een bluetooth-proxy of een lokale bluetooth-adapter worden ontvangen. En als je een bluetooth-lamp aanstuurt, zoekt de bluetooth-integratie zelf uit wat de beste manier is om de opdracht te versturen.
06 Configuratie aanpassen
De kant-en-klare firmware die je op deze manier installeert, is in veel gevallen voldoende. De ESPHome-configuratie hiervan vind je via deze GitHub-pagina. Je kunt natuurlijk ook je eigen ESPHome-configuratie maken. Je zou dan de functionaliteit van een bluetooth-proxy kunnen combineren met andere functies die met ESPHome te realiseren zijn. Let dan wel op dat je geen componenten toevoegt die te veel geheugen verbruiken, zoals de webserver. De betrouwbaarheid van je bluetooth-proxy zal daaronder lijden.
Omdat de radiomodule van de ESP32 zijn tijd moet verdelen tussen wifi en bluetooth, kan de ontvangst van bluetooth-pakketten door je bluetooth-proxy weleens tegenvallen. Een ESP32-bord met ethernet werkt beter. Maar die zijn natuurlijk minder gemakkelijk te vinden en duurder. Als je toch zo’n bordje hebt, kijk dan in de ESPHome-configuratie van de Olimex ESP32 Power-over-Ethernet ISO naar een extra optimalisatie. Deze configuratie stelt de lengte van het scanvenster (de tijd dat de ESP32 naar bluetooth-pakketten luistert) gelijk aan het interval tussen de scanvensters, om zo veel mogelijk bluetooth-pakketten te ontvangen. Dat doe je met de volgende ESPHome-configuratie:
Gebruik deze instelling niet wanneer je wifi gebruikt op een bluetooth-proxy, omdat dit de wifi-verbinding instabiel maakt.
07 Actieve verbindingen
De kant-en-klare bluetooth-proxyfirmware stuurt standaard ook verbindingsaanvragen van Home Assistant naar bluetooth-apparaten door, zoals voor het aansturen van een ledstrip. Maar dit heeft een belangrijke beperking: ESPHome kan maar maximaal drie verbindingen tegelijk open houden. Dat is minder problematisch dan het lijkt. Als Home Assistant een opdracht naar een ledstrip stuurt om de kleur te veranderen, opent die een verbinding, die door de bluetooth-proxy wordt doorgestuurd naar de ledstrip en na de juiste opdracht wordt de verbinding gesloten. Het is pas als een verbinding continu openblijft, dat je snel aan het maximum van drie verbindingen komt die een bluetooth-proxy aankan.
Als je geen verbindingsaanvragen wilt doorsturen, kun je deze functionaliteit ook uitschakelen. Dat doe je met de volgende configuratie:
Betere ontvangst Met verspreide bluetooth-proxy’s kun je het bereik van je bluetooth-apparaten voor Home Assistant vergroten, maar hoe je de bluetooth-proxy’s plaatst maakt ook veel uit. Plaats je ESP32-apparaatjes in het ideale geval minstens drie meter van alles wat ook maar enige interferentie in de 2,4GHz-frequentieband van bluetooth kan veroorzaken. Denk daarbij aan netwerkapparatuur, Raspberry Pi’s of andere computers. Plaats je bluetooth-proxy’s ook wat strategisch in de buurt van de bluetooth-apparaten die je wilt bereiken. Het kan even wat puzzelen zijn, maar het resultaat is een veel betere ontvangst.