Home Assistant blueprint for Logic Group ZDB5100 (and ZBA7140)

I have a bunch of Logic Group MATRIX ZDB5100 in my walls and I wanted to do more advanced automations with them than just controlling their own lights. It was tricky in Home Assistant though, as I had to make automations that hooked up to the events each ZDB5100 exposed through the Z-Wave JS integration. Those events emit event types with names I had to remember, and it got worse when my automations were scattered around, which meant I sometimes cross-wired automations and reused the same event for multiple things. ...

January 23, 2026 · 2 min · Michael Bisbjerg

S3 GFS Retention

Home Assistant makes daily backups. Mine include metrics, which means about 1.8 GB per day. After six months, that was roughly 350 GB sitting in S3. I wanted to keep the safety of a long history without paying for every single day forever. So I wrote a small script that applies a Grandfather-father-son (GFS) retention policy to any S3 bucket with timestamped objects. It keeps a rolling set of daily, weekly, and monthly backups and prunes the rest. ...

January 12, 2026 · 5 min · Michael Bisbjerg

One Metric to Rule Them All: Making a Dumb Stove Fan Smart with Only Watts

Who needs smart fans when you have smart plugs? A Smart Home Shortcut with Just One Metric Our kitchen stove fan isn’t smart. It has physical buttons - one for the light, one for the fan, some for timers we never use. No Wi-Fi, no app, no voice control. Just a single power cord. But what if we could make it smart - not by replacing it, but by watching how much power it draws? ...

July 11, 2025 · 4 min · Michael Bisbjerg

Updating ESPHome Devices Sequentially with Home Assistant Scripts

Why I Needed Sequential Updates I maintain 20‑plus ESPHome nodes on a small ARM‑based Home Assistant server. Each OTA update forces a full C++ compile, which can take ≈ 5 min per device. Two compiles at once, however, balloon the total wall‑time (CPU contention + I/O) and can push the server to its limits. I opened esphome/feature‑requests #2171 asking for a shared build‑cache across devices—because most of my YAML files differ only in pin mappings. If the cache wasn’t per device, maybe I could have kicked off all devices at once, or even used esphomes own “update all” as it had its own issues with not being able to run for hours and hours. Until that feature lands, the workaround has been to update devices strictly one after another. ...

May 12, 2025 · 4 min · Michael Bisbjerg

Smart Refresh Schedule for Sensors in Home Assistant

Polling a sensor at a fixed interval — say, every 5 minutes — is simple to set up. But in practice, it can be wasteful or inadequate: polling too often wastes bandwidth and may hit rate limits, while polling too slowly can leave your data stale when you need it most. Ideally, we’d poll frequently when someone might be watching, and rarely (or not at all) when the house is asleep or empty. That means dynamic polling based on context. ...

May 9, 2025 · 4 min · Michael Bisbjerg