Project: Soft Rains Entry 05

The switch that lied

It reported on. It reported a brightness. There was no bulb attached to it.

Smart bulbs solve the wrong half of the problem. They are great until somebody turns the wall switch off, at which point you own an expensive bulb with no power and an automation system that cannot reach it. The fix is a switch that never actually cuts power, and instead sends its button presses off to be interpreted. I put in a set of them over a couple of days, wired into the existing boxes, joined to the house over Thread.

This is the part I was most looking forward to and the part I was most nervous about, which is a combination I should probably pay attention to. Nervous because the boxes here are old and shallow and somebody has been in them before me with more enthusiasm than method. One of them had three wires under a single screw. Two had no neutral, which sent me down a two hour reading detour at eleven at night about why that is so common in older places and what your options are, none of which I will repeat here because there are people who explain it properly. Looking forward to it because after two years of stick-on everything in a flat I did not own, getting to actually open a wall and put something permanent in it felt like a promotion.

The switches themselves are good. Everything I did with them for the first week was wrong, and every single failure had the same shape: something reported success and nothing happened in the room.

One: the switch is two devices

Each of these switches presents itself to the house as two separate lights. One is the actual load, the wiring going off to the fixture. The other is the little LED status bar down the side of the paddle, the one that glows a colour to tell you something. Both look identical from the outside. Both accept on, off, and a brightness.

And the order they appear in is not the same on every switch. So my code, which reasonably asked for "the light on the device called X" and took the first one, was addressing the status bar on roughly half the switches in the house. Every command returned success. The status LED presumably looked lovely. The room stayed dark.

The fix is to pin the exact service in configuration for every switch, individually, once, by hand. Not elegant. It is the only thing that is reliable.

Two: the switch with nothing behind it

This is the one I am going to remember. The second staircase has switches at both the top and the bottom. Only one of them has the light wired to it. The other is a paddle with no load at all, there to act as the second half of a three way, which in this setup means its job is purely to tell my software that somebody pressed it.

I spent a morning wiring up the motion automations for that staircase against the wrong one of the two. Every test passed. I would trigger motion, watch the log say the command went out, and then watch the log say the device confirmed it was on, because I had been careful and built in a read-back rather than trusting the write. The read-back was honest. The switch really was on. There was simply no light connected to it.

A stairway sat dark for a day while my logs cheerfully reported it lit. I had built the verification step and it verified the wrong thing, which is worse than not having built it, because it made me confident.

The dead paddle is a good example of the house being older than the assumptions everything is built on. Nothing in any setup guide anywhere accounts for a switch that is only a switch in the sense that it is switch-shaped. I have started keeping a note of these, the small ways this specific building does not match the diagrams, and it is longer than I expected after a month. None of it is a problem exactly. It is just that every product assumes a house from about 2015 and mine is not that.

Three: half the features are not there yet

Holding the paddle to dim does not work on the firmware these shipped with, in the mode I need them in. Not badly, not inconsistently. It does nothing, and I confirmed it by reading the level directly rather than trusting what I thought I saw.

What does work, and works beautifully, is the button events. Each paddle reports single, double and long presses as their own clean stream. So the taps and holds are all mapped to what I actually wanted: tap up for the current scene, tap down for off, double tap to step brightness, hold down for a deep red nightlight. It responds in about a third of a second and feels better than the dimming I was trying to get in the first place.

One footnote for anyone doing the same. The button events arrive exactly once. The light state changes arrive up to nine times for a single press, so anything listening to those has to squash the duplicates or you get some very confused automations.