Skip to content
Back to Published Articles
Home Assistant

The floor heating & cooling war, a CO2 diagnosis and appliances that talk

Part 2 of my Home Assistant series. Inside the house, 14 automations keep the wall thermostats and Home Assistant from fighting, a CO₂ chart ended up diagnosing a filter, and the appliances finally tell me things.

The floor heating & cooling war, a CO2 diagnosis and appliances that talk
Cross-posted from my original article on Dev.to. Read reactions and join the discussion on Dev.to →
100% Human-Authored: All engineering insights, production war stories, and code were written by Marcelo Costa with zero AI involvement in authoring. AI was used solely for multilingual translations.

In part 1 I got through the gates, past the alarm and away from the car. Now I'm inside, and inside is where the house started doing things I never asked for.

The war over the floor heating and cooling

I have 14 automations just for the radiant floor. Fourteen! That number alone tells you how this war is going.

The physical wall thermostats and Home Assistant do not agree on who's in charge. And the setup makes it worse: the same floor heats in winter and cools in summer, but Home Assistant can't actually do either. The wall thermostat calls for it, and Home Assistant can only let it through or cut it. It never adds, it only subtracts.

Climate tab — the floor heating & cooling card with the three zones

So one automation detects when the wall refuses to let HA reach the target it was given, and re-syncs the valves to what I actually asked for. Someone turns a knob by hand? Another one waits and quietly puts it back. The Shelly's fallback script dies silently? There's a heartbeat watching for that.

The "How it works" pop-up — the "Who controls what" table

My favourite one is the dumbest of all: on the 1st and the 15th of every month, every valve gets exercised, opened and closed once, so they don't seize up after sitting closed for weeks. Is that smart home stuff? Not really. It's maintenance I would never, ever remember to do (which is kind of the entire point).

The air I'm breathing

Five automations around CO₂. I genuinely did not expect to care about any of them.

Sensors tab — "CO2 in the last 24 h" chart and the rooms table

  • The house empties out and stops ventilating → a warning.
  • The bedroom air goes stale → air it out before bed.

See that line climbing past 1000 ppm overnight? That's the bedroom, with the door shut, with two people in it.

Now, here is where the plot thickens. After enough nights, it stopped just reporting the number and started telling me how the night went. And when the same bad shape kept repeating, three times in three days, it stopped talking about CO₂ altogether and told me to go check the ventilation filter.

The dashboard keeps one more number next to it: the lowest reading since midnight. With the ventilation healthy, it sits close to the 420 ppm of outdoor air. If that floor creeps up over weeks, the airflow dropped, and you'd never see it in the live value, because people moving around hide it.

Reporting a metric → diagnosing a cause. I never designed that part. It showed up after adding one more condition, over and over.

The appliances learned to talk

The dishwasher pop-up — with the "How long each program takes" table

The dishwasher tells me when it starts, when it errors, and reminds me to crack the door open at the end so things actually dry. And look at the bottom of that screen: "How long each program takes". That table isn't from the manual. It built itself by watching the machine run, cycle after cycle.

The washer-dryer reports every phase change, tells me when it's done, and (crucially) nags me again 30 minutes later if I've abandoned a load inside. It also caught two things I'd never have noticed: anti-crease had been running for an absurdly long time, and the machine quietly resets its UI language after every firmware update. Thanks, firmware.

Nobody sells you a washing machine on "it will remember things so you don't have to." But that's the feature.

And the genuinely small stuff

Home tab — the "Lights" section

  • Presence lighting between 20:00 and 08:00, dimmed to something that won't blind you at 3am.
  • Arming the alarm turns off any lamp someone left on.
  • The reading lamp hands control back to Ana instead of fighting her.
  • The Govee bridge re-sends brightness together with colour, because sending them separately makes it flicker.

Home tab — "TV & Music"

The TV needs an explicit turn_on over Wake-on-LAN, because SmartThings alone won't wake it. The PC reports back when it actually shuts down instead of leaving me guessing. And the Music Frame remembers the last station I was listening to, so "put the radio on" is one tap and not a menu dive.

None of these are impressive. But every one of them removed a tiny daily friction I'd stopped noticing I had.


Next, and last: the boring automations. Leak sensors, smoke detectors, batteries: the ones nobody shows off, and the ones that made me realise I'd been doing QA on my own apartment.

Running Home Assistant Green, YAML-first, with a dashboard built on Bubble Card and Mushroom. What about you? What's the dumbest automation you'd never give up? Leave me a comment, I would love to hear!