Skip to content

Home automation

Zigbee sensors, ESP8266 boards and Home Assistant running my house since 2017, now hosted on the home server, with voice control and no cloud.

2017 - ongoing

This is the longest-running thing I have built: a home automation system started in 2017 on a Raspberry Pi and still in daily use. It controls lights, power sockets and sensors across the house from a phone, from Siri or Google Assistant, or from rules that fire without anyone asking. Nothing depends on a vendor cloud, so a manufacturer shutting down a service has never once turned a switch into a paperweight.

Dashboard

How does it fit together?

Everything now lives on the home server rather than on the Raspberry Pi that started it. Home Assistant runs there as one container among thirty-odd, which means the automations get the same backups, the same reverse proxy and the same monitoring as every other service in the flat. Node-RED sits beside it for the flows that are easier to draw than to write, and ESPHome builds the firmware for the microcontrollers, so a new sensor is a short config file rather than a sketch I have to remember.

Two device families talk to it:

  • ESP8266 boards over MQTT. These are the early ones, built when there was no off-the-shelf option I trusted: relays behind wall switches, plus a few sensors outdoors.
  • Zigbee devices joined through a coordinator. Adding Zigbee later was what made the system practical. Third-party sensors, buttons and plugs join the same dashboard without a bridge per brand and without an account per manufacturer.

MQTT is the seam between the two. Anything that can publish a message can join, which is why a board I soldered in 2018 and a Zigbee button bought last year sit side by side on the same dashboard.

What changed along the way

The first boards ran firmware I wrote by hand. That taught me a great deal and then turned every one of them into something only I could maintain. Moving them onto ESPHome was the best decision in the project: a sensor became a few lines of YAML, and reflashing became a build step instead of an evening.

Consolidating onto the server was the other one. A Raspberry Pi under the TV is fine right up until you care about backups, and keeping “the automations” and “the backups” as two separate problems is how you end up with neither. Now the whole thing restores alongside everything else, and Home Assistant is the container I would bring back first.

The server that hosts all of this, and the reverse proxy and VPN that decide what is reachable, are written up in Thirty three containers, zero open ports.