Home Assistant

4 min read

Home Assistant

TL;DR: Home Assistant is open-source software that controls all my smart home devices—lights, sensors, switches—without requiring cloud services or internet connectivity. When the internet goes down, my lights still work. I also build custom sensors using small microcontrollers to monitor things no commercial product covers.

Home Assistant runs as a dedicated VM in Proxmox, serving as the control plane for all home automation. This is where the homelab bridges software and the physical world—sensors, switches, lights, and custom hardware all flow through here.

Why Home Assistant

I wanted local control over my home automation. Most commercial smart home products require cloud connectivity—your light switch talks to a server somewhere, which talks back to your phone. This creates dependencies on external services, raises privacy concerns, and adds latency.

Home Assistant runs locally. My devices talk to Home Assistant, and Home Assistant runs locally on my network. No cloud required for basic operation. When the internet is down, my lights still work.

Integration with Proxmox

Home Assistant runs as a VM in Proxmox. The integration is straightforward: Proxmox makes it easy to pass USB devices directly to VMs. My Zigbee USB coordinator passes through cleanly to the Home Assistant OS without driver gymnastics or compatibility layers.

Why this matters: Zigbee coordination requires direct USB access. Running Home Assistant in a container or without device passthrough creates complications. The Proxmox VM with USB passthrough is clean—Home Assistant sees the Zigbee coordinator as if it were directly connected.

Zigbee Mesh

The Zigbee coordinator gives Home Assistant direct local control over a mesh of sensors, switches, and lights without relying on cloud services or vendor-specific bridges.

Why Zigbee over WiFi: Zigbee devices form a mesh network, which means they relay signals to each other. This provides better coverage than WiFi and uses less power—important for battery-powered sensors. Zigbee devices also don’t clutter up my WiFi network with dozens of IoT devices.

Why not vendor hubs: Most Zigbee devices come with vendor-specific hubs that require cloud accounts. Using a generic Zigbee coordinator with Home Assistant (via Zigbee2MQTT or ZHA) means I control the devices directly, and I’m not locked into any vendor’s ecosystem.

ESPHome and Custom Hardware

Beyond off-the-shelf devices, I use ESPHome with custom ESP8266 and ESP32 microcontrollers. These are hand-soldered boards that monitor and control things no commercial product covers:

  • Temperature probes in unusual places (freezer, garage, outdoor enclosures)
  • Custom relay boards for controlling equipment
  • Environmental sensors (humidity, air quality)
  • Integration points for older, non-smart equipment

Why I do this: Commercial sensors exist for many of these use cases, but they often require cloud connectivity, have limited battery life, or don’t quite fit the use case. Custom ESPHome devices let me build exactly what I need.

The learning value: Building custom sensors has taught me about electronics, firmware, communication protocols, and embedded constraints. Each new sensor is an excuse to learn something.

What This Has Taught Me

IoT security matters. Running my own automation stack has made me more aware of IoT security issues. I’ve seen how careless device firmware handles network communication. Running local control means I can firewall IoT devices from the internet, which I’d recommend anyone do.

Automation is about behavior, not technology. The interesting challenge isn’t “make the light turn on with a sensor”—it’s “make the home behave the way I actually want.” Automations that seem obvious often have edge cases (what if the lights are already on? what if someone manually overrides?). This is similar to software design.

Hardware constraints are real. Software developers often forget that code runs on hardware with limits. Building battery-powered sensors that last months on a charge requires thinking about power consumption in ways that server-side development doesn’t.

The Constant Learning

Home automation with Home Assistant and ESPHome is a constant source of fuel for what feels like a biological imperative to learn. Every new sensor, every custom firmware flash, every automation rule is an excuse to explore—electronics, networking, firmware, protocol design—and satisfy a curiosity that doesn’t seem to have an off switch.

  • Homelab — The infrastructure that runs Home Assistant
  • 3D Printing — Enclosures and mounts for sensors and controllers
  • Robotics — Another place where software meets the physical world