Home Energy Insight: Making Tomorrow's Energy Decisions Today
It’s 10pm. Your home battery is at 40%. Should you charge it from the grid tonight, or wait for tomorrow’s solar?
To answer that honestly, you need three pieces of information simultaneously: tomorrow’s solar forecast, tonight’s cheapest rate slot from your smart tariff, and which hour on the national grid is going to be greenest. Right now those answers live in four different apps. You’re switching between Octopus Energy’s pricing dashboard, the UK Carbon Intensity forecast website, your Solax inverter app, and Home Assistant. Three questions. Four apps. No unified view.
This is the problem that became a system.
The Gap
The infrastructure existed. Octopus publishes tomorrow’s half-hourly electricity rates at 4pm every day. The National Grid publishes a 48-hour carbon intensity forecast — how carbon-heavy the grid will be each half-hour. Your Solax inverter streams live generation data. Your Victron battery system logs every charge and discharge cycle.
They just didn’t talk to each other.
I’m not someone who likes switching between dashboards. I built four async Python clients to pull this data reliably into Home Assistant: aiooctopusenergy for Octopus rates and usage history, aiosolax for real-time inverter metrics, aioukcarbon for grid carbon intensity forecasts, and aiovictron for battery state of charge.
The Modbus TCP detail on aiovictron is the interesting one. Victron systems don’t use REST APIs — they use Modbus TCP, an industrial protocol from the 1980s. I’d spent years at work dealing with substations and OT (operational technology) systems; Modbus is what those speak. Building an async Modbus TCP client at home bridged that professional world with a personal problem. I was suddenly reusing knowledge I didn’t expect to use outside the office.
Four libraries became four Home Assistant custom integrations. Each exposes data as entities — rates, generation, carbon forecast, battery state of charge. For the first time, all the data lived in one place.
The Unlock
Now I’m not deciding based on what’s happening now. I’m deciding based on what happens tomorrow.
Tomorrow’s solar forecast: 35kWh generation predicted. Historical usage pattern: about 5kWh (mornings and afternoons). The math is obvious — I don’t need to charge from the grid. I can keep the battery at 60%, let tomorrow’s solar top it up, and avoid a charging cycle.
But what if tomorrow’s cloudy? Forecast: 8kWh generation. Usage: 8kWh. Now I need to charge. So I open Home Assistant and check: which overnight slot is cheapest on Octopus? Which slot is greenest on the UK Carbon forecast? If they’re the same, it’s easy. If they’re different, I make a choice. Some nights I optimise for cost. Some nights I optimise for carbon. Now I can choose because I have the information.
The same logic applies to the PHEV. When I plug in at 6pm, the question is the same: not whether to charge (that’s decided — the car needs range), but when. Charge immediately or defer to 3am when rates drop and the grid is cleaner? The forecast tells me if it matters. If I need the car tomorrow morning, I charge now. If I have flexibility, I wait for the optimal slot.
This isn’t theory. This is what I actually do every evening with both the home battery and the car. It’s changed how I think about energy consumption.
The Dashboards
The Energy Correlation Card shows generation versus consumption in real-time — a simple XY plot where I watch solar feed directly into the house, or (at night) watch grid imports climb. Immediate, visceral feedback about energy flowing through the house.
The Energy Dashboards layer everything together: today’s generation and consumption, tomorrow’s forecast, tonight’s charging options, grid carbon intensity overlaid on the timeline. One view answering the question I’m asking at 10pm: “What should I do with this battery tonight?”
The Honest Part
The dashboards work. I check them every evening and make better decisions than I used to. But there’s still a human in the loop. I’m the decision-maker. I read the forecast, I check the rates, I decide when to charge the home battery and when to charge the car. Tomorrow’s electricity price is published at 4pm, and I manually adjust my charging plans based on it.
The system is optimised, but it’s not autonomous.
What’s Next
The real victory would be autonomy. Your home optimises itself without requiring a human to read a dashboard every evening. Battery charges at 3am because that’s the cheapest and cleanest slot. Washing machine defers its run to 2am when rates are off-peak. Aircon cycles on at noon when solar generation is peaking (and you’d otherwise be exporting excess power to the grid). Every flexible load in the home reading the same forecasts and scheduling itself for the optimal time to run.
That’s the destination.
The data infrastructure is complete. The forecasts are flowing. The Home Assistant integrations are exposing everything as entities. The smart plugs are waiting. An ESP32 could be wired into the aircon tomorrow. All that’s left is the automation logic to act on it.
Back to 10pm
It’s 10pm. Battery at 40%. I open Home Assistant.
Tomorrow’s solar forecast is high. Octopus rates are stable. Carbon intensity is clean at 3am. I don’t need the grid tonight. I set the battery to charge only to 60%, let tomorrow’s sun take it from there.
I used to guess. Now I know.