Skip to content
back to projects
Automation

Home automation

A whole-house Home Assistant deployment covering climate, lighting, energy, presence, and voice. All running locally, all observed.

Home AssistantESPHomeZigbee / Z-WaveMQTTlocal voice
Smart devices
30+
Integrations
20+
Automations
60+
Dashboard panels
23

A live snapshot

A small, deliberately abstracted view of the kind of dashboard that sits across the whole setup. Climate per zone, solar production, and the device grid that lets every switch and sensor be operated from one screen.

climate● active
21.4°C · 48%
zone a
zone b
zone c
zone d
solar+3.2 kW
devices32 online

What it does

Home Assistant sits at the centre and orchestrates every connected thing in the house. The interesting bit isn’t any single integration. It’s the patterns that emerge when they all talk to each other.

  • Climate. Per-zone setpoints that adjust by time of day, presence, outdoor temperature, and which side of the house the sun is on. Air-conditioner outdoor unit, indoor head units and any heating loop all coordinate rather than fight each other.
  • Energy. Solar production, grid import/export and per-device draw are all logged. Heavy loads (washing, dishwasher, EV-style charging) are scheduled into cheaper tariff windows automatically, and the AGL solar feed-in compensation is tracked as a real dollar value rather than a vague vibe.
  • Lighting & switches. Automated by presence + sun position + override, never “motion timeout” alone. The lights that come on at sunset don’t come on if the room is already empty.
  • Presence. BLE beacons + phone integrations give per-person presence without relying on a single signal. The house knows the difference between “everyone’s home but asleep” and “everyone’s actually out.”
  • Voice. A local TTS / STT pipeline (xtts + Whisper-class STT) gives the house voice control without sending audio to a cloud and without a monthly fee. Wake-word lives on dedicated mic satellites; LLM intent parsing is optional and also local.
  • Air, security, misc. Air quality sensors trigger ventilation; cameras run on a private NVR (Scrypted + Coral Edge TPU for object detection); UPS / power outage events fire automations that gracefully shed load.

The patterns that pay back

A few automation shapes turn up over and over. Once these land, the house gets meaningfully calmer to live in.

  • If-this-and-that-and-also-the-other. The valuable automations are almost never single-trigger. They’re combinations of conditions that, taken together, mean something specific. “Sunset AND someone’s home AND nobody’s currently watching a movie” is a different automation than “sunset.”
  • Conservative defaults with manual override.The house guesses; people can disagree. Every “automatic” thing has a clear way to be told off (a physical switch, a voice command, a timeout) and the system actually respects it.
  • Long-term history beats real-time.The dashboards optimised for value aren’t “what’s the temperature right now.” They’re “how has the temperature trended for the last 6 months, and what does that say about insulation, run-time, and the air-con’s wear curve?”
  • Custom firmware where the vendor app is the bottleneck. Plenty of cheap smart devices have great hardware ruined by a cloud-only app. A few minutes flashing ESPHome cuts the cloud out entirely and gives Home Assistant native control.

An example automation

The kind of thing a small custom Home Assistant automation actually looks like. Declarative, readable, version-controlled:

yaml
# When solar is producing surplus and the EV is plugged in
# and the tariff window is the cheap one OR the export rate is poor,
# pull the discretionary loads forward.

alias: "Soak up the surplus"
trigger:
  - platform: numeric_state
    entity_id: sensor.solar_export_w
    above: 2500
    for: "00:05:00"
condition:
  - condition: state
    entity_id: binary_sensor.ev_plugged_in
    state: "on"
  - condition: or
    conditions:
      - condition: time
        after: "10:00:00"
        before: "15:00:00"
      - condition: numeric_state
        entity_id: sensor.feed_in_tariff_cents
        below: 5
action:
  - service: switch.turn_on
    target:
      entity_id: switch.ev_charger
  - service: climate.set_temperature
    target:
      entity_id: climate.hot_water_tank
    data:
      temperature: 65
  - service: notify.persistent_notification
    data:
      message: "Surplus run started, feed-in {{ states('sensor.feed_in_tariff_cents') }}c"

Multiply that by ~60 automations of varying ambition, and the house starts handling its own routine while leaving you the decisions that actually need a human.

What I’d build for you

The same architecture scales down for a unit and up for a property with outbuildings, solar, an EV, and a small office. The work I’d do is roughly:

  1. Sit down and listen. What annoys you about the house right now? What do you find yourself doing every day? That list is the brief.
  2. Survey what you already own. Plenty of smart devices can be integrated even when the vendor app pretends otherwise. Anything that needs replacing gets replaced deliberately, not because the catalogue says so.
  3. Stand up the brain. Home Assistant on hardware you own, with offsite backups, observability and a path to come back from any failure. No vendor lock-in.
  4. Build the first ten automations. Ship the highest-payback ones first so you feel the difference in the first week.
  5. Hand over. Documentation in plain English. A dashboard your family or staff can actually use. Optional ongoing support; optional full-handover where I never touch it again.