The ecosystem that was actually fifteen ecosystems
The starting point was manageable on the surface: a few lights, some thermostats. But underneath, it was a zoo. Around ten miscellaneous Govee lamps—nice RGB ambience, completely isolated ecosystem. Four or five strategically important IKEA Tradfri lights that required their own bridge and had no clean path into the Amazon ecosystem. Tado thermostats—excellent for heating, own app, own cloud, doesn't talk to IKEA or Govee. A robot vacuum cleaner that would never in a million years have spoken to Apple Home. Assorted smart plugs from three different manufacturers.
“I had six apps. But each one did what it was supposed to,” the subject explains. “I wasn't unhappy.” The starting position was stable. No emergency. Just a fragmented setup that most people would accept as normal.
The crucial detail: every one of these choices was individually reasonable. IKEA lights are good. Tado is excellent. Govee makes great lamps. The robot vacuum cleans. Nobody buys products in anticipation of future ecosystem conflicts. And Alexa held it together—imperfectly, with optimization quirks that persist to this day—but it held.
One sensor. One thought. One very expensive downgrade.
The Aqara FP2—millimeter-wave presence detector. HomeKit-native. But calling it a “presence sensor” undersells it dramatically.
Apple Home seemed like the logical platform. The FP2 is native HomeKit. Per-zone automations, individual lighting scenes based on which part of the room you're in. Clean. Beautiful. In theory.
The subject bought an Aqara Home Bridge specifically to proxy the FP2 sensors toward his other home automation systems. That was supposed to solve everything.
It didn't. Govee lamps still wouldn't communicate. And the next suggestion from the internet was to “reflash your devices for Zigbee”—a protocol he'd never heard of.
Home Assistant: no tinkering required (narrator: there was tinkering)
After hitting every wall, the decision was to step back. Consolidate around Amazon again. Pragmatic. Sensible. Done.
Except the FP2 sensors. They worked beautifully in Apple Home. Per-zone lighting was genuinely transformative. Walking into a room and having only the relevant area light up—that's not a gimmick. That's how light should work.
Then: a search. “Home Assistant IKEA Tado Govee integration.” Twenty-seven tabs. A Reddit thread. A YouTube playlist. A Discord server with 40,000 members.
The important nuance: the goal was never to tinker. He explicitly didn't want a DIY project. So instead of building something from scratch, he bought a Home Assistant Green—a purpose-built, turnkey mini server.
Home Assistant delivered on its promise. Everything integrated. But “everything integrated” means “you now understand how everything works.” And understanding how everything works means understanding how everything can break.
Take Tado as a single example: four different integration paths, each with different trade-offs around compatibility, feature coverage, and long-term support. Multiply that decision across every device category—IKEA, Govee, vacuum, plugs, FP2 sensors—and the integration landscape becomes genuinely messy.
Smart homes are not portable (and other lies)
Then he moved apartments.
The smart home setup built in one place should, of course, be easily transferable. You still have a kitchen. Still have a bathroom. The automations should just... work. Right?
He had to start fresh. Even knowing the pitfalls. Even having done it before.
And this time, he scaled up. More Zigbee sensors—window contacts, door sensors, temperature sensors. Suddenly: a scalability problem on the 2.4 GHz Wi-Fi band. Too many devices competing for airtime.
The dedicated Zigbee router—required for reliable operation of 54+ devices—looks like something recovered from an extraterrestrial crash site. It is, objectively, the ugliest piece of technology in the apartment. Most people would hide it behind a curtain.
The subject bought a golden-coloured epoxy resin hand sculpture, positioned it next to the coffee machine, and placed the Zigbee router in its palm like an offering to the connectivity gods.
Side effects: guests now ask about the art installation. Nobody asks about the Zigbee mesh network. This is considered a success.
Incident Report: The Kitchen Fan
His girlfriend asked: “Why does the ventilation fan in the kitchen not turn off?”
He checked the logs. Came back twenty minutes later.
“The fan in the kitchen won't turn off because I hung up laundry to dry in the office above the kitchen. And it's daytime.”
The explanation: there is a humidity sensor in the office above the kitchen. It is part of the trigger conditions for the kitchen fan. If humidity in the office rises, the automation assumes someone is cooking downstairs — steam rises through the building. The automation only runs during daytime hours, because nobody cooks at 3 AM.
Wet laundry in the office raised the humidity. The automation concluded: cooking. The fan turned on. And stayed on.
Incident Report: The Sensor That Sees Through Walls
The millimetre-wave presence sensors — the Aqara FP2s, the ones that started this entire journey — can see through drywall.
Nobody tells you this. The spec sheet does not mention it. You discover it when the light in your office turns on at random intervals, roughly 30% of the time, for no apparent reason.
Weeks of debugging. Checking automations. Reviewing logs. Testing sensor zones. The behaviour was inconsistent enough to resist diagnosis — not every time, not predictable, just … sometimes.
The root cause: the office shares a drywall partition with the bathroom. The FP2 sensor in the office was detecting a human presence through the wall. It was, in clinical terms, watching him use the bathroom.
The man who just wanted to turn on a light now has a GitHub profile
Then a device in an upstream project misbehaved. Chinese preset names crashed the MQTT bridge—a unicode handling bug buried deep in Rust code. Someone had filed the issue months ago. Nobody had fixed it. The subject read the thread. Then the code. Then he opened Claude Code.
“I had never written Rust before. But Claude Code read the codebase and the fix became obvious within an hour.” The PR was merged. The repository has several thousand stars. His name is in the changelog.
The subject—an account executive by profession, not an engineer—now has pull requests across three programming languages he doesn't professionally write: Rust (unicode crash fix, merged), Bash/Docker/Nginx (add-on modernization + MQTT export), and TypeScript (Lovelace card). All in projects he actually depends on. All done with Claude Code.
The pattern, he insists, is not “I learned to code.” The pattern is: “The barrier to contributing to open source is gone.”
His parents still don't understand. The maintainers do.