The In-wall sensor scam: Why Your Wall Thermostat Is Lying to You (and How to Beat It with Matter)

I love tinkering with my smart home. My passion lies in finding practical solutions that enable optimal living within a smart home setup. Whether it's crafting recipes to solve the multi-remote issue or brainstorming how to automate lighting so it’s helpful without being intrusive (a piece on that may come in the future), I’m always exploring. One area where I consistently see room for improvement is HVAC control.

In Europe, we have cooling seasons, heating seasons, and transitional periods when neither is required. When I was a kid, cooling wasn’t even necessary, but today, most modern homes are equipped with at least one source for heating and one for cooling. So whenever you’re setting up automations, you need to account for both modes (OK, there are technically three, but since the third just turns everything off, it’s not so tricky to set up 🙂).

Even though today's topic could apply to heating as well, we’ll focus only on cooling for now. It’s summer, after all—not the ideal time to tweak heating systems 🙂

In my previous Dr. Smart Home pieces, I wrote about a hack to switch a Matter-enabled Eberle thermostat into cooling mode. Getting the setup into cooling mode is essential for the continuation of the hacking described below.


The Holy Offset

What’s been bothering me for ages across all kinds of smart home systems is the underwhelming performance of in-wall temperature sensors. I’m talking about any temperature sensor built into an in-wall thermostat, LCD display, push button, or touch panel. Cheap brands, expensive brands—everyone suffers from the same issue.

These in-wall sensors are flawed in two key ways. Most of the time, they report a temperature that’s offset from the actual room temperature. That’s logical: inside a wall box or behind a switch, there’s little airflow, the electronics generate heat, and the surrounding wall mass plays a major role. Walls heat and cool slowly (exact behavior depends on the wall type, but let’s set that aside for now), and they retain temperature far longer than the surrounding air. All of this makes it nearly impossible for an in-wall sensor to show an accurate temperature throughout the year. Sure, you can apply a software offset, but that usually just makes the reading even more inaccurate during the opposite season.

An even bigger issue—again due to physics—is the slow response time. When there are rapid changes in temperature, like turning on the A/C or opening a window on a hot day, these sensors can’t keep up.

This leads to frustrated users. (How many times have we seen new KNX-equipped homeowners pull out a portable sensor to prove something isn’t working as expected?) Sometimes users don’t notice—or they stop caring after a while. But if you have a demanding client, you can easily sink hours into trying to solve this with limited success.

Goodbye A/C remote? Think again

This is also the core reason why A/C logic tends to fail. Because of the offset, the sensor shows a temperature higher than the actual air temperature (which itself is never constant, but that’s a topic for another day). So the A/C kicks in too early. Then, even after running for a while, people start to feel cold—yet the in-wall sensor barely registers a 0.5–1°C drop. The only way to turn the A/C off at that point is to set the thermostat’s setpoint way higher. Then it gets hot again, and you have to lower it back down.

I’ve seen this scenario play out in countless projects—often ending in the customer requesting a return to trusty old remotes. It was the same in my humble abode. And when my wife and kid are napping and the chores are done, I become Dr. Smart Home, spending hours saving the world one smart home tweak at a time. Today’s battle: the in-wall temperature sensor.


Matter comes into play

If you’ve been following my earlier ramblings, you already know my setup consists of a Matter-enabled Eberle thermostat and a Mitsubishi A/C split unit.


The Eberle device is a pro-grade thermostat—not a Kinder Surprise gadget like some other products on the market. Sensor quality and general implementation are on par with high-end thermostats, whether KNX, classical, or otherwise. Eberle has a strong history in this field, and their Matter-enabled version is essentially their proven hardware with added connectivity. A proper German product. But even that doesn’t solve the problems described above.

The only real solution is to use an external sensor—not mounted in the wall. This doesn’t eliminate the issue 100%, but it reduces it enough that most people (and use cases) won’t notice.

At home, I use two external sensors. One is in the SwitchBot Hub 2, mounted in the kids’ room. I was surprised by how responsive it is. When I first tested it, I compared it to the HomePod Mini sensor—night and day. The SwitchBot reacts instantly when the window is opened, while the HomePod lags significantly.

The other sensor is built into my Nature Remo Lapis device, which I use for IR control of basically everything (A/C & A/V). This one isn’t as fast as the SwitchBot (more like the HomePod), but it’s still leagues ahead of any in-wall sensor. For this test, I’ll be using the Nature Remo sensor—partly because its behavior resembles most IoT sensors I’ve used, and partly because I’m too lazy to dismount the SwitchBot from the kids' room.

Field Data

It’s July 27th, 16:32 in Ljubljana. The day has been (not super) hot, and we’re moving into a warm evening—though it’s mild for this time of year. My windows have been open all day and I haven’t run the A/C. Here are the readings:

  • Outdoor temperature (OpenWeather Map): 27°C
  • Indoor temperature (Eberle thermostat): 28.5°C
  • Indoor temperature (Nature Remo Lapis): 27.6°C
  • Indoor temperature (SwitchBot Hub 2): 27°C

And this is in the evening. In the cooler, overcast morning, the difference was even greater: 27.5°C on Eberle vs. 25.3°C on Nature Remo.

The Salvation

I logged into the 1Home local dashboard and opened my HVAC automation. In the picture below is the condition that determines whether cooling is turned on or off. (One day I’ll make this more sophisticated—with different thresholds, humidity hysteresis, and dry/cool/off mode switching. But for now it’s one simple threshold.)

Previously, the automation logic was:

“Current temperature according to Eberle sensor – current setpoint from Eberle thermostat”

Now, I simply switched the current temperature reference to the Nature Remo sensor:

“Current temperature according to Nature Remo sensor – current setpoint from Eberle thermostat”

Here’s how the modified condition looks:

With this change, my A/C automation performs noticeably better than when relying on the suffocated wall-mounted sensors. If you want a sensor to serve you well—it needs to breathe.


One tradeoff

One drawback to this hack is that the Eberle thermostat's own display no longer reflects the temperature controlling the A/C. That means it could show that the A/C should be running—when in reality, it's off. I don’t expect this to be a major issue, but if it becomes a nuisance or I discover any flaws in my otherwise genius solution, I’ll report back.

I could fine-tune things further by moving the sensor to a better spot in the room (right now it’s near a south-facing window, where summer temps are higher than elsewhere), but... Tour de France is starting soon, so I’ll take my leave 😀 Go Pogi!! Go Rogla!!