Hoofdstuk 12 van 14

Eindproject — De Werkplaats-klimaatmonitor

Breng led, drukknop en BME280 samen in een ESPHome-klimaatmonitor voor De Werkplaats en test hardware, integratie en uitval.

We hebben de afzonderlijke onderdelen leren kennen. Nu gaan we ze combineren. Niet om zo veel mogelijk functies op één ESP32 te zetten, maar om een klein apparaat te maken waarvan we iedere functie begrijpen.

Het ontwerp

Onze klimaatmonitor meet temperatuur, luchtvochtigheid en luchtdruk met een BME280. Een drukknop bedient lokaal een status-led. Home Assistant ontvangt de klimaatwaarden via de native API en kan bij een te hoge temperatuur een melding tonen.

De ESP32 werkt lokaal door als de verbinding met Home Assistant ontbreekt: de sensor blijft uitleesbaar door de firmware en de knop kan de led blijven omschakelen. We claimen hiermee niet dat metingen tijdens een netwerkstoring automatisch historisch worden bewaard; voor lokale buffering zou extra configuratie nodig zijn.

Dit heb je nodig

Een ESP32-WROOM-32-ontwikkelbord, BME280-module die op 3,3 volt werkt, led, 330-ohmweerstand, drukknop, breadboard, jumperdraden, USB-datakabel en een geschikte USB-voeding. Een multimeter helpt bij het controleren van de verbindingen.

Het aansluitschema in woorden

Onderdeel Aansluiting ESP32
Led Anode via 330 Ω GPIO23
Led Kathode GND
Drukknop Eerste zijde GPIO18
Drukknop Tweede zijde GND
BME280 Voeding, geschikt voor 3,3 V 3V3
BME280 GND GND
BME280 SDA GPIO21
BME280 SCL GPIO22

Controleer of de twee kanten van de drukknop daadwerkelijk de contactpunten zijn die bij indrukken met elkaar worden verbonden. Controleer de BME280-pinnen op je eigen module. Koppel de USB-voeding los tijdens het aansluiten.

De configuratie samenbrengen

Maak in de Device Builder een nieuw apparaat werkplaats-klimaatmonitor. Gebruik de wizard om de volledige basisconfiguratie voor jouw bord, wifi, API-beveiliging en OTA-instellingen te genereren. Vervang die basis niet door onderstaande tekst: voeg de volgende secties toe aan het door de wizard aangemaakte YAML-bestand.

# Klimaatsensor via de I²C-bus
i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true

sensor:
  - platform: bme280_i2c
    address: 0x76
    temperature:
      name: "Werkplaats temperatuur"
      id: werkplaats_temperatuur
    humidity:
      name: "Werkplaats luchtvochtigheid"
    pressure:
      name: "Werkplaats luchtdruk"
    update_interval: 30s

# De led wordt bij het opstarten uitgeschakeld
switch:
  - platform: gpio
    name: "Werkplaats statusled"
    id: werkplaats_statusled
    pin: GPIO23
    restore_mode: ALWAYS_OFF

# De knop werkt lokaal, zonder tussenkomst van Home Assistant
binary_sensor:
  - platform: gpio
    name: "Werkplaats drukknop"
    pin:
      number: GPIO18
      mode:
        input: true
        pullup: true
      inverted: true
    filters:
      - delayed_on: 20ms
      - delayed_off: 20ms
    on_press:
      then:
        - switch.toggle: werkplaats_statusled

Gebruik address: 0x77 wanneer jouw sensor daarop reageert. Controleer de configuratie en installeer hem. Verander niet meteen meerdere onderdelen wanneer je een foutmelding krijgt.

De eerste test: werkt de hardware?

Controleer de opstartlogs. Zie je dat de BME280 op het ingestelde adres wordt gevonden? Kijk daarna of temperatuur, luchtvochtigheid en luchtdruk verschijnen. Noteer de waarden. Druk vervolgens eenmaal op de knop en kijk of de led van toestand verandert.

Wanneer de led werkt maar de sensor niet, hoeven we de knopschakeling niet opnieuw te bouwen. De fout bevindt zich waarschijnlijk bij de sensor, I²C-bus of bijbehorende configuratie.

De tweede test: werkt de integratie?

Voeg het apparaat toe via Instellingen → Apparaten en diensten → ESPHome. Controleer de meetwaarden en de toestand van de drukknop en led. Vergelijk de temperatuur met een thermometer in dezelfde ruimte.

Maak pas daarna de temperatuurautomatisering uit het vorige hoofdstuk. Test eerst de actie en daarna de echte overgang over de drempelwaarde.

De derde test: wat gebeurt er wanneer iets wegvalt?

Laat de ESP32 aanstaan en maak Home Assistant gecontroleerd tijdelijk onbereikbaar. Controleer of de drukknop nog steeds de led bedient. Herstel daarna de verbinding en kijk of Home Assistant de actuele waarden opnieuw ontvangt.

Test ook een stroomonderbreking door de USB-voeding los te koppelen en daarna opnieuw aan te sluiten. De led hoort volgens onze keuze bij het opstarten uit te zijn. De BME280 moet weer worden gevonden en het apparaat hoort weer op het netwerk te verschijnen.

Van breadboard naar een blijvend project

Een breadboard is geschikt om te leren en te testen. Voor langdurig gebruik verdient een stevigere verbinding de voorkeur. Zorg voor trekontlasting van kabels, een geschikte voeding, een veilige behuizing en voldoende luchtcirculatie rond de BME280.

Plaats de sensor niet strak tegen de ESP32 en niet vlak bij warmtebronnen. Anders meet je mogelijk de warmte van het apparaat in plaats van de temperatuur van De Werkplaats.

Leg in een projectnotitie vast welke pinnen je hebt gebruikt, welk I²C-adres werkt, waar de definitieve YAML is opgeslagen en hoe je de hardware kunt herstellen als OTA ooit niet meer werkt.

Wat je uit dit hoofdstuk kunt meenemen

Je hebt nu een complete route doorlopen: een idee bedenken, onderdelen selecteren, veilig aansluiten, YAML opbouwen, firmware installeren, metingen controleren, koppelen aan Home Assistant en storingen bewust testen. Het is geen eindpunt. In het volgende hoofdstuk bekijken we hoe je vanuit deze basis je eigen projecten ontwerpt.