Investigative · Smart Home 2026-04-10T03:47:00+02:00

He just wanted to
turn on a light.

How IKEA bulbs, Tado thermostats, a robot vacuum, Govee lamps, and a single presence sensor triggered a chain of events that ended with merged pull requests across three open-source projects in languages he'd never written. Also: 10 Bluetooth proxies, 17 Matter devices, and a sensor that sees through walls. A reconstruction.

5+ecosystems
1Aqara FP2
847lines of YAML
3languages he doesn't speak
4PRs submitted
54Zigbee devices
I The Status Quo

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.

ecosystem_audit.sh — Era I
$ ls ~/smart-home/
ikea-tradfri/ # 5 lights, own bridge — app 1
tado/ # thermostats, own cloud — app 2
govee/ # 10 RGB lamps, own app — app 3
misc-plugs/ # 3 manufacturers — apps 4, 5, 6
robo-vacuum/ # its own universe — app 7
alexa/ # glue layer, sort of — app 8
 
$ echo $STATUS
works. not great. not terrible.

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.

II The Catalyst

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.

💡
What the FP2 actually does: It doesn't just detect whether someone is in the room. It detects how many people, and where—at a resolution of roughly 10 × 10 cm per zone. You can draw arbitrary detection zones on a floor plan. It tracks people moving between zones in real time. This is a fundamentally different capability than the infrared motion sensors that came before it.

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 problem: Integrating the FP2 with the Alexa ecosystem meant collapsing all that zone granularity into a single binary signal: occupied or not occupied. A €90 millimeter-wave sensor reduced to what a €5 infrared PIR sensor does. Every other device—IKEA, Govee, the vacuum—couldn't talk to Apple Home either.

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.

“I bought a €40 bridge to make a €90 sensor work like a €5 sensor, and the internet told me to reflash my light bulbs. That's when I knew something had gone fundamentally wrong.”
— Subject, 2:14 AM
🔴
Editorial note: The phrase “just reflash it for Zigbee” has been identified as a gateway to Home Assistant in 73% of documented cases. Proceed with caution.
III The Consolidation

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 — migration.log
$ ha core install # one afternoon
✓ installed
 
$ ha integrations list tado # how hard can it be?
→ Option A: Native Tado integration
→ Option B: Emulated Apple Home bridge
→ Option C: Matter bridge
→ Option D: Manual API polling
 
$ echo "which one?"
yes. # all of them. each with trade-offs.
 
$ cat automation.yaml | wc -l
847 # it started at 12

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.

⚠️
What nobody tells you about Home Assistant: The platform is extraordinary. But the migration from N existing ecosystems is an N-dimensional decision matrix where every choice affects every other choice. This is not a complaint. This is a field report.
IV The Relocation

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.

infrastructure — escalation.log
$ zigbee devices --count
54 # it was 12 before the move
 
$ wifi band --congestion 2.4ghz
CRITICAL # too many devices, not enough spectrum
 
$ apt install wifi7-router # €180 for a light switch
✓ mesh network deployed
 
$ zigbee coordinator --status
USB dongle: INSUFFICIENT # can't handle 54 devices
 
$ zigbee coordinator --upgrade
→ dedicated Zigbee router purchased
→ appearance: alien mothership
→ aesthetic compatibility: 0%

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.

“It gets very, very, very good reception.”
— Subject, on the antenna placement

Side effects: guests now ask about the art installation. Nobody asks about the Zigbee mesh network. This is considered a success.

📡
Current device census: 54 Zigbee devices. 17 Matter devices. 10 Bluetooth proxies. 1 Aqara Bridge repurposed as a Matter border router (its original purpose abandoned long ago). The concept of needing ten Bluetooth proxies distributed across an apartment to maintain mesh coverage is, by any reasonable standard, bonkers. You cannot explain this to anyone. Everyone thinks you are batshit crazy.

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.

“It took me a moment to realise how stupid this explanation sounds to someone who just wanted the fan to stop.”
— Subject, to his girlfriend, who is reconsidering things

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.

🔴
Technical finding: Millimetre-wave radar penetrates standard interior drywall (12.5 mm gypsum board). Detection range through a single partition: approximately 1.5–2 metres. Symptoms: intermittent false presence in adjacent rooms. Resolution: adjust detection zones to exclude wall-adjacent areas. Emotional damage: considerable.
V The Aftermath

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 escalation continued. After the Rust fix, he found a stalled Home Assistant add-on—someone had asked “Is this project abandoned?” He upgraded its core dependency, wired up MQTT export, hardened its security, and published a fork. In Bash. A language he also doesn't write. Then he submitted PRs to the original repo. For a light switch.

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.”

“I don't write Rust. I don't write Bash. I don't write TypeScript. But I use software that's written in all three, and when it broke, I fixed it. That's the whole story.”
— Subject, now fully awake at 4:12 AM
✔️
Current status: The lights work. Multi-zone presence detection runs. Tado integrated. All plugs active. 54 Zigbee devices on a mesh network. 10 Bluetooth proxies. 17 Matter devices. The FP2 knows where in the room someone is. The Zigbee router sits in a golden hand next to the coffee machine. This was always the goal. The path there was optional.

His parents still don't understand. The maintainers do.


Classifieds Category: Smart Home · Self-Inflicted
Free to Good Home

3× Apple HomePod mini, barely used. Incompatible with personal life philosophy. Pickup in Munich.
Inquiries via MQTT only.

Wanted

Someone who can explain why automation.yaml:847 executes at 3:47 AM even though I didn't write it. Compensation: another upstream patch.

Warning

Aqara FP2 listed for sale. Statistically leads to Home Assistant in 73% of cases. To 54 Zigbee devices in 31%. To a sensor watching you through the bathroom wall in 12%. Buyer assumes all responsibility.

The full configs, patches, and forks → Maintain one of these projects? Let's talk →