Projects / AeroGrid replay

AeroGrid replay

AeroGrid is a research demo of a home energy planner. It decides when to charge the EV, run the hot-water heater, start the dishwasher and use a home battery, based on German wholesale electricity prices.

This page replays four days from one run of its simulator. Each day is shown three ways: with no optimiser, with the optimiser, and with the optimiser plus a home battery. The results were recorded offline, so nothing runs live and the settings cannot be changed. You can only watch.

Replay

Scenario

A typical weekday

Thursday 16 April 2026. Prices stay positive, lowest in the early afternoon (34 €/MWh) and highest in the evening (206 €/MWh).

01 /

All scenarios

Electricity cost for each 24-hour window, from 09:00 to 09:00 the next morning German time. That window holds one full EV charge and both daily hot-water deadlines. Savings are against no optimiser; a percentage is left out when the no-optimiser day costs almost nothing. A negative cost means the household was paid for the electricity it used.

Electricity cost per scenario and strategy
ScenarioPrice range, €/MWhNo optimiserOptimiserOptimiser + home battery
A typical weekday2026-04-1634 to 206€7.59€6.79saves €0.81 (10.6 %)€5.52saves €2.08 (27.4 %)
Negative prices2026-04-05-115 to 36€0.01-€0.72saves €0.72 (–)-€2.28saves €2.28 (–)
Evening price spike2026-04-1024 to 315€8.04€6.68saves €1.36 (16.9 %)€6.01saves €2.03 (25.2 %)
Wide price swing2026-04-06-147 to 210€4.07€3.76saves €0.31 (7.6 %)€1.29saves €2.78 (68.3 %)
02 /

How this was made

The run

  • One run of AeroGrid's 1 Hz digital twin (uv run python -m aerogrid.sim.digital_twin) over its built-in window, 3 to 18 April 2026, at commit ad6a6c5. The four days above are cut from that one run.
  • Prices are real SMARD day-ahead prices for the Germany–Luxembourg zone at 15-minute resolution. Cost is energy times the wholesale price, with no grid fees, taxes or retail margin.
  • The optimiser does not see the day's prices in advance. It plans with a naive forecast built from earlier days and replans as real prices arrive.
  • The approval step was answered by AeroGrid's simulated user (its default auto-confirm mode): proposals to delay the dishwasher are accepted, the washing machine always runs at once, and proposals that save less than €0.10 are not asked.
  • Costs and energy follow AeroGrid's slot log. It records each device's power at the start of every 15-minute slot and bills that power for the whole slot, so changes the optimiser makes in the middle of a slot are missed and a device's daily energy can be off its target by up to about half a kWh. On negative-price days the optimiser also runs the hot-water heater beyond its target, because using power then earns money. The day result lists each device's energy.
  • The home battery (13.5 kWh) carries its charge from one day into the next. The day result shows its charge at the start and end of the window; stored energy left at the end is not counted in the cost.

Known gaps

From the AeroGrid README:

  • Appliance cycles are rectangular: the dishwasher always draws 2.5 kW for 2 hours.
  • Appliance starts come from a fixed list in the configuration, not from detection.
  • The EV needs a fixed 24 kWh every day, plugged in from 22:00 and needed by 09:00 German time. There is no EV battery model.
  • No solar panels and no export to the grid. The battery only offsets the household's own load.
  • The price forecast has no predictive power beyond earlier days' profile and no uncertainty model.
  • The README's 8 kW power-cap scenario is an optimiser notebook example, not part of the digital twin, so it is not replayed here. The twin uses a 10 kW house cap.

AeroGrid code on GitHub