Homelab.
De hardware waar al het andere op deze site op draait.
Twee delen die als één werken. Een gesegmenteerd netwerk (een open-source firewall, meerdere VLAN's) en een zelflerend klimaat- + energiesysteem (een eigen controller, met BigQuery erachter). De andere technische projecten op deze site draaien hierbovenop. De configuratie zelf staat in privé-repo's — deze pagina is de bewust op hoofdlijnen gehouden publieke versie, met opzet licht op de details.
Meerdere VLAN's, met opzet gesegmenteerd.
Het netwerk bestaat zodat de rest van het systeem kan bestaan. Elke dienst die lokaal draait — klimaat, audio, beveiliging, automatiseringen — zit op een VLAN dat past bij zijn vertrouwensniveau. Een apparaat dat zich misdraagt wordt ingedamd door zijn eigen segment, niet door het geduld van de firewall.
| VLAN | Doel |
|---|---|
| Management | De netwerkinfrastructuur zelf — firewall, switches, controllers. |
| Secure | Apparaten met hoog vertrouwen, waaronder de camera-opnames. Strakke egress. |
| Trusted | Persoonlijke laptops, telefoons, werkstations. |
| IoT | Smarthome-apparaten die nooit met iets mogen praten zonder dat ze daar een reden voor hebben. |
| Guest | Iedereen die op bezoek is. Geen lateraal verkeer. |
| Bootstrap (legacy) | Een pad dat er alleen is om te bootstrappen, zodat een verkeerde configuratie op een VLAN het netwerk nooit van zichzelf buitensluit. |
De vorm van de hardware
| Laag | Details |
|---|---|
| Firewall | Een open-source firewall/router-OS verzorgt routering, DHCP en de WAN-overdracht. De provider levert WAN op een getagd VLAN — die ene overdracht is het dragende stuk tussen het huis en het internet. |
| Switching | Een managed switching-stack: een 10Gb-aggregatielaag naar 1Gb-distributie over glasvezel. |
| Wireless | Meerdere accesspoints van één leverancier. Twee SSID's worden uitgezonden — één gekoppeld aan het Trusted VLAN, één aan het IoT VLAN — zodat een slimme lamp nooit op hetzelfde broadcast-domein belandt als een laptop. |
| Cameras | Een gesegmenteerd camerasysteem op een aparte recorder. De opnames blijven op het Secure VLAN; egress wordt aan de netwerkgrens door de firewall tegengehouden. |
| Inter-VLAN services | mDNS-reflectie, UDP-broadcast-relay en IGMP Proxy per VLAN geconfigureerd. Nodig om AirPlay en multi-merk multiroom-detectie over de segmenten heen te laten werken. |
Eén hub, één eigen controller.
De klimaatkant is een zelflerende thermostaat met echte terugkoppellussen, geen thermostaat met een app. Verlichting en aanwezigheid draaien op dezelfde hub via dezelfde scriptinglaag.
| Laag | Details |
|---|---|
| Controller | Een eigen controller — seizoensbereiken, voorkoming van koude voeten, comfort-signaalmodel. Eerdere controller-versies worden als referentie bewaard, zodat afwijkend gedrag te debuggen is. |
| Heating | Meerdere vloerverwarmingszones via Z-Wave-relais, met meer in de planning. De warmtepomp wordt aangestuurd door een wandrelais in plaats van door de eigen ingebouwde thermostaat. |
| Air conditioning | Meerdere airco-units achter een cloud-API van de fabrikant. Die API is gelimiteerd, dus de controller behandelt de pollfrequentie als een vast budget. |
| Sensors | Temperatuursensoren die een thermisch model voeden. De thermische vertraging per kamer wordt gemeten en gebruikt in de vooruitblik van de controller. |
| Heating-rate ceiling | Verwarmingssnelheidsplafonds per kamer worden gemeten. De controller respecteert ze — alles wat sneller gaat, is een sensor die verkeerd rapporteert, geen comfortwinst. |
| Lighting | Tientallen flows en scripts. Per kamer bewust van aanwezigheid, scène en beweging. 'Adaptief' in de zin dat de regels zich aanpassen aan het tijdstip en de modus van het huis, niet in de zin dat een LLM de temperatuur kiest. |
Het huis loopt vooruit op het net.
Dynamische Nederlandse energieprijzen veranderen elk uur en de curve van morgen komt na 13:00 binnen. De controller plant verwarming, EV-laden en accu-inzet voor de komende 24 uur — niet voor de huidige prijs.
| Systeem | Rol |
|---|---|
| Dynamische prijsfeed | Een Nederlandse dynamische-prijzenfeed (de prijzen van morgen komen na 13:00 binnen). De controller plant verwarming + EV-laden tegen de prijscurve, niet tegen de klok. |
| Zon + accu | Zonneproductie en een thuisaccu. De accu wordt ingezet tegen dezelfde prijscurve die de verwarming leest. |
| EV-laden | EV-laden via de wandlader, aangestuurd door de prijsfeed. Standaard laden tijdens goedkope vensters; met de hand te overrulen wanneer nodig. |
| Load shedding | Zodra de netbelasting de contractlimiet nadert, schakelt de controller de laagst geprioriteerde verbruikers af (eerst die je mag uitstellen) in plaats van de hoofdzekering te laten springen. |
| EVs | De laadstatus van de voertuigen rapporteert naar hetzelfde dataplatform; het laden synchroniseert tegen dezelfde prijs- + belastingscurve. |
Multi-merk audio — op één structuur.
Multi-merk audio op een gesegmenteerd netwerk is vooral een multicast-probleem. mDNS-reflectie, IGMP Querier en STP-prioriteit zijn de weinig glamoureuze primitieven die multiroom over VLAN's heen "gewoon laten werken".
| Merk | Details |
|---|---|
| Primary multiroom stack | Een gekoppelde set die strakke kloksync nodig heeft — opgevangen op de switch — plus een vendor-API. Doet multiroom en Apple AirPlay door alle kamers heen. |
| Second multiroom brand | Geconfigureerd met STP-prioriteit + IGMP Querier zodat multicast-detectie het gesegmenteerde VLAN-netwerk overleeft. |
| WiFi-only pair | Bewust op hetzelfde VLAN als de controller gehouden, op 5GHz, zodat de automatische koppeling van de fabrikant überhaupt werkt. |
Hub → Cloud Run → BigQuery.
Hetzelfde dataplatform achter elke interessante beslissing in huis. Elk apparaat, elke vijf minuten — een echte tijdreeks, gevalideerd bij binnenkomst en langdurig bewaard voor analyse.
| Laag | Details |
|---|---|
| Capture | De hub pollt elke 5 minuten elk apparaat — sensoren, schakelaars, klimaatunits, EV-laders, alles. |
| Validate + ingest | Een Cloud Run-worker valideert de payload, gooit misvormde rijen weg en voegt ze toe aan BigQuery. |
| Analyse | BigQuery is de langetermijnopslag. Het fitten van het thermisch model, backtests van de energie-arbitrage, analyse van verlichtingspatronen — allemaal SQL op dezelfde data. |
| Loop back | Lessen uit de offline-analyse worden controller-versiestappen. De productielus blijft simpel; de analyselus blijft nieuwsgierig. |
De lessen die het netwerk met vallen en opstaan leerde.
- Segmenteer voordat je optimaliseert
- Het IoT-segment bestaat zodat een slim apparaat met twijfelachtige firmware fysiek niet naar een werkstation kan overspringen. Elk ander 'smarthome'-probleem is makkelijker zodra dat klopt.
- Houd een bootstrap-pad open
- Een bootstrap-pad naar de firewall blijft bestaan. Niet voor productie — voor de dag dat een VLAN-wijziging fout is en de firewall bereikt moet worden zonder de configuratie die kapot is.
- Eén bron van waarheid per dienst
- Eén DHCP-dienst, geen drie. Configuraties die 'grotendeels' werken omdat meerdere diensten elkaar grotendeels afstemmen, zijn hoe netwerken in stilte verrotten.
- Inter-VLAN-diensten zijn expliciet, niet impliciet
- mDNS-reflectie, UDP-broadcast-relay, IGMP Proxy. Elk per VLAN opgeschreven, want elk audiomerk heeft net een andere variant nodig en er één vergeten breekt de multiroom op een subtiele manier.
- Klimaat is een controller, geen chatbot
- De thermostaat is een deterministisch model met seizoensbereiken en voorkoming van koude voeten. Geen LLM kiest het setpoint. AI woont in de offline-analyselaag die uitlegt waarom een zone zich vreemd gedroeg — niet in de productielus.
- Energie-arbitrage gebruikt de prijzen van morgen
- De prijscurve van de volgende dag verschijnt na 13:00. Verwarmingsvensters + EV-laadschema sturen op de komende 24 uur, niet op het huidige uur. Het huis loopt vooruit op het net.
- Cloud-API's hebben budgetten, geen richtlijnen
- Sommige cloud-API's van fabrikanten zijn gelimiteerd. De controller behandelt de limiet als een hard budget — past de pollfrequentie aan zodat die nooit wordt geraakt en de API responsief blijft.
- Logs zijn de waarheid op de grond
- Elke meting, elke beslissing van de controller, elke apparaatstatus landt in BigQuery. Elk vreemd gedrag is terug te herleiden. Het dataplatform is de debugger.
De helft is vakwerk om het vakwerk — een echt netwerk thuis draaien is een voorrecht en een hobby. De andere helft is operationeel: als Luminary een verse checkout nodig heeft om vanaf te deployen, of Shop Life een privé-WhatsApp-webhook nodig heeft om te laten landen, of Bedtime Stories een plek nodig heeft om te renderen die niet per verbruik wordt afgerekend — dan is de homelab de vloer waar al het andere op staat. Alleen daarom al de moeite van het opschrijven waard.