How Franzl decides

What is a stored kilowatt-hour worth? The question sounds harmless — it's where most home-built controllers fail.

One night as an example

A household with solar, a home battery and an hourly-priced tariff. The driver has set a price limit: whenever power drops below 30 cents, the car may charge extra. At two in the morning the window opens and the car pulls almost 12 kWh — but only 4 of them come from the grid. The other 7.7 kWh come out of the home battery.

That looks like a bug. The whole point of a price limit is to grab cheap grid power — not to drain your own storage and buy it back at a premium later. That's exactly how we judged it at first glance, too.

Then the next morning happened: by 11 a.m. the battery was full again from the sun, and by evening the house had exported 44 kWh it couldn't use. Those 7.7 kWh from the battery had really only cost the forgone feed-in payment — about 8 cents per kWh instead of 30. Draining the battery was the cheapest decision of the whole night.

And here's the interesting part: in winter, the exact same decision would be wrong. If no sun is coming tomorrow, every kWh taken out tonight gets bought back during the expensive morning — then the battery must be held through the cheap window and the car charged from the grid instead.

The shadow price

A stored kilowatt-hour has no fixed value. Its value is that of its best alternative — and that changes hour by hour:

A rule of thumb ("never use the battery for the car" or "battery first, always") gets one of those two cases wrong every time. So Franzl doesn't answer the question with a rule but with an optimization model over the next 24 hours: electricity prices, the solar forecast, the state of charge, storage losses and your wishes ("car full by 6:00") all sit in the same calculation, and for every hour it falls out whether the battery may give or must hold. In a two-week simulation this calculation beats both rules of thumb in both seasons — with identical energy delivered.

The same thinking runs the heat: a hot-water tank is storage too, just in degrees instead of percent. Franzl learns its loss rate from its own measurements and can then compute how much pre-heating pays off before an expensive evening — instead of guessing. In the 14-day simulation on an hourly tariff: €15.28 instead of €23.43 for practically the same 100 kWh of heat. (Simulation with the real production code, not a customer promise — who hourly pricing actually pays off for is covered here.)

Two clocks

The plan alone isn't enough, because weather doesn't follow forecasts. So Franzl runs on two clocks:

Devices don't always tell the truth

The uncomfortable field experience behind many Franzl rules: status words lie. A wallbox reports "charging" while in truth 83 watts of the car's onboard charger standby are flowing. A meter drops out and delivers nothing for hours. A temperature sensor only moves in half-degree steps.

So Franzl fundamentally believes the measurement, not the claim:

Calm is a feature

A controller that reacts to every cloud instantly will cycle the wallbox contactor every few minutes on a changeable morning — wear on the hardware, and the car answers every stop with a push notification from its manufacturer's app. Franzl therefore deliberately regulates asymmetrically: up slowly, down immediately. Short dips are ridden out, minimum pauses are respected, and before a planned stop the car is ended cleanly first, then the wallbox — so your phone stays quiet.

And one rule that sounds trivial and isn't: no commands for things that happen anyway. The inverter's own energy management handles a lot by itself — Franzl only commands where doing so actually changes something. Less radio chatter, less flash wear, fewer surprises.

Proven, not claimed

Every one of these decision rules is checked on three levels before it reaches you: regression tests for every single case, a closed-loop simulation that drives the real production code through simulated weeks against a physical house model — it has already found bugs thousands of unit tests couldn't —, and field tests on our own installations, with real money on the power exchange. The night at the top of this article was one of those tests.

That's the honest reason we're writing this article: not because the math is secret. But because between "works in the diagram" and "works on your installation" lie hundreds of small truths — lying status words, jumpy sensors, wandering IP addresses, cloud edges — that you only learn in the field. You don't rebuild that in a weekend in your own smart home. You don't have to, either: here's how Franzl works at your place.

Curious what Franzl gets out of your setup? The device check tells you in 30 seconds.

To the device check