Build Series · 7 Parts

Local control of a solar, battery & hot-water system with Home Assistant

How a UK residential energy setup — GivEnergy batteries, a Solis inverter, a myenergi hot-water diverter and an Octopus smart tariff — was pulled off the vendor clouds and onto a single Raspberry Pi 5 running Home Assistant OS.

Why local control

The system began life fully dependent on the GivEnergy cloud portal. That dependency was the problem: the cloud would periodically override manually configured charge rates, and on a dual-battery installation that meant charge rates snapping back to full power and tripping the incoming breaker. The goal of this build was to move the control loop off the internet and onto hardware in the house, so that charging, discharging and hot-water boosting all happen locally, deterministically, and safely — with the vendor apps demoted to read-only observers.

The result is a Home Assistant OS instance on a Raspberry Pi 5 that talks to the battery system over local MQTT, diverts cheap-rate grid energy into the hot-water tank, reads live tariff data from Octopus, and runs a set of automations designed around a single principle: verify the device actually did what it was told before doing anything that depends on it.

The system at a glance

ComponentDetails
HubRaspberry Pi 5 (8GB), iRasptek kit, Pironman 5-MAX case, 256GB NVMe, Home Assistant OS
Battery storageGivEnergy parallel dual AIO batteries + Gateway (serial gwXXXXXXXX)
SolarSolis 8kW inverter with Tigo optimisers, ~10kW array, feeding the GivEnergy Gateway
Hot watermyenergi Eddi solar diverter (serial XXXXXXXX) + Hub, with Harvi wireless CT sensing
TariffOctopus Snug — cheap rate 00:30–06:30 (~7p/kWh)
NetworkUniFi infrastructure; HA on fixed IP 172.16.0.50

The series

Each part is a standalone build log with the actual configuration, entity names and the gotchas that cost time. Read them in order the first time through.

Part 1

Installation

Flashing Home Assistant OS onto the Pi 5, the Pironman/NVMe hardware, first boot and a fixed IP.

Part 2

Initial setup

Onboarding, HACS, the Mosquitto MQTT broker, SSH access and taming MQTT log noise.

Part 3

GivEnergy integration

GivTCP v3 over MQTT, connecting the Gateway and both AIO batteries, and the sign-convention traps.

Part 4

myenergi (Eddi & Harvi)

Bringing the hot-water diverter and its wireless CT sensor into Home Assistant.

Part 5

Octopus Energy integration

Live tariff and smart-meter data, saving sessions, and a metering discrepancy worth knowing about.

Part 6

Automation & the thinking

The full control architecture — charge-rate caps, the hot-water boost retry loop, and the cloud Guardian.

Part 7

The dashboard

The "My Energy" view: power flow, state-of-charge gauges, daily totals and a read-only guest dashboard.

Begin

Start with Part 1 →

The hardware and a clean Home Assistant OS install.

A personal home-energy project, shared as-is and not affiliated with GivEnergy, myenergi, Octopus Energy or Home Assistant. Device settings, entity names and tariff rates change — always check current vendor docs, and treat any battery charge-rate configuration as a safety matter for your own installation.