My smart home stack
Home automation, ad blocking, media streaming and much more.
I’ve been intermittently building smart devices and tinkering with the IoT ecosystem since ~ 2015. Over the past year, I’ve added a lot of services to what is now my smart home stack.
To start off with, here’s a summary:
Services:
- Home Assistant - for everything smart home
- AdGuard - network wide ad and tracker blocking
- Portainer - docker container management
- Watchtower - automated updates
- Dashdot - CPU, storage, network stats
- Homarr - highly configurable dashboard
- Media / Arr stack
- Radarr - manage movies
- Sonarr - manage shows
- Bazarr - manage subtitles
- Prowlarr - manage indexers
- Transmission - torrents
- Jellyfin - consume media
- Jellyseer - discover media
- Random
- Stirling PDF - powerful pdf operations
- Mealie - recipe management
Most, if not all of the above are managed via docker containers.
Hardware:
- Raspberry Pi 4, 8GB - runs everything, managed headless
- 256GB SSD - should’ve gone with a much higher capacity. Planning expansion now
- Sonoff Zigbee dongle - enable Zigbee. Link
- Philips Hue smart bulb - uses Zigbee
- Wipro Smart bulb - uses WiFi
- ESP32 - enables creation and addition of random smart devices
Now into the specifics:
Home Assistant
My current HA dashboard (majorly WIP) which basically contains toggles for bulbs and sensor readings. The same is available on both iOS and Android as well
My main reasons for hopping on the HA bandwagon were:
- Aversion to using multiple vendor apps for controlling devices + prevention of vendor lock-in
- With my HA app, I can control a Philips bulb, a Wipro bulb, a Sonoff sensor and more from the same place.
- Desire to contain device and sensor data flow within local network
- None of my smart devices need any external connectivity
- Open source and limitlessly tweakable
That being said, I feel I’ve barely scratched the surface of what all HA has to offer. Up until now, I’ve mainly used it to control smart lights and monitor temp and humidity sensors.
Both of these, I’ve enabled via Zigbee and WiFi integrations.
Zigbee - for smart lights and sensors
- Enabled via MQTT, Zigbee2MQTT + Sonoff Zigbee router stick that goes into the Pi
- A Philips Hue bulb acts as a router as well and helps establish connection with the Sonoff temp and humidity sensor
The above snippet from the Zigbee2MQTT panel shows how the Philips node connects to the main router while also acting as a router and helping establish a connection with the sensor.
WiFi and LocalTuya - for smart lights
- The other smart light I have is from Wipro and the hack used to get that onto HA was to use the LocalTuya integration.
ESPHome
- I’ve also configured an ESP32 together with ESPHome to add a few sensors e.g. Sound. Haven’t used this much till now.
Media Server
Disclaimer: Purely for educational purposes
This was more of a weekend build and I also felt guilty about leaving too much unused RAM on the pi, so felt like an opportune time.
Here’s how the stack looks like:
The above image and installation steps, including docker compose files etc are given here. One change I made was to use Prowlarr instead of Jackett because the automatic addition of indexes felt a lot quicker.
Things I like:
- For series, new episodes can be monitored automatically and be made available when ready.
- Artwork, metadata, ratings, cast etc are all displayed with a good enough UI.
- Jellyfin has client apps for mobile and TV both. It’s pretty basic but works just fine.
Main challenge here is that most indexers are private. Yet to find the best work around here. I did try exploring Usenet but honestly haven’t had the time to integrate and explore it yet.
Here’s how the stack appears on my main dashboard (built on Homarr):
Homarr automatically displays the container health via the green dot at the bottom. This comes in handy for quick troubleshooting
The Homarr <> Prowlaar and Transmission are quite helpful and display indexer health, download stats etc.
Monitoring
Section of my Homarr setup displaying stats from Dashdot and AdGuard
- Portainer helps get visibility into container health. Occasionally I need to restart some unstable ones.
Watchtower helps auto update docker containers. Since I’m not running mission critical stuff, I’m not afraid of things breaking. I do however plan to optimize the watchtower config so that odds of unexpected breakages reduce.
Dashdot helps monitor CPU, storage and network stats
Homarr allows me to view the entire stack along with some neat charts etc.
- Also has a section for container management which is quick and handy.
- Also has neat widgets and integrations for common services like Transmission, Dashdot, Jellyseer etc.
That’s a wrap on the current state!
Future plans
- More lights and switches added to the HA network.
- Local voice control. This is far from being a seamless Alexa / Siri replacement but still progressing at a decent pace.
- PiVPN integration: This will allow me to connect to my system from anywhere. I will also be able to tap into my home’s AdGuard config remotely.
- Custom ESP32 builds: I’ve been wanting to integrate sound and light sensors into the system. Clubbed with temp, humidity and data from my Ultrahuman ring, I want to see what data patterns emerge.
- UH also seems to be exposing an API to interested people. Planning to hit them up to see if I can make the data flow into my system.