Home Assistant runs in Docker on a Raspberry Pi 4 that lives on both home networks at once — the only host that can see everything — driving lights, alarm, doorbells and solar, all locally, no vendor cloud.
The trick isn't the Raspberry Pi — it's where it sits. This one machine is the only host on both home networks at the same time, so a single Home Assistant instance can reach every device.
The wired interface, eth0, sits on the main house LAN and holds the default route. A second interface, wlan0, joins a hidden mesh network where most of the smart devices actually live. Nothing else on the network straddles both — only the Pi.
That only works because Home Assistant runs in Docker in host-network mode — it needs to see both interfaces directly, so one instance discovers and drives devices on either side. Bridged or NAT networking would wall half the house off.
The same Pi quietly carries MQTT, Node-RED and a solar grid-control flow alongside HA, all on a trivial load, booting from a USB SSD rather than a fragile SD card.
One box, two homes
Every integration talks to its device on the LAN — some the official local way, some only after a little reverse-engineering. None of them phone a cloud.
Eighteen plugs, lamps and switches driven by their local keys, not the Tuya cloud. The energy-monitor plugs report live power straight into HA.
Five RGB bulbs on a Bluetooth broadcast mesh — reverse-engineered from the app and driven straight off the Pi's own Bluetooth radio. A mid-house bulb relays to the far ones.
An Elements panel that refused the normal flow — so the pairing token was captured during pairing and injected into the config directly.
Two wired doorbells and two chimes. A press announces "someone's at the front door" on every Google speaker, and the front door lives on the wall panel.
A Cerbo GX read over Modbus TCP every five seconds — three arrays, a 32 kWh battery, the MultiPlus-II, grid flow and house load — with derived daily kWh meters and a recorder filter so 453 entities at that rate don't drown the database.
Self-hosted Google Assistant — no Nabu Casa subscription. Night mode, disarm the alarm, and every light in the house, all by voice.
The Victron array read live — here's the power flowing through the house across the day. Pick a moment and watch it move.
The control surface isn't a shiny new screen — it's a decade-old Samsung tablet that had been dead in a drawer for years, given one more job.
Reflashed with LineageOS and locked to Fully Kiosk, it's now bolted to the wall running one full-screen Home Assistant dashboard, with all of HA's own chrome hidden so it reads like an appliance, not an app.
Home Assistant drives it back: the screen comes on with the sunrise — floored to 06:30 so early summers don't wake the hallway at four — goes black the moment you say "sleep", and taps back to life at night. It now runs a six-tab dashboard that never scrolls — solar at five-second resolution, alarm, doorbells, lights — inside a two-part printed wall mount, and watches whether its own charger is keeping up.
The reflash
The dashboard travels with you — without opening a single port on the router, and without ever trusting a change that hasn't been checked first.
A dedicated tunnel exposes Home Assistant over HTTPS with no open ports on the router — the connection is outbound-only. The phone app rides the tunnel when you're away and drops to the local IP the moment you're home on Wi-Fi.
The whole config lives in a private git repo. Every risky change is backed up and validated before it's allowed to load, so a bad edit can't take the house down — and secrets and tokens never leave the Pi.
Lights, alarm, doorbells, solar and voice all answer to a single dual-homed Pi that sits on both networks and talks to every device on the LAN. No vendor cloud decides whether the lights turn on; no monthly fee keeps the dashboard alive. Old hardware got a second life, the config is versioned and recoverable, and the only thing leaving the house is you — over an outbound-only tunnel.