Home Assistant

A house that fixes itself before it pages me.

91 automations in production, organised around three principles: shift every flexible load to the cheapest half-hour of the day, never let a single sensor failure cascade, and only notify a human when a human is actually needed.

91
Automations in production
30s
Victron telemetry keep-alive interval
48
Half-hourly Agile price slots evaluated daily
3
Tiers of battery protection before anything fails
Architecture

How it hangs together

Home Assistant is the control plane. Everything else is a feed into it or an actuator out of it — and every external dependency has a watchdog.

Data in

Victron VenusOS over MQTT streams battery telemetry — pack voltage, per-cell min/max, state of charge, load — from the battery shed. Octopus Energy integration supplies half-hourly Agile import pricing, piped into the Target Timeframes integration to compute optimal charge windows. Power-monitoring smart plugs on every major appliance turn raw wattage into state: the system knows the kettle has boiled, the washing machine has run, and the air fryer is on — without any of those appliances being "smart".

Decisions out

Agile pricing drives the 40 A battery charger, dishwasher, dehumidifiers and airers into the cheapest windows automatically. When the rate goes negative, every flexible load in the house switches on at once — being paid to consume. Presence from phone trackers arms cameras and security scenes when the last person leaves, and stands them down on arrival.

Design decision: watchdogs over uptime hopes

The failure mode that matters isn't a light not turning on — it's the battery telemetry going quiet while automations keep acting on stale data. So the Victron feed gets a 30-second MQTT keep-alive, and two independent watchdogs power-cycle the VenusOS Pi through a smart plug if the battery load sensor goes stale or unavailable for five minutes. The router gets the same treatment when the WAN drops for one minute. Trade-off: a hard power-cycle is blunt, but it's autonomous — and it turns a 2 a.m. outage into a log entry instead of an incident.

Design decision: tiered battery protection

Battery protection is layered so no single automation is a point of failure: notify at 3.1 V cell voltage or 15% state of charge; force-charge from the grid at 2.9 V per cell, or below 10% when solar can't cover the deficit — recovering to 30% before handing control back to tariff-optimised charging. The BMS remains the final hardware backstop; the automation tiers exist so it's never needed.

AI where it earns its place

Camera motion events are summarised by a vision LLM into one-line notifications — who or what moved, not "motion detected". And the HA configuration itself syncs into a Claude workspace every 15 minutes, with a separate dev area and a manual deploy step back into the live config: version-controlled, AI-assisted config management with a human gate on production. LLM VisionClaude workflow

Dashboards

Operations view

Six dashboards — Controls, Power, Solar, TightWatt, Cameras and a personal view — built for glanceability: state at the top, controls in the middle, live graphs below.

Controls dashboard — screenshot pending
Controls: scene modes, device control, live power draw per appliance.
Power dashboard — screenshot pending
Power: battery telemetry, inverter outputs, Agile pricing and daily costs.
Solar dashboard — screenshot pending
Solar: per-string production, forecast vs actual, battery flow.
Highlights

Automations worth stealing

Appliance state from power draw

Kettle >1500 W sets a "boiled" helper; if nobody enters the kitchen within three minutes, the phone gets a nudge. Same pattern infers washing-machine and air-fryer state. Dumb appliances, smart house.

Negative-price harvesting

When Agile goes negative, all flexible loads switch on in one action — charger, dehumidifiers, airers — and switch back off the moment the rate turns positive.

Security that resets itself

Red-alert lighting scenes trigger on person detection while the house is empty — and automatically stand down and restore normal motion lighting when a known phone arrives home.

Everything degrades gracefully

Motion lighting has manual-override modes with a nightly reset, so a party never fights the automation — and the automation always wins the morning after.