Skip to content
D · 06 · TECHNICAL WRITE-UP

Homelab.

De hardware waar al het andere op deze site op draait.

Twee delen die als één werken. Een gesegmenteerd netwerk (OPNsense + UniFi, zes VLAN's) en een zelflerend klimaat- + energiesysteem (Homey Pro v18, 152 apparaten, BigQuery erachter). De andere technische projecten op deze site draaien hierbovenop. De documentatie staat in twee privé-repo's — deze pagina is de publieke versie.

  • SCOPE Eén huis · productie
  • APPARATEN 152 over 31 zones (klimaatkant) · 7 APs · 7 camera's (netwerkkant)
  • DATA Bemonstering elke 5 minuten → Cloud Run → BigQuery
  • STATUS Productie · docs privé · deze pagina is de samenvatting
01 · HET NETWERK

Zes 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.

VLANDoel
ManagementDe netwerkinfrastructuur zelf — firewall, switches, controllers.
SecureApparaten met hoog vertrouwen, waaronder de beveiligingsrecorder. Strakke egress.
TrustedPersoonlijke laptops, telefoons, werkstations.
IoTSmarthome-apparaten die nooit met iets mogen praten zonder dat ze daar een reden voor hebben.
GuestIedereen die op bezoek is. Geen lateraal verkeer.
Management LAN (legacy)Een pad dat er alleen is om te bootstrappen, zodat een verkeerde configuratie op een VLAN het netwerk nooit van zichzelf buitensluit.

De hardware erachter

LaagDetails
FirewallOPNsense met ISC DHCPv4. KPN levert WAN als PPPoE over VLAN 6 — die ene configuratie is het dragende stuk tussen het huis en het internet.
SwitchingUniFi Aggregation (10Gb-uplink van KPN) → PoE Pro-switch (10Gb naar Aggregation) → USW24 voor distributie (1Gb glasvezel).
WirelessZeven UniFi-accesspoints. 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.
CamerasZeven UniFi Protect-camera's + één UNVR. De opnames blijven op het Secure VLAN; egress wordt aan de netwerkgrens door de firewall tegengehouden.
Inter-VLAN servicesmDNS-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.
02 · KLIMAAT + VERLICHTING

Eén Homey Pro, één v18-controller, 152 apparaten.

De klimaatkant is een zelflerende thermostaat met echte terugkoppellussen, geen thermostaat met een app. Verlichting en aanwezigheid draaien op dezelfde hub via dezelfde scriptinglaag.

LaagDetails
ControllerEigen Homey Pro v18 — seizoensbereiken, voorkoming van koude voeten, comfort-signaalmodel. De vorige controllers (v14 → v17) worden als referentie bewaard, zodat afwijkend gedrag te debuggen is.
HeatingVijf actieve vloerverwarmingszones (1e verdieping) via Fibaro Smart Implant. Drie zones op de begane grond staan nog op de planning. De warmtepomp wordt aangestuurd door een Fibaro Q2-wandrelais in plaats van door de eigen thermostaat van de warmtepomp.
Air conditioningZes Daikin-units. De Daikin cloud-API is gelimiteerd tot 200 calls/dag per account, waar de controller zich aan houdt — de pollfrequentie is het budget.
Sensors25+ temperatuursensoren die een thermisch model voeden. De thermische vertraging per kamer is gemeten (35–55 min in totaal) en wordt gebruikt in de vooruitblik van de controller.
Heating-rate ceilingMaximaal gemeten 1.58°C/uur (Bijkeuken). De controller respecteert plafonds per kamer — alles wat sneller gaat, is een sensor die verkeerd rapporteert, geen comfortwinst.
Lighting30 flows + 24 HomeyScript-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.
03 · ENERGIE-ARBITRAGE

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.

SysteemRol
TibberDynamische energieprijzen (de prijzen van morgen komen na 13:00 binnen). De controller plant verwarming + EV-laden tegen de prijscurve, niet tegen de klok.
EnphaseZonneproductie + thuisaccu. Het verversen van het JWT-token wordt door de integratie afgehandeld; de accu wordt ingezet tegen dezelfde prijscurve die de verwarming leest.
ZaptecEV-laden via de wandlader, aangestuurd door de Tibber-prijzen. Standaard laden tijdens goedkope vensters; met de hand te overrulen wanneer nodig.
Load sheddingenergie_loadshed.js — 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.
EVsDe laadstatus van de voertuigen rapporteert naar hetzelfde dataplatform; het laden synchroniseert tegen dezelfde prijs- + belastingscurve.
04 · AUDIO

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".

MerkDetails
Primary multiroom stackEen gekoppelde set die PTP-sync nodig heeft — EEE uitgeschakeld op de switchpoort om de klok stabiel te houden — plus een vendor-API op een vaste poort. Doet multiroom en Apple AirPlay door alle kamers heen.
Second multiroom brandGeconfigureerd met STP-prioriteit + IGMP Querier zodat multicast-detectie het gesegmenteerde VLAN-netwerk overleeft.
WiFi-only pairBewust op hetzelfde VLAN als de controller gehouden, op 5GHz, zodat de automatische koppeling van de fabrikant überhaupt werkt.
05 · DATAPIPELINE

Homey Pro → Cloud Run → BigQuery.

Hetzelfde dataplatform achter elke interessante beslissing in huis. 152 apparaten × bemonstering elke 5 minuten = een echte tijdreeks, gevalideerd bij binnenkomst en langdurig bewaard voor analyse.

LaagDetails
CaptureHomey Pro pollt elke 5 minuten 152 apparaten — sensoren, schakelaars, klimaatunits, EV-laders, alles.
Validate + ingestEen Cloud Run-worker valideert de payload, gooit misvormde rijen weg en voegt ze toe aan BigQuery (home_data.measurements).
AnalyseBigQuery is de langetermijnopslag. Het fitten van het thermisch model, backtests van de energie-arbitrage, analyse van verlichtingspatronen — allemaal SQL op dezelfde tabel.
Loop backLessen uit de offline-analyse worden controller-versiestappen (v17 → v18). De productielus blijft simpel; de analyselus blijft nieuwsgierig.
06 · OPVALLENDE ONTWERPKEUZES

De lessen die het netwerk met vallen en opstaan leerde.

Segmenteer voordat je optimaliseert
Zes VLAN's. Het IoT VLAN 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
Het management-LAN op het untagged native subnet blijft bestaan. Niet voor productie — voor de dag dat een VLAN-wijziging fout is en de firewall bereikt moet worden zonder de VLAN-configuratie die kapot is.
OPNsense, één eigenaar
ISC DHCPv4 staat aan; Kea en Dnsmasq staan uit. Eén DHCP-dienst, één bron van waarheid. 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 v18-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
Tibber publiceert de prijscurve van de volgende dag na 13:00. Verwarmingsvensters + EV-laadschema sturen op de komende 24 uur, niet op het huidige uur. Het huis loopt vooruit op het net.
Daikins ratelimiet is het pollbudget
200 calls/dag per Daikin-account. De controller behandelt dat als een hard budget, geen richtlijn — past de pollfrequentie per unit aan zodat de limiet 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 via de sensor_uploader-pipeline. Elk vreemd gedrag is terug te herleiden. Het dataplatform is de debugger.
WAAROM DIT BESTAAT

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.