I wanted a physical remote for Home Assistant that could control the things I use every day without opening an app. That turned into homeThing, an open-source collection of software and hardware for building small ESP32-based smart home remotes.

Exploded 3D render of the homeThing remote showing the enclosure, display, battery, and scroll wheel
homeThing exploded render

an iPod-style menu for the smart home

The interface is built around a scroll wheel and physical buttons. You can move through lists, press the centre button to select something, and use the top button to go back. It works well on a remote because the controls are easy to find without looking at the screen.

The menu is configured in ESPHome YAML, while the more complicated display and control logic stays in reusable components. homeThing currently includes interfaces for:

  • lights, switches, scenes, sensors, and other Home Assistant entities
  • media players, including volume, playback, sources, favourites, and speaker groups
  • TV navigation and soundbar controls
  • infrared devices
  • small extras like Snake and Breakout
homeThing now playing interface
The now playing interface

hardware options

The software can run on several ESP32 devices, including the LilyGo T-Display, T-Display S3, T-Display T4, M5Stack Fire, and M5Stick C. It can also be adapted to a generic ESP32 with a supported display. I designed custom printable cases and circuit boards for dedicated remote builds, but they aren’t required to try the software.

build one

homeThing is open source. The repository includes the ESPHome configurations, reusable components, printable case files, PCB files, and a step-by-step setup guide.