Opening an app to turn off a light is a failure of imagination. I wanted physical buttons — so I built a 3x3 macropad where each key toggles a different light in the house through Home Assistant.
The build
Same construction approach as the split keyboard: a 3D-printed “PCB” with the switches hand-soldered directly, mounted in a 3D-printed case — all printed on the Creality Ender-3 V3 KE. Nine keys, no hot-swap sockets this time — these switches aren’t going anywhere, so they got soldered straight in. It’s mains-powered over USB, so no battery to think about.
The brain is a Waveshare ESP32-S3-Touch-AMOLED-1.91, with the 1.91" AMOLED display built into the board itself. It sits inside the case with only the USB-C port visible. If you’re replicating this, any ESP32 dev board does the job — and if you want the built-in screen, the Cheap Yellow Display (ESP32 plus 2.8" touchscreen) is the popular budget pick. About that display: I cracked it during the build. It’s fully enclosed now, completely invisible, serving no purpose whatsoever. Some components are load-bearing in spirit only.
The software
It runs ESPHome, which is the cheat code for this kind of project. Each switch is configured as a binary sensor, and each one flips a Home Assistant switch entity tied to a light. Nine keys, nine lights. ESPHome handles the Wi-Fi, the Home Assistant API, reconnection, all of it — the config is maybe forty lines.
There’s no state synchronisation to worry about: the key doesn’t track whether the light is on or off, it just toggles. Press it and the light flips, whatever it was doing before. That keeps the firmware trivial and means it can’t get out of sync.
Why buttons
Voice control is fine until it mishears you at midnight. The app is fine until your phone is in another room. A button is a button: guests can use it without a tutorial, it works in the dark, and it never needs charging or updating. The whole thing cost a few pounds in switches and filament plus a dev board I already had.
It’s the least impressive thing on my desk and the thing I touch most.
As an Amazon Associate, Headless Diaries earns from qualifying purchases made through links on this page.