Climate & Carbon‑Aware Planner

Een huishoudplanner die elk slot van 30 minuten over 48 uur scoort op koolstof, prijs, weer en comfort — en aan elke aanbeveling een concreet cijfer hangt (£ bespaard, kg CO₂ vermeden). De koolstofintensiteit van het net verschilt doorheen de dag een factor zeven; alleen al het juiste tijdstip kan een was-en-droogcyclus terugbrengen van ~1,6 kg naar ~0,2 kg CO₂

Rol
Solo end-to-end — onderzoek, product, systeemarchitectuur, backend (FastAPI + pandas), frontend (React + Vite), data-integraties, AI-laag, DevOps
Disciplines
Product DesignUXDataPersonalisatiePrototyping
Links
Kort
  • Probleem — De koolstofintensiteit van het Britse net schommelt meerdere keren per dag (~50 tot ~380 gCO₂/kWh), maar geen enkele tool vertaalt koolstof, prijs en weer naar een huishoudschema
  • Inzicht — Alleen al het tijdstip — zelfde apparaat, zelfde lading — brengt één was-en-droogcyclus terug van ~1,6 kg naar ~0,2 kg CO₂
  • Oplossing — Ik bouwde solo een planner die elk slot van 30 minuten over 48 uur scoort op koolstof, prijs, weer en comfort, met benoemde vensters en besparingen in £/kg voor 3 steden
  • Resultaat — Live op greenhours.ontwrpn.com: 6 maanden bouwen, 5 gratis feeds, 30 geslaagde tests, ~£184/jaar en ~68 kg CO₂/jaar bespaard per Londens huishouden

Standaard koolstofadvies gaat over wat je koopt. Niemand heeft het over wanneer je het gebruikt

Op een winteravond draait het Britse net op ~380 gCO₂/kWh. Om 3 uur ’s nachts op een winderige zondag zakt dat naar ~50 gCO₂/kWh — meerdere keren lager. De meeste huishoudens behandelen beide slots als identiek. Een was-en-droogcyclus van 4,2 kWh tijdens de avondpiek stoot ongeveer 1,6 kg CO₂ uit. Dezelfde cyclus in een schoon nachtelijk dal stoot ongeveer 0,2 kg CO₂ uit. Dat verschil van 1,4 kg komt enkel door het tijdstip — zelfde apparaat, zelfde lading, zelfde energie, gewoon een ander uur.

Ik nam acht tools onder de loep voordat ik één regel code schreef. National Grid ESO toont de koolstofintensiteit, maar heeft geen prijs of planning. Octopus toont de Agile-prijzen, maar geen koolstofsignaal. Loop is louter historisch. Home Assistant vraagt hardware en een technische installatie. Wat ontbreekt: geen enkele tool versmelt koolstof × prijs × weer × comfort tot een benoemd tijdvenster met een besparingscijfer — leverancieronafhankelijk, zonder hardware.

Het probleem is niet het bewustzijn — mensen weten dat het net schommelt. Het probleem is de vertaling: een benoemd venster, een concreet bedrag in £, een concreet cijfer in kg CO₂, geen installatie nodig

greenhours.ontwrpn.com — het slotraster van 48 uur en de plannerwerkruimte

Vier weken onderzoek, geen code — databronnen, taakprofilering, ontwerp van het scoremodel

November 2025 ging volledig naar onderzoek. Week 1: concurrentieaudit van 8 tools en evaluatie van de netdatabronnen. Week 2: carbon-API’s testen voor het VK, Frankrijk en België, plus controles op de datakwaliteit. Week 3: energieprofilering van apparaten — het reële kWh-verbruik van wasgoed, vaatwasser, EV-laden en ventilatie. Week 4: ontwerp van het scoremodel en de architectuurkeuzes.

De keuze van databronnen bepaalde de hele architectuur. De UK Carbon Intensity API levert een regionale voorspelling van 48 uur — de enige gratis bron met echte vooruitkijkende koolstofdata op een regionale granulariteit van 30 minuten. Frankrijk (RTE éco2mix via ODRE) en België (Elia ods192) publiceren enkel actuele waarden, dus bouwde ik een cyclische proxy op basis van het tijdstip van de dag voor hun vooruitkijkende vensters. Electricity Maps dekt 50+ landen met een resolutie van 15 minuten, maar zit achter een betalend niveau. Open-Meteo verzorgt het weer voor alle drie de steden, gratis en zonder sleutel.

Toen ik de echte Elia ods192-data voor België integreerde, zakte de gemiddelde koolstofintensiteit van ~165 naar ~87 gCO₂/kWh — bijna de helft. Het oorspronkelijke model was niet zomaar onnauwkeurig: het zat systematisch fout over een net dat voor ~40% nucleair is

Een score-engine met 4 assen, een schuifvensterplanner en verwisselbare dataproviders

De stack is bewust minimaal: FastAPI + Python backend, React + Vite frontend, pandas voor het slotraster, SQLAlchemy bovenop SQLite lokaal en Postgres in productie. Geen berichtenwachtrij, geen workerprocessen, geen vectordatabase. Planningsverzoeken zijn klaar in enkele honderden milliseconden; de optionele Groq AI-weekbrief voegt ~1,5 s toe voor één LLM-aanroep.

Eén samengestelde score van 0–100 per slot van 30 minuten per taak, door de gebruiker gewogen via de modus. Groene modus: koolstof 55%, prijs 10%, weer 35%. Geld besparen: koolstof 10%, prijs 55%, weer 35%. Gebalanceerd: 33/33/34. Comfort is een harde drempel — geen gewogen as. Een slot dat een voorwaarde schendt (regen tijdens het buiten drogen van wasgoed) valt volledig weg, het wordt niet gewoon bestraft. Aanbevelingen zijn nooit absurd. De schuifvensterplanner test elk geldig startpunt in het raster van 48 uur, past de comfortdrempels toe en geeft een primair venster terug plus een reservevenster dat er niet mee overlapt. De zoekruimte is piepklein — ≤192 slots × 5 taken = 960 opzoekingen per verzoek — dus een exacte scan is sneller en beter controleerbaar dan een solver.

De async routes van FastAPI sturen de 3–5 upstream API-aanroepen per verzoek gelijktijdig uit met asyncio.gather. Een synchroon framework zou ze achter elkaar afhandelen en ~1,5–2 s per verzoek toevoegen. pandas verzorgt de resampling (de uurdata van Elia naar een resolutie van 30 minuten in twee regels) en de gevectoriseerde scoring over 192 slots. Afweging: ~40 MB extra op de Docker-image.

Benoemde vensters, concrete cijfers, drie steden — geen hardware, geen account nodig

greenhours.ontwrpn.com — live preview
Live demo
greenhours.ontwrpn.com
Openen

Live — kies een stad, kies een taak en bekijk het aanbevolen venster met de besparing in £ en kg CO₂

Aanbevelingskaarten met gearceerde banden voor het aanbevolen venster op het raster van 48 uur

Overzicht van 7 dagen met weekbrief gegenereerd door Groq

Modusvergelijking: Gebalanceerd vs Ga Groen vs Geld Besparen

De kostenbesparingen gelden enkel voor het VK: ze komen van de halfuurprijzen van Octopus Agile, en Frankrijk en België hebben geen gelijkwaardige gratis publieke prijsfeed. De UI labelt de munt per stad (£ vs €), zodat een cijfer nooit verkeerd wordt toegewezen. De nachtelijke EV-planner vroeg twee fixes — een naïeve same-day-voorwaarde wees starts na middernacht volledig af, en een latere code review bracht een subtielere bug aan het licht die stilletjes de schoonste slots in de vroege uurtjes liet vallen. De echte fix bewaakt een absoluut moment waarop het venster opengaat, gedekt door een regressietest. Een herinnering dat “werkt op het happy path” en “is correct” twee verschillende claims zijn.

Geschat ~£184/jaar en ~68 kg CO₂/jaar per Londens huishouden dat de aanbevelingen volgt

Berekend op basis van live netdata tegenover een vastgelegde basislijn (Britse avondpiek, 17:00–20:00). Gaat uit van één Londens huishouden dat de aanbevelingen consequent volgt. EV-laden (slim vs insteken-en-vergeten): ~36 kg CO₂/jaar bespaard. Wasgoed aan de lucht drogen (droogtrommel vermeden, 52 wasbeurten): ~32 kg CO₂/jaar bespaard. Kostenbesparing EV (Agile nacht vs avond): ~£125/jaar. Kostenbesparing wasgoed (Agile dal vs piek): ~£59/jaar. Bij 1.000 Britse huishoudens die de aanbevelingen voor EV + wasgoed volgen: ~68 ton CO₂/jaar — gelijk aan zo’n 15 auto’s minder op de weg.

Wat ik anders zou doen: starten met Neon in plaats van Render Postgres (het verwijderbeleid na 90 dagen is een valkuil waar ik halverwege het project in trapte). Meten voor je optimaliseert — de engine heeft geen telemetrie over de vraag of gebruikers de aanbevolen vensters effectief volgen; zelfs een binaire “heb je dit gevolgd?” zou de feedbacklus sluiten. De basislijn expliciet maken in de UI: een gebruiker die al rond de middag plant, ziet een kleinere besparing en wantrouwt het cijfer misschien. En de modustoggle herbekijken als UX-probleem — wie om 09:00 Gebalanceerd kiest, wil om 22:00 misschien Groen, wanneer nachtladen zo goed als gratis is.

Bouwfeiten: 6 maanden, solo, van onderzoek tot uitrol. 3 steden (Londen, Parijs, Antwerpen) met live koolstofdata. 5 taaktypes. 5 live databronnen, allemaal gratis niveau. 30 unit tests, allemaal geslaagd. Zelf gehost op Coolify (eigen VPS); €0 datakosten.

Bronnen

Volgend project
Open Science Collaboration Network