Ten years of smart-home decisions had accreted into a system I no longer controlled. The migration to Home Assistant is me taking it back, one device class at a time.
A move of a whole smart home onto a new hub, done side by side: the old system stayed running for each device until its replacement was confirmed working, so nothing went dark during the switch. Lighting (24 loads, 6 scenes), motorized shades, thermostats and room sensors, whole-home audio, solar panels and batteries, per-circuit energy monitoring, security cameras, and irrigation all came under a single hub.
Rather than clicking through screens, the setup is driven by scripts so the whole configuration can be rebuilt from scratch and repeated. Camera images are analyzed by an AI running on a machine in the home, and a face-recognition service picks out household members on two cameras. Remote access works from anywhere over a private network, with no cloud subscription and no router port-forwarding.
Custom dashboards cover command and status, an energy view (solar, batteries, and per-circuit usage), irrigation schedules, and household health metrics.
Features
- One hub runs the whole house: 70+ devices covering lighting (24 loads, 6 scenes), 16 motorized shades, 4 thermostats, whole-home audio, cameras, and irrigation
- A live energy picture: solar production, battery state, and usage broken down circuit by circuit, priced against the utility's time-of-use rates in real time
- Cameras that describe what they see: a vision AI running entirely inside the home reviews snapshots, ignores the household's own vehicles, and sends a phone alert describing anything unfamiliar
- Face recognition on two cameras: family members are recognized and stay quiet; a stranger triggers an alert with an AI-written description of who is there
- Full control from anywhere, with no cloud subscription and no holes opened in the home router
- Indoor and outdoor air quality from two particulate sensors, reported on the standard air-quality index scale
- The entire configuration is scripted, so the whole setup can be rebuilt from scratch and every change is repeatable
Under the hood
- —Parallel-run cutover: each integration stays live on the old hub until its Home Assistant replacement is verified, so 70+ devices migrate with no dark time for the household
- —22 headless Python scripts configure integrations through the Home Assistant REST and WebSocket APIs, so the entire setup is reproducible without touching the UI
- —Camera snapshots from UniFi Protect are analyzed by qwen3-vl:32b running locally under Ollama; household vehicles are suppressed and unknowns produce a Pushover alert with a written scene description, all without images leaving the house
- —A lightweight face-bridge container links CompreFace to Home Assistant: it subscribes to person-detection events over WebSocket, pulls the snapshot, and publishes recognition results back over MQTT with automatic device discovery
- —Battery charge and discharge energy is derived by Riemann integration of signed power sensors, because the inverter exposes no cumulative counters of its own
- —A template sensor prices grid import and solar export in real time against the utility's time-of-use rate schedule, making the energy dashboard read in dollars, not just kilowatt-hours
- —Tailscale runs as a subnet router in userspace netstack mode, so remote access needs no kernel IP forwarding, no cloud subscription, and no router port-forwarding
