This is my live(-ish) Home Assistant Core configuration, This instance is running 2024.12.4 on a mini-PC (AMD Ryzen 5 5560U), with more RAM than I'm ever going to use.
I used to use a Python 3.11.4 virtual environment built with pyenv, following this guide. These days I run entirely in Docker, as does everything else I run. The switch followed this process and went largely seamlessly - the only exception being the Google Cast devices which lost their cast_
prefix.
Each directory has a short readme explaining what's in there, and the purpose of each file or group of files.
- Home Assistant (2024.12.4)
- traefik (3.2.3) with ZeroSSL for remote access (replaced NGINX)
- Zigbee2MQTT (1.42.0) for Zigbee
- Mosquitto for the MQTT broker
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).
You can find a list of my current and previous hardware here.
For Zigbee I use Zigbee2MQTT (version 1.42.0) 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.
- Zigbee bulbs and strips in various rooms.
- WLED integration and led strips, replacing some Yeelight strips. These provide good enough lighting to read by at night, and also to help wake us in the morning.
- Symfonisk and 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,
- Telegram for some of my notifications
- Apprise for most notifications, sending them to Telegram, Discord, Signal, Google Chat, LaMetric, or many other places
- Ulanzi TC001, running Awtrix Light, for non-interrupting notifications
- LaMetric for non-interrupting 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
- 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.
- TransportAPI for information on the local train service with the UK transport 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
- 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.
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
- Awtrix notifier for making sending notifications easy
- 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
- SkyQ to aid in presence detection
- Sleep as Android to turn on the lights when it's time to wake up
- 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
I moved these all out here because it's a long list, and not that interesting, also not that current.
- 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 writing 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
- 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)
A large amount of this will require a rewire of the lighting circuits, so that all the light switches have a neutral wire.
- 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
- 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
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 ;)