Leg een ESP32, een klimaatsensor en een CO₂-sensor op tafel en het ziet er allemaal heerlijk overzichtelijk uit. Een paar draadjes aansluiten, wat code schrijven en daarna toevoegen aan je smart home. Althans, dat was ongeveer het optimistische beeld waarmee ik aan de HVV Matter Multisensor begon.
De praktijk bleek, zoals wel vaker bij dit soort projecten, nét even anders. De losse sensoren uitlezen was nog maar het begin. Daarna moest alles samenkomen in één firmware die betrouwbaar opstart, meetwaarden netjes verwerkt, via Matter zichtbaar wordt, opnieuw gekoppeld kan worden én uiteindelijk ook door iemand anders te installeren is.
In het kort
Matter-ontwikkeling is helaas geen kwestie van één bibliotheek installeren en gaan. Het is een complete keten van ontwikkeltools, netwerkfuncties, beveiliging, apparaatmodellen, drivers, builds en distributie. Gaat er ergens één schakel mis, dan kan de hele sensor ineens weigeren of niet meer te koppelen zijn.
De softwarestapel achter zo’n klein sensortje
De firmware van dit project rust op meerdere lagen. ESP-IDF vormt de basis voor de ESP32. ESP-Matter voegt daar alles aan toe wat nodig is om een Matter-apparaat voor Espressif-hardware te bouwen. Daar weer onder zit de open-source Matter-codebase, die je in documentatie en foutmeldingen nog regelmatig tegenkomt onder de oorspronkelijke naam Connected Home over IP, oftewel CHIP.
Iedere laag heeft zijn eigen versies, configuratiebestanden, componenten en documentatie. Een voorbeeldproject compileren lukt vaak nog wel, maar een complete eigen sensor bouwen is echt een ander verhaal. Zodra je drivers, meetwaarden en meerdere endpoints toevoegt, moet je precies weten welke laag waarvoor verantwoordelijk is en vooral: welke versies elkaar nog aardig vinden.
- ESP-IDF → vormt de technische basis en regelt onder andere hardwareondersteuning, configuratie, drivers en het bouwen van de firmware.
- ESP-Matter → voegt de Espressif-integratie toe waarmee je het Matter-apparaat en zijn functies daadwerkelijk opbouwt.
- Matter/CHIP → bevat de onderliggende standaard, datamodellen, commissioning en testgereedschappen zoals chip-tool.
Een QR-code scannen is pas het begin
Voor jou als gebruiker begint het koppelen meestal met een QR-code of cijfercode. Lekker eenvoudig. Achter die ene handeling gebeurt ondertussen een heleboel. Het apparaat moet vindbaar zijn, een beveiligde verbinding opzetten en de juiste netwerkgegevens ontvangen. Bij deze wifi-sensor wordt Bluetooth Low Energy gebruikt voor de eerste koppeling en het doorgeven van de wifi-instellingen.
Daarna moet het apparaat zich correct binnen het Matter-netwerk aanmelden en precies de juiste functies aanbieden. Een sensor kan lokaal keurig opstarten en perfecte meetwaarden tonen, maar tijdens commissioning alsnog volledig vastlopen. Andersom kan koppelen één keer lukken en daarna door achtergebleven instellingen, een halve fabrieksreset of een foutje in de configuratie ineens niet meer.
Van losse sensoren naar één betrouwbaar geheel
Ook de fysieke sensoren hebben ieder hun eigen kuren en communicatiemethode. De BME280 gebruikt I²C voor temperatuur, luchtvochtigheid en luchtdruk. De MH-Z19 communiceert via UART en levert de CO₂-meting. Beide sensoren moeten goed worden gestart, foutieve antwoorden moeten worden afgevangen en alle meetwaarden moeten daarna ook nog op de juiste manier aan Matter worden doorgegeven.
Een losse driver kan in een klein testprogramma prima werken, maar binnen de complete toepassing komen de echte vragen. Wanneer lees je de sensoren uit? Wat gebeurt er wanneer er eentje niet reageert? Hoe voorkom je dat één storing de hele firmware blokkeert? En hoe houd je de Matter-waarden actueel zonder de ESP32 onnodig bezig te houden? Juist in die samenhang zat verrassend veel van het echte ontwikkelwerk.
Waarom je blijft bouwen, flashen en testen
ESP-IDF gebruikt een op CMake gebaseerd buildsysteem met losse componenten en afhankelijkheden. Dat houdt grote projecten netjes beheersbaar, maar alleen wanneer configuratie, versies en mappenstructuur exact kloppen. Een kleine wijziging kan daardoor ineens een foutmelding opleveren op een plek waarvan je zeker weet dat je daar helemaal niet bent geweest.
- Een geslaagde build betekent alleen dat de code compileert; daarna moet de firmware nog gewoon op echte hardware bewijzen dat hij werkt.
- Een sensor die één keer koppelt is nog niet klaar: opnieuw opstarten, een fabrieksreset uitvoeren en opnieuw koppelen moeten net zo betrouwbaar werken.
- Versies van ESP-IDF, ESP-Matter en alle componenten moeten worden vastgelegd, anders is dezelfde firmware later misschien niet eens meer opnieuw te bouwen.
In de praktijk betekende dit vooral veel herhalen: code aanpassen, opnieuw bouwen, flashen, seriële logs doorspitten en testen in een echt smart home-platform. Soms leverde een complete avond speurwerk uiteindelijk één regel aangepaste code op. Andere keren bleek een ogenschijnlijk klein probleem veroorzaakt te worden door opslagruimte, configuratie of zelfs een oude build die nog ergens was blijven hangen.
Werkende code is nog geen project voor iedereen
Zodra de sensor op mijn bureau werkt, begint eigenlijk pas de volgende fase. De broncode moet overzichtelijk in Git blijven, wijzigingen moeten terug te vinden zijn en stabiele versies moeten als release worden vastgelegd. Daarna moeten de juiste firmwarebestanden worden samengesteld en op een veilige, reproduceerbare manier beschikbaar komen.
Voor de Web Installer betekent dat onder andere een getest firmwarebestand, een correct manifest en een duidelijke koppeling tussen softwareversie en hardware. Jij ziet uiteindelijk vooral een handige installatieknop. Achter die ene knop zit alleen wel het resultaat van alle eerdere keuzes rond builds, releases en distributie.
Volgende stap
Dat dit traject behoorlijk ingewikkeld werd, betekent natuurlijk niet dat jij straks dezelfde route hoeft af te leggen. Integendeel: het hele doel van deze serie is juist om het lastige werk naar de achtergrond te verplaatsen. In de volgende artikelen laat ik zien waar het project vastliep, hoe uiteindelijk een stabiele basis ontstond en hoe je de sensor straks gewoon zelf kunt bouwen.
- Lees waarom ik überhaupt besloot mijn eigen Matter-sensor te bouwen.
- Ontdek waarom Matter ondanks al die complexiteit toch de juiste keuze was.
- Bekijk de HVV Matter Multisensor Web Installer en installeer de firmware zonder complete ontwikkelomgeving.
Conclusie
Aan de buitenkant blijft de HVV Matter Multisensor gelukkig een overzichtelijk project: een ESP32, een paar sensoren en een behuizing. Achter de schermen komen embedded software, netwerkcommunicatie, beveiliging, commissioning, componentbeheer en firmwaredistributie bij elkaar. De grootste uitdaging was dan ook niet het oplossen van één foutmelding, maar begrijpen hoe al die onderdelen elkaar beïnvloeden. En precies dat ingewikkelde deel probeer ik voor je weg te nemen. Zodat jij straks vooral kunt doen waar dit project om draait: zelf een goede Matter-sensor bouwen en de firmware installeren zonder eerst een complete ontwikkelomgeving op te tuigen.