Blog
Smart home write-ups, Apollo notes, and the occasional opinion. Browse by tag.
No posts match.
-
Improving the ESPHome captive portal
The screen that gets an ESPHome device onto WiFi lists the same network once per access point, so a mesh shows up three or four times at different signal strengths. Tapping the strong one does nothing the weak one doesn't, because the device only ever gets the network name, not the access point you picked. I checked the source, then sent a 220-byte fix upstream to collapse the list to one row per network.
-
Sometimes a sensor lies about what model it is: the SEN55 that said SEN54
Some AIR-1 units report themselves as a SEN54 over I2C even though the module inside is a SEN55, so ESPHome shut their NOx sensor off. It turned out NOx had never worked on those units at all. A small override option settled whether the hardware or the register was lying, and it ships in ESPHome 2026.7.2.
-
I stopped leaving the TV on for an empty house
My leaving-the-house automation used to only lock the door and arm the alarm, so anything playing kept playing to an empty room. Now it powers off the TVs, pauses the speakers, and offers a one-tap resume when I get back. Getting Plex to come back where I left off is where most of the wrong turns were.
-
How a non-coder uses Claude Code
I'm not a developer, but I use Claude Code every day for firmware, docs, and Home Assistant. The trick is writing down how I work so I stop re-explaining it. I just made my whole setup public: the skills and the memory pattern, cleaned of anything private, free on GitHub.
-
Animating my YouTube intro without a video editor
I wanted an animated logo intro for YouTube and I don't own After Effects. My logo was already an SVG, so I animated it with the browser's own animation API, screenshotted it 378 times, and let ffmpeg turn the pile of PNGs into a 1080p60 video. Total output: 6.3 seconds, about 180KB.
-
I built gifify to simplify making GIFs
My screen recorder produces 53 MB GIFs and the wiki needs 2 MB ones. I wrapped my ffmpeg scripts in a local web app with visual trimming, presets, and a file size readout, and now clips for the wiki and Discord take about a minute. It's free on GitHub if you want it.
-
Cooling the rooms my central air can't keep up with
Comfort Masters quoted me $24,000 to fix the way my house cools. I passed for now, kept my central air, and added three Midea portable units, around $400 each, to pick up the slack in the rooms it can't keep cold. Home Assistant runs them: a fan-speed deadband, a 20-amp breaker interlock, on-demand network-closet cooling, and a Mr. Freeze button for movie nights.
-
Building an air quality LED indicator for the AIR-1
The AIR-1 has three onboard RGB LEDs, so I made them show air quality at a glance. The feature itself is small. Getting there took longer than it should have, because I kept fixing things that weren't the problem. These are the dead ends and where it ended up.
-
Two days of ceiling dust, measured in eight rooms
I spent two days cutting sheetrock, disturbing old insulation, and scraping popcorn ceiling in the upstairs bathroom, with eight Apollo AIR-1 sensors watching the whole house. The two rooms off the bathroom spiked 20 to 30 times over, and the return air lifted every other room too. The room-by-room data, and why I wore a P100 the whole time.
-
The CAST-1 got a new DAC component and WizMote support
ESPHome 2026.6.0 added a built-in PCM5122 component, so we moved the Apollo CAST-1 off the community one we'd been using and added WizMote remote control in the same update. The move wasn't optional, the old component stopped loading on 2026.6.0, and the swap shipped with a silent-audio bug I had to chase down.
-
Dehumidifier tank-full notifications with a Zooz ZEN15
My dehumidifier is a completely dumb appliance, but it sends me a notification the moment its tank fills up. No smart features, no app, no subscription. Just a heavy-duty Z-Wave plug that watches power draw and one Home Assistant automation that fires when the power falls off a cliff.
-
Two Home Assistant UI tweaks for power users
A recent r/homeassistant thread asked how to get the UI closer to the more advanced, power-user feel it used to have. The comments had a pile of ideas. Two of them stuck with me, and both take about ten seconds to flip on.
-
IKEA KAJPLATS: Matter was a mess, so mine run Zigbee
IKEA replaced the TRÅDFRI line with KAJPLATS, and the new bulbs ship with Matter over Thread. I gave that a real shot and it was a mess. I ended up adding mine to my existing Zigbee2MQTT mesh instead, using the hidden 12-power-cycle sequence that switches the bulb into Zigbee pairing mode.
-
I cut my Home Assistant backups in half
My backups had ballooned, and the recorder database was the reason. I'd had exclude filters in my config for ages and they did basically nothing, because excludes only stop new data, they don't touch what's already there. Here's the cleanup that actually shrank the database, and the backups along with it.
-
I made a free smart home class. Steal it.
My beginner Home Assistant class is now at classes.smarthomesellout.com. If you teach too, the repo is set up so you can fork it, swap in your own gear and stories, and use it for your own class.
-
My first blog post - better late than never!
This is the first post on my new blog. The plan is to get more content out and share what I'm doing with the world. I work at a smart home startup and spend most of my free time on FOSS smart home projects. Follow along to see more!