ID.nl logo
Zo maak je met ESPHome apparaten geschikt voor je smarthome
Huis

Zo maak je met ESPHome apparaten geschikt voor je smarthome

ESPHome is een handig programma om je eigen smarthome-apparaten te maken die met Home Assistant kunnen communiceren. Oorspronkelijk werden alleen ESP8266- en ESP32-microcontrollerbordjes ondersteund, maar ondertussen zijn ook de Raspberry Pi Pico W en andere bordjes met de RP2040-microcontroller hiervoor geschikt.

In dit artikel gaan we aan de slag met ESPHome op een Raspberry Pi Pico W en laten we zien waarop je zoal moet letten:

  • ESPHome installeren op Raspberry Pi
  • Led laten knipperen
  • Led van kleur laten veranderen
  • I2C-sensor aansluiten (voor bijvoorbeeld temperatuur, luchtvochtigheid en luchtdruk)

Ook interessant: Zo breid je met microcontrollers je computer uit met extra functies

Code downloaden In dit artikel worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Zie het bestand esphomecode.txt voor de stukken code die in dit artikel genoemd worden.

Met ESPHome, van de makers van het opensource-domoticaproject Home Assistant, maak je je eigen smarthome-apparaten met een ontwikkelbordje en wat sensoren, drukknoppen of leds. In tegenstelling tot andere oplossingen, zoals Arduino of MicroPython, hoef je met ESPHome niet te programmeren, maar definieer je de verschillende aangesloten elektronische componenten en hun gedrag in een configuratiebestand dat het YAML-formaat volgt. ESPHome genereert dan hieruit de programmacode, compileert die tot een firmwarebestand en installeert dat op het apparaat.

Je hebt allereerst een ondersteund ontwikkelbordje nodig of een commercieel product waarin een ondersteunde chip zit. ESPHome is, zoals de naam al aangeeft, oorspronkelijk ontwikkeld voor Espressifs ESP8266- en ESP32-microcontrollers. Sinds ESPHome 2022.11 is ook de RP2040 ondersteund, de chip in de populaire Raspberry Pi Pico W. Nog niet alles wat met Espressifs-chips werkt, functioneert op de RP2040. Er zijn ook minder voorbeeldconfiguraties voor de RP2040 te vinden. Vandaar dat we je in dit artikel hiermee op weg helpen.

1 ESPHome installeren

Er zijn diverse manieren om ESPHome te installeren: als Python-pakket, als Docker-image of als Home Assistant-add-on. We gaan hier uit van die laatste manier, die de beste integratie met Home Assistant biedt. Bovendien ondersteunt de wizard op de opdrachtregel op het moment van schrijven nog niet de RP2040. Het dashboard werkt ook wel op de opdrachtregel, maar de add-on biedt net iets meer integratie met Home Assistant.

Ga in de webinterface van Home Assistant in de linkerzijbalk naar Instellingen / Add-ons en klik dan rechts onderaan op Add-on Winkel. Klik op ESPHome en dan op Installeer. Nadat de add-on is geïnstalleerd, schakel je Start bij opstarten in, zodat de add-on automatisch samen met Home Assistant zelf opstart. Schakel ook Weergeven in zijbalk in. Je kunt dan altijd eenvoudig het dashboard van ESPHome openen door in de zijbalk op ESPHome te klikken.

Raspberry Pi Pico W

Die heb je nodig voor dit project!

2 Apparaatconfiguratie aanmaken

Als je het dashboard hebt geopend, klik je rechtsonder op New device en vervolgens op Continue. Geef je apparaat een naam, klik op Next en kies als apparaattype Raspberry Pi Pico W. ESPHome maakt nu een minimale configuratie en toont een encryptiesleutel om de communicatie met Home Assistant te versleutelen. Die vinden we later ook in de configuratie terug, dus negeer dit gerust. Klik tot slot op Install.

ESPHome biedt verschillende manieren aan om de firmware op je Raspberry Pi Pico W te installeren, maar niet alle manieren zijn altijd mogelijk. Omdat er nog geen ESPHome-firmware op je Raspberry Pi Pico W staat, is de eerste methode (via wifi) nog niet mogelijk. De optie Plug into the computer running ESPHome Dashboard is om dezelfde reden ook niet beschikbaar. Je kunt echter altijd kiezen voor Manual download. Deze optie geeft je instructies over hoe je de installatie moet uitvoeren. Ondertussen genereert ESPHome de firmware, wat overigens een hele tijd kan duren als je Home Assistant op een Raspberry Pi draait.

3 Firmware installeren

Koppel je Raspberry Pi Pico W los van de usb-poort van je computer, houd de BOOTSEL-knop ingedrukt terwijl je het bordje opnieuw aansluit en laat dan de knop weer los. Hierdoor verschijnt er een schijf met de naam RPI-RP2 in je bestandsbeheerder. Klik in het ESPHome-dashboard op Download project en sleep het .uf2-bestand naar de schijf in je bestandsbeheerder. Zodra de schijf verdwijnt, draait je Raspberry Pi Pico W de ESPHome-firmware en kun je op Close klikken.

Als je nu in het dashboard van ESPHome op Logs klikt bij het kadertje van je Raspberry Pi Pico W-configuratie, zie je de logs die het bordje uitstuurt, naar keuze via usb of wifi. En met een klik op Edit bekijk je de standaardconfiguratie die ESPHome voor je apparaat heeft aangemaakt.

Wat werkt er nog niet? De ondersteuning van de RP2040 in ESPHome is nog relatief nieuw. Daardoor werkt sommige functionaliteit die je als vanzelfsprekend zou beschouwen op de ESP8266 en ESP32 nog niet. We beschrijven hier de toestand in ESPHome 2023.8. Mogelijk is de ondersteuning al uitgebreid tegen dat je dit leest. De belangrijkste functionaliteit die je moet missen, is MQTT en bluetooth low-energy.

Op RP2040-microcontrollerbordjes met een andere wifi-chip dan die van de Raspberry Pi Pico W is ook geen wifi ondersteund, wat ze heel wat minder nuttig maakt. En wat wel werkt, is natuurlijk minder lang getest dan op de ESP8266 en ESP32. Desondanks is ESPHome al heel bruikbaar op de Raspberry Pi Pico W.

4 Led knipperen

Het eerste wat je weleens zult willen doen met een Raspberry Pi Pico W, is de ingebouwde led gebruiken, bijvoorbeeld om je iets te melden. Dat kan in ESPHome met de component output van het platform gpio waarvoor je het juiste pin-nummer instelt. Voor de Raspberry Pi Pico (de versie zonder wifi) is de ingebouwde led aangesloten op GPIO25. Bij de Raspberry Pi Pico W is de ingebouwde led aangesloten op de wifi-chip, de Infineon CYW43439. ESPHome definieert hiervoor een pseudo-pin, GPIO32. Maar het programma definieert ook een alias LED die op beide bordjes naar het juiste pinnummer verwijst.

Open dus de configuratie van je Raspberry Pi Pico W in het dashboard met een klik op Edit bij het kadertje en voeg aan het einde de volgende YAML-code toe:

Dit definieert een uitvoer met id genaamd led die naar de ingebouwde led verwijst, en elke seconde de led een halve seconde inschakelt en een halve seconde uitschakelt. Let op dat je de spaties van de inspringingen correct overneemt, want daarvoor is YAML zeer gevoelig. Klik bovenaan rechts op Install en kies Wirelessly om de nieuwe firmware via wifi op je Raspberry Pi Pico W te installeren.

5 Led dimmen

Met een GPIO-uitvoer kun je een GPIO-pin aan- of uitzetten door er een spanning van 3,3 V respectievelijk 0 V (GND) op te zetten. Dat zal een erop aangesloten led dus ontsteken respectievelijk doven. Maar met PWM (pulse-width modulation) kun je een deel van de tijd 3,3 V en een deel van de tijd 0 V op de pin zetten. Door de verhouding tussen beide tijden te variëren, zal een aangesloten led zwakker of sterker schijnen. Zo kun je dus een led dimmen.

De ingebouwde led van de Raspberry Pi Pico W ondersteunt geen PWM, maar als je op elk van de andere GPIO-pinnen een led aansluit, kun je die dimmen. Steek je Raspberry Pi Pico W hiervoor in een breadboard en sluit de anode (het langere pootje) van een led op GPIO15 van de Raspberry Pi Pico W aan. Verbind dan de kathode (het kortere pootje) via een weerstand van 220 Ω met een van de GND-pinnen van de Raspberry Pi Pico W. Voeg dan de volgende code aan je ESPHome-configuratie toe (en verwijder de vorige code voor de ingebouwde led):

Dimmen vanuit Home Assistant

Sluit je Raspberry Pi Pico W nu weer via usb aan. Nadat je deze firmware hebt geïnstalleerd, is het tijd om je ESPHome-apparaat aan Home Assistent toe te voegen. Normaal gesproken krijg je linksonder bij Meldingen al een melding dat Home Assistant een nieuw apparaat van het type ESPHome heeft ontdekt. Klik op Check it out en daarna in het kader van het ontdekte apparaat op Configureren. Bevestig dat je het apparaat wilt toevoegen. Daarna vind je hem bij de apparaten van Home Assistant en kun je de led met de schuifbalk dimmen.

7 Ledstrip

ESPHome ondersteunt al even adresseerbare ledstrips met RGB-leds, zoals de NeoPixels. Maar de componenten NeoPixelBus en FastLED die het daarvoor gebruikt op een ESP8266 en ESP32 werken niet op een RP2040. Daarvoor gebruik je bij een Raspberry Pi Pico W een component light met het platform genaamd rp2040_pio_led_strip, dat gebruikmaakt van PIO (Programmable Input Output) op de RP2040. Zo stuur je bijvoorbeeld een ledstrip met acht WS2812B-leds aan op pin 15:

Ontkoppel je Raspberry Pi Pico W en verwijder eventueel aangesloten componenten. Verbind dan de pin DIN of DI van de ledstrip met GPIO15 van de Raspberry Pi Pico W, GND met GND en de voedingspin (in ons voorbeeld als 4-7VDC aangeduid) met de pin VBUS van de Raspberry Pi Pico W (daarop staat 5 V van de usb-aansluiting). Sluit dan je Raspberry Pi Pico W weer aan en schrijf de firmware erheen. Je kunt nu de kleuren van de ledstrip in Home Assistant aansturen.

Lees ook: Ledstrips voor buiten

Aan de slag met programmeerbare buitenverlichting

8 I²C-apparaten

Iets anders waar je bij de Raspberry Pi Pico W zeker rekening mee dient te houden, is de I²C-bus. Heel wat componenten sluit je aan via I²C. Die gebruiken naast een voedingspin en GND twee pinnen: SDA om data uit te wisselen en SCL voor een kloksignaal. Maar ESPHome ondersteunt alleen I²C op pinnen die als I2C0 zijn aangeduid op de pinout. Dat betekent dus dat alleen de volgende combinaties bruikbaar zijn voor SDA/SCL: GPIO0/GPIO1, GPIO4/GPIO5, GPIO8/GPIO9, GPIO12/GPIO13, GPIO16/GPIO17 of GPIO20/GPIO21.

De meeste pinnen op de Raspberry Pi Pico W kun je voor meerdere doeleinden gebruiken. Omdat GPIO20/GPIO21 alleen voor I2C0 SDA/I2C0 SCL zijn aangeduid en geen alternatieve functies hebben, zijn deze aan te raden als je I²C op de Raspberry Pi Pico W wilt gebruiken. Zo houd je de andere pinnen vrij voor andere mogelijke doeleinden.

Let op: ESPHome zal niet opstarten wanneer je niet-ondersteunde I²C-pinnen definieert. Je kunt de firmware in dat geval ook niet meer via wifi of usb updaten. Ben je in deze ongelukkige situatie verzeild geraakt, voer dan een handmatige update uit via het .uf2-bestand met een correcte configuratie. Daarna start ESPHome wel weer op.

9 I²C-sensor aansluiten

Als voorbeeld van het gebruik van I²C sluiten we een BME280-sensor aan, die de temperatuur, luchtvochtigheid en luchtdruk meet. Ontkoppel je Raspberry Pi Pico W en sluit SDA van de sensor op GPIO20 aan (let op: in de Adafruit-versie van het BME280-sensorbordje SDI genoemd), SCL op GPIO21 (bij Adafruit SCK genoemd), GND op GND en VIN op 3V3. Voeg dan de volgende ESPHome-configuratie toe:

Hoe gezond is jouw omgeving?

Je meet het met een luchtkwaliteitsmeter

Het adres is 0x77 voor het Adafruit-BME280-sensorbordje. Heb je een BME280-sensorbordje van een andere fabrikant, dan is het adres waarschijnlijk 0x76. Installeer deze firmware op je Raspberry Pi Pico W en bekijk daarna aandachtig de logs. Krijg je te zien dat ESPHome je sensor niet vindt, verander dan het I²C-adres en/of kijk de verbindingen nog eens goed na.

10 RP2040-ondersteuning

Als je aandachtig de configuratie bekijkt die het ESPHome-dashboard voor je genereert, zie je dat in de platformconfiguratie het volgende staat:

Onder de motorkap maakt ESPHome gebruik van PlatformIO, maar die ondersteunt de Raspberry Pi Pico W officieel nog niet. Daarom dat ESPHome voor de RP2040-microcontroller de versie van Max Gerhardt gebruikt, die je in de code hierboven bij platform_version ziet staan. Gerhardt heeft niet alleen ondersteuning voor de Raspberry Pi Pico W toegevoegd, maar ook voor andere ontwikkelbordjes met de RP2040-chip.

Helaas kun je op deze manier niet een bordje zoals de Arduino Nano RP2040 Connect met wifi gebruiken in ESPHome. Die gebruikt immers de u-blox NINA-W102 voor wifi in plaats van de Infineon CYW43439 van de Raspberry Pi Pico W. Maar je kunt wel een bordje zonder wifi gebruiken, al zal dat dan niet met Home Assistant kunnen communiceren.

11 RP2040 zonder wifi

Een van die ontwikkelbordjes met een RP2040 zonder wifi is de XIAO RP2040 van Seeed Studio. Op het bordje is een WS2812-RGB-led gemonteerd, die is verbonden met GPIO12. De led moet je overigens eerst nog inschakelen door GPIO11 aan te zetten. Verder is het bordje op twee rijen voorzien van in totaal 14 GPIO-pinnen waarop je externe componenten kunt aansluiten.

Dat maakt dat je met dit minuscule bordje talloze zaken kunt automatiseren. Sluit bijvoorbeeld een sensor aan en verander de kleur van de RGB-led, afhankelijk van het overschrijden van een drempelwaarde. ESPHome maakt dit vrij eenvoudig, omdat je hiermee ook lokaal op het microcontrollerbordje zaken kunt automatiseren zonder dat er wifi-communicatie met Home Assistant nodig is. Het gebrek aan wifi op RP2040-bordjes hoeft je dus niet tegen te houden om ESPHome in te zetten.

12 Kleureffecten

Als voorbeeld tonen we hoe je de RGB-led van de XIAO RP2040 aanstuurt in ESPHome:

 Merk op dat we hier geen wifi configureren en dat we het bordje als seeed_xiao_rp2040 aanduiden. De RGB-led configureren we als een rp2040_pio_led_strip op pin 12 met één led en een lichteffect dat willekeurige kleuren toont. Na het opstarten van de microcontroller schakelen we pin 11 in en starten we daarna het effect. Sla dit bestand op en installeer het handmatig op de XIAO RP2040.

▼ Volgende artikel
Rijden met de nieuwe Renault 5: Overtreft alle verwachtingen
Mobiliteit

Rijden met de nieuwe Renault 5: Overtreft alle verwachtingen

Het is verreweg de belangrijkste auto die het merk sinds lange tijd introduceert. Met de nieuwe Renault 5 geeft het merk een flinke slinger aan zijn Renaulution. Een strategie waarmee het merk de snel veranderende automarkt met al zijn facetten omarmt. Technologie, connectiviteit en schone energie: Renault heeft een duidelijk een stip op de horizon geplaatst. De eerste kilometers achter het stuur van de nieuwe Renault 5, die vanaf 27.990 euro bestelbaar is, tonen aan dat de eerste Renaulution-vrucht een absolute gouden zet blijkt te zijn.

Download nu GRATIS het EV Duurtest-rapport 2024!

In het EV Duurtest-rapport zijn nieuwe elektrische auto's door verschillende consumenten getest. Alle resultaten vind je terug in dit digitale rapport. Door het invullen van je naam en e-mailadres meld je je aan voor ontvangst van het Kieskeurig EV Duurtest-rapport. Tevens ben je ingeschreven voor de Kieskeurig.nl EV-nieuwsbrief.

Duimpjes gegarandeerd

Begin dit jaar mocht ik er in een studio nabij Parijs al aan snuffelen. De wedergeboorte van een icoon, de nieuwe Renault 5. Goed een half jaar later staat er een knalgele (Jaune Pop) Iconic Cinq uitvoering op mij te wachten. Het merk wil met de nieuwe 5 zowel de oude generatie, zij die zich het origineel nog goed kunnen herinneren, als de jonge garde aanspreken. Een uitdaging, maar mede dankzij designtermen als 'retro futuristisch' heb ik zelden gedurende een intro zoveel enthousiaste reacties mogen ontvangen. Van jong tot oud, van surfer tot mondaine dame. De duimpjes waren haast ontelbaar!

Bekijk onderaan dit artikel een video van de nieuwe Renault 5!

©Irwin Versteegh

Standaard 18 inch

De nieuwe 5 rolt standaard op 18inch-wielen en dat geeft 'm samen met de goede proporties een sterk voorkomen. Stap ik achter het stuur, dan valt direct de lage en sportieve instap op. Ik zak weg in prima gevormd meubilair en dankzij een axiaal verstelbaar stuurwiel is een goede zitpositie snel gevonden. 

🚘Ook interessant: EV-profiel Renault Scenic E-Tech: Is de 'Auto van het Jaar 2024' écht zo goed?

©Irwin Versteegh

Andere zit dan verwacht

Toch moet ik voor de juiste ondersteuning van mijn bovenbenen net iets verder naar achteren gaan zitten. Een kantelbare zitting zou hier uitkomst bieden. Iets wat met name voor passagiers op de achterbank bovendien wat ademruimte zou verschaffen. Achter mijzelf plaatsnemen, zat er namelijk niet in. 

©Irwin Versteegh

Ontdek jouw ideale elektrische auto

Vergelijk en vind de beste deals op Kieskeurig.nl!

Ruim genoeg voor bagage

De kofferruimte blijkt ook in de praktijk prima bruikbaar. 320 liter is conform het segment en bleek ruim voldoende voor twee handbagage-reiskoffers en twee rugtassen. Staan de voorstoelen vrij ver naar achteren, dan zul je de hoofdsteunen van de achterbankleuning moeten verwijderen als je deze neer wilt klappen. 

©Irwin Versteegh

Vanaf 27.990 euro

De nieuwe Renault 5 komt er met twee accu's en voorlopig twee elektromotoren. Later volgt een derde met zo’n 90 pk. De Urban Range met 40kWh en 327 km range is leverbaar vanaf 27.990 euro. Je krijgt dan een 120 pk sterke elektromotor. De Techno-uitvoering is 2 mille duurder en de compleetste Iconic Cinq kost 31.490 euro. Voor net geen 30 mille stap je in de Comfort Range Techno. Die heeft een 52kWh batterij, een 150 pk sterke motor en een bereik van 410 kilometer volgens de WLTP-testmethode. Standaard zijn een 3-Fase 11kW boordlader, een warmtepomp en een snellaadtijd van 30 minuten. 

©Irwin Versteegh

Overtreft verwachtingen

Gedurende de dynamisch introductie heb ik zo'n 200 kilometer in het Vijfje afgelegd. Uiterst plezierige kilometers welteverstaan, want qua rijkwaliteit en plezier overtreft 'ie mijn verwachtingen. De 5 is zo wendbaar als een dartele poedel! De zeer directe (soms iets te directe) stuurinstallatie zorgt met het lage zwaartepunt van het gloednieuwe – toegewijd EV – AmpR Small platform voor een middenmotor-achtige ervaring. De 5 bijt zich in elke bocht vast, voelt fantastisch wendbaar en mede dankzij – uniek in deze klasse – een mooie Multilink-ophanging voor de achteras ligt de grens ver voorbij die van plezier.

©Irwin Versteegh

MINI-rijders kunnen naar Renault

En dit alles in combinatie met een verrassend verfijnde rijervaring. Binnen de bebouwde kom is-ie verre van 'te stug' en ondanks dat 'ie op een verkeersdrempel soms iets vergevingsgezinder zou mogen zijn, stoort dit niet. De nieuwe 5 blijkt op dit vlak zo goed, dat 'ie zelfs MINI-rijders zou weten te overtuigen. Zeker ook gezien het feit dat hij zich op de snelweg bovendien ontpopt als een fijne cruiser met een C-segment-waardige geluidsisolatie. 

Meer weten over de nieuwe Renault 5? Bekijk dan de video van InstaAutoVlog. 

Watch on YouTube

 

▼ Volgende artikel
Scherm delen via WhatsApp: zo werkt het
Huis

Scherm delen via WhatsApp: zo werkt het

Net zoals je op de pc je scherm kunt delen met een tool als TeamViewer, kun je ook je scherm delen via WhatsApp. Dit lukt zowel in een een-op-eengesprek als in een groepsgesprek. Handig als je iets op je smartphone wilt laten zien of uitleggen.

In drie eenvoudige stappen laten we zien hoe je in WhatsApp je scherm kunt delen, zodat je iets aan een ander kunt laten zien:

  • Videogesprek starten
  • Scherm delen
  • Delen stoppen

Lees ook: Privacy op WhatsApp beschermen: zo doe je dat

1 Videogesprek

Deze functie werkt zowel op de Android-, iOS- als Windows-app, maar alleen als je een videogesprek bent gestart. De optie werkt dus niet tijdens WhatsApp-spraakgesprekken. Heb je een Android-telefoon dan kun je overigens probleemloos je scherm delen met iemand met een iPhone en andersom. Houd er wel rekening mee dat alles wat op je scherm te zien is, zichtbaar wordt voor je gesprekspartner. Kijk dus uit als er bijvoorbeeld bankgegevens, foto’s of andere gevoelige informatie op het scherm staan. Net als de berichten en oproepen, versleutelt WhatsApp de inhoud van schermdeling voor extra beveiliging.

2 Laat de ander meekijken

Nieuw is dat je nu ook de audio van je smartphone op die manier kunt delen. Start een videogesprek op de gebruikelijke manier en je ziet onderaan bij de bedieningsknoppen een pictogram met drie horizontale stippen: tik hierop en klik op Deel scherm (iOS) of Scherm delen (Android). Vervolgens verschijnt er een korte uitleg van deze functie. Ga door en tik op Start uitzending (iOS) of Nu starten (Android). Hierdoor wordt de schermdeling gestart; vanaf nu kan de ander alles volgen wat er bij jou op je scherm gebeurt. Zo kun je bijvoorbeeld teruggaan naar het homescreen en ook andere apps openen terwijl de ander meekijkt. Wanneer je dit scherm verlaat, keer je terug naar het videogesprek in WhatsApp.

Handig om te weten! Ken je deze 8 handigheidjes in WhatsApp al?

3 Schermdeling stoppen

Ook iedereen die deelneemt aan een groepsvideogesprek kan een schermdeling-sessie starten. Er kan echter maar één persoon tegelijk zijn scherm delen. Om op een Android-telefoon te stoppen met delen, keer je terug naar het WhatsApp-videogesprek en tik je op Stoppen met delen. Op de iPhone tik je op het groene pictogram in de linkerbovenhoek van de statusbalk van de iPhone. Daarna tik je op de rode knop in het centrum van het scherm.

Watch on YouTube