edit: changed the name to avoid any trademark issues, changed the repo link to match, and have added several features!
I’ve been looking for a clean way to control Hass that would fit into a standard single-gang work box / switch panel and lacking good options on the market I’ve decided to design and build one myself.
I’ve designed a 3D-printable enclosure (front/back) to fit a 2.4" Nextion LCD touchscreen and Arduino code for an ESP8266 to interface with the display and communicate with Home Assistant via MQTT. The device can display a series of “pages” each with a custom set of buttons. There are several default button layouts (4 button/8 button/12 button/media/graph) available out of the box, and each button can be configured from Hass via MQTT for custom text, font size, colors, and action. Button presses are published back to MQTT for Hass to pick up and react to via automations.
In this video I run a quick demonstration of the device powering up, receiving its configuration, and controlling scenes in Home Assistant. I’ve created some automations which will do things like send the current time in a large font every minute to a button, creating a clock display. The same can be done with the current weather, sensor status, or anything else Hass knows about. Button presses send out MQTT commands which can trigger scenes (or anything else) in Hass.
The Nextion display used in this project has it’s own command structure which is accessible via MQTT, so you can use the provided display firmware or download their editor to create highly-customized art and graphics. The included Arduino code should be flexible enough to support whatever you create as it’s mostly just passing through Nextion commands directly.
Here are some example screens, all of these are created by way of sending MQTT commands from Hass to the device:
Both the microcontroller and LCD panel support OTA updates allowing modifications without removing the device from the wall. Extensive demonstration automations are provided to give you a sense of how to interact with the device. The code and models are now (reasonably) complete and ready for user testing.