Home Assistant/Automations

Home Assistant runs the house from an Intel N100 mini PC running Windows. Everything with a network connection reports to it, and nearly everything connects locally, without routing through the cloud.

The setup

  • Install: Home Assistant Container, running in Docker Desktop.
  • Startup: Docker Desktop only starts after someone logs in, so a Task Scheduler entry starts it at boot and a PowerShell watchdog restarts it if it crashes.
  • Configuration: one folder per integration (birdnet/, connection_monitor/), pulled into the main configuration with !include, so each integration’s sensors live in their own files.
  • Messaging: a separate Mosquitto MQTT broker on the same PC. The Docker version of Home Assistant has no add-ons, so the broker runs on its own.
  • Phone: the Home Assistant Companion app for push notifications and location.

Vehicle

The car connects through its manufacturer’s official integration, and a dashboard shows its status. The automations:

  • Lock the car if it’s unlocked when the phone arrives home
  • Lock the car at midnight if it’s still unlocked
  • Alerts for low fuel and range, tire pressure, and fluid levels
  • A reminder when service is due in under 30 days
  • A warning if the windows are open when rain is coming

Weather

The National Weather Service integration watches for alerts in the area. When one is issued, Home Assistant announces it out loud over the Google speakers using text-to-speech through Google Cast. The speaker volume is raised before the announcement and set back afterward.

Birds

Two BirdNET-Go nodes feed sensors, dashboard cards, and phone notifications for new species, alongside county rare bird alerts from eBird. (The BirdNET-Go post covers this in detail.)

Climate and devices

  • ecobee thermostat: through the HomeKit Device integration. ecobee stopped accepting new developers for its own API, and HomeKit is local anyway.
  • Eufy cameras and robot vacuum: through the eufy-security-ws bridge, running in its own Docker container.
  • Eufy floor lamp: local control through LocalTuya.
  • Synology NAS: through the DSM integration. The Home Assistant user needed administrator rights in DSM 7 for it to work.

Internet connection monitor

The monitor started as PingInfoView pinging the router, the modem, and Google DNS, with a script that emailed a report once the connection came back. It grew into a PowerShell monitor that logs every drop to CSV and labels each one: local (router) or upstream (internet provider). A small Python REST API serves the logs to Home Assistant, and an ApexCharts dashboard graphs drops over time.

Lessons

  • Home Assistant ignores updates when a value hasn’t changed, so a sensor that tracks a count can look frozen. Tracking a unique ID fixes it.
  • Two copies of the same configuration block silently override each other.
  • Docker on Windows doesn’t support host networking, so devices that announce themselves on the network (like Google Cast speakers) aren’t always discovered automatically.
  • One setting on the UniFi Express, IGMP snooping, increased network speeds about tenfold.

Back to Projects