Table of Contents
Home Assistant configuration
This is my live(-ish) Home Assistant Core configuration, This instance is running 2023.8.4 on a mini-PC (AMD Ryzen 5 5560U), with more RAM than I'm ever going to use. I use a Python 3.11.4 virtual environment built with pyenv, following this guide.
Each directory has a short readme explaining what's in there, and the purpose of each file or group of files.
The key software
- Home Assistant (2023.8.4)
- traefik (2.10.4) with ZeroSSL for remote access (replaced NGINX)
- Zigbee2MQTT (1.32.1) for Zigbee
- Mosquitto for the MQTT broker
Floorplan
I use Floorplan for a high level overview
- Showing:
- The grey bin is due for collection tomorrow. If any were due today they'd have a red outline.
- The family room and home office are occupied
- The office window is open (red with yellow outline), all others are closed (green).
- All outside doors are closed (green), as are many interior doors (brown). Open interior doors are green.
- Motion has been detected in the office (yellow with a red outline), but nowhere else.
- The family room TV is on (blue).
- The car isn't in the garage (faded), but the freezer lid is closed (blue).
- All the mobiles are home, and I'm working from home.
- The temperature and humidity in all rooms are good (green).
- Oh, and the printer's consumables are unknown (blue).
- The floorplan was created in Inkscape, by importing the image of the house's floorplan from the purchase paperwork, then drawing over it. If you look at it you'll see that I built it up in layers, one for the foundation (ground), one for the structure, and one for the sensors. I don't really use those currently, other than to ensure that the right things are on top (sensors).
Devices
You can find a list of my current and previous hardware here.
Zigbee
For Zigbee I use Zigbee2MQTT (version 1.32.1) running on another system. I use this instead of ZHA because my experience with Z-Wave taught me the value of separation.
I used to use the original zwave integration on a remote system, using Remote Home-Assistant. I've since stopped using Z-Wave, as explained here.
Lighting
- Yeelight integration and led strips. These provide good enough lighting to read by at night, and also to help wake us in the morning.
- Zigbee bulbs and strips in various rooms.
Media
- Sonos speakers and integration
- Squeezebox Radio as a smart alarm clock, and associated integration
- Cast devices - a bunch of Google Home Minis, a couple of Google Home Hubs, and a Lenovo Smart Display
Notifications:
- Telegram for my notifications
- Supported by Google Chat using a command line notifier (so the messages come from a bot, and not a personal account)
- For system status notifications I use the REST notifier for Discord, along with the Discord notifier itself
- LaMetric for notifications "in person", and it's a clock the rest of the time
- TTS with the Google Home Mini's, Sonos, and Squeezeboxes, aided by Sonos Cloud to avoid interrupting music
Presence detection:
- Back to using Nmap for device tracking. While I did switch to Fritz!Box device tracking when I upgraded my router, the router ran out of memory
- Monitor on another Pi3, and an Orange Pi Zero LTS with a CSR 4.0 USB dongle. This has completely replaced the use of the built in Bluetooth device tracker, and more than halved the startup time of HA.
- This works with our mobile phones, tablets, and beacons
- The HA Companion app for remote tracking. I used to use GPS Logger, but the additional sensors in the official app are a winner
- I used to use OwnTracks for device tracking, using the HTTP interface, but not only did it have an annoying bug that caused it to randomly disable reporting, but it had been abandoned by the developer. Version 2.0 of the app solved both of those, but I've seen no reason to go back.
You'll note I use three different device trackers, two for home (nmap, bluetooth) and one for away (HA App). I explain more about this here (you can see the journey I took to get there, starting here, with an update here, and another update, and then a fourth update). Short version - I don't merge the trackers (that's going away anyway), but I do use groups again. I've experimented with the Bayesian sensor, but compared to what I can do with the automations, it's not flexible enough for me.
Core integrations and APIs
- TransportAPI for information on the local train service with the UK transport integration
- DarkSky for weather data, alongside the Met Office, along with the associated sensor integration
- Plex for watching media, on TV, tablets and mobiles. I don't currently use the component even if it's configured
- Here Travel Time integration, replacing my previous use of the Google Travel Time integration (which uses the Google Distance Matrix) to provide estimated time to home
Other things
- Getmail with a script that acts as the message delivery agent, to parse the recycling collection emails
- I gave up on the the IMAP email content sensor since it doesn't keep state through restarts (which isn't unique to it, Home Assistant doesn't have a persistence mechanism other than for the
input_*
entities)
- I gave up on the the IMAP email content sensor since it doesn't keep state through restarts (which isn't unique to it, Home Assistant doesn't have a persistence mechanism other than for the
- A HiWatch IPC-T140 dome camera, using the generic camera integration. I use Frigate for motion and object detection, supported by a Coral stick. This runs on a different computer to the one that runs Home Assistant.
Custom integrations
Historically I didn't make much use of custom components/integrations, however that's changed. Here are the ones I use, and why:
- HACS for intalling, updating, and finding new custom integrations. All other custom integrations are installed using this.
- Adaptive lighting (replacing Circadian lighting) since the built in flux integration isn't as good.
- Alarmo as an alternative to the built in manual alarm
- Frigate for integrating with Frigate
- Here Weather as yet another weather integration, it has the advantage that it includes a (brief) text summary of the forecast
- Sonos Cloud to allow TTS (and media playing) without interrupting the music
- The Watchman for making sure I've caught all the missing entities
- WebRTC to make viewing cameras less laggy
Standard integrations
I moved these all out here because it's a long list, and not that interesting.
Other software and services
- AdGuard Home for blocking those pesky adverts
- Authentik for authentication when remotely accessing services
- Cloudflare Pages to host my blog
- Container Mon so I know when a container is unhealthy
- Dozzle for each access to container logs
- Diun to get notifications when an update is available for a container
- Frigate for motion detection
- Heimdall for a dashboard of all my apps
- Jekyll for my blog
- netdata so I can keep an eye on the performance
- Paperless NGX for turning paper into searcheable digital documents
- Photoprism both to back up photos from the mobile phones, as well as make it easier to find photos
- rpi-clone for bootable backups of the Pis
- rclone for offsite backups
- rsnapshot runs on another system, and pulls backups
- traefik with ZeroSSL for remote access (will shortly replace nginx)
- I did previously use nginx to provide remote access, in conjunction with Let's Encrypt
- Uptime Kuma for some simple service status monitoring
- Wireguard for remote access to my network
Notes
- These are (automatically) modified versions of my actual configurations
- The goals with Home Assistant have been:
- Minimise human actions, and where that isn't possible streamline those human actions
- Provide voice control where the automations don't get it right (but try to fix that)
- Have a minimal UI to provide manual control (this is currently the Google Home app)
(Far) Future plans
A large amount of this will require a rewire of the lighting circuits, so that all the light switches have a neutral wire.
Automation thoughts
- Turn on extractor fans when the humidity is more than 5 points above the adjacent room, turning off once they drop to within 5 points
- During darkness, if a bathroom door is opened, turn the bathroom light on at a low level, turning up to medium when the door closes, turning it off when the person leaves
- Turn on the outside front light when the front door opens, the doorbell rings, or somebody is less than 5 minutes away, and coming home
- Other than bedrooms, when the room is in darkness and there's movement turn on the light at a very low level
- During daytime, if the lights are on for too long turn them off
- Seasonal use of the digital LED strip
- Flash the relevant section of the LED strip red if the garage door is opening or closing
Useful links
- Home Assistant documentation and integration list
- Problems with Z-Wave delays and inconsistencies? Try this script in the dev-states section and you'll see if you've problem devices - shown by an RTT value of 1,000 or more, and retries significantly more than other devices
- My blog on home automation and other things
Coffee
If I've helped you, and you really want to, you can buy me a coffee, but don't feel obliged - I'm not doing this for free coffee ;)