explaingit

jasionf/smart-home-button

Analysis updated 2026-05-18

173C++Audience · vibe coderComplexity · 3/5Setup · hard

TLDR

Firmware that turns the M5Stack Dial, a small round knob device, into a physical control panel for Home Assistant smart home dashboards.

Mindmap

mindmap
  root((Smart Home Button))
    What it does
      Physical Home Assistant panel
      Rotary dial control
      Touch screen pages
    Tech stack
      ESPHome
      LVGL UI
      M5Stack Dial
    Use cases
      Control lights and AC
      Show clock and weather
      Music playback control
    Audience
      Smart home hobbyists
    Setup
      USB flash firmware
      Edit YAML config
      Wireless updates after

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Control smart home lights and thermostats with a physical dial instead of a phone app.

USE CASE 2

Display a clock, weather, and now-playing music info on a small desk device.

USE CASE 3

Build and 3D print a custom enclosure for a dedicated Home Assistant remote.

What is it built with?

C++ESPHomeLVGLYAML

How does it compare?

jasionf/smart-home-buttonredteamfortress/phantomkillerjasonlam08/cursor_agent_status_light
Stars173170178
LanguageC++C++C++
Setup difficultyhardhardhard
Complexity3/54/53/5
Audiencevibe coderresearchervibe coder

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires an M5Stack Dial V1.1, ESPHome tooling, and editing YAML files with your Home Assistant entity IDs.

Not stated in the README.

In plain English

Smart Home Button is firmware for a small round device called the M5Stack Dial, which has a rotary knob, a touch screen, and a front button. The project turns this device into a physical control panel for Home Assistant, a popular home automation system. Instead of unlocking your phone and opening an app every time you want to dim a light or skip a track, you twist the dial or tap the screen on the device sitting on your desk. The firmware is built using ESPHome, a platform for programming smart home devices, and LVGL, a library for drawing user interfaces on small screens. The round 240x240 display shows a series of pages you can swipe between. The clock page shows the time, date, and weather data from your Home Assistant setup. The light page controls the device's own LED ring. The AC page adjusts your air conditioner's target temperature and power. The music page shows the current track, album art, playback progress, and volume controls. There is also a countdown timer and a small fridge status page for tracking food freshness. Setting it up requires flashing the firmware to the device via USB using the ESPHome command-line tool. You configure it by editing two YAML files: one for Wi-Fi credentials and one for your Home Assistant entity IDs, which are the internal names Home Assistant uses for each device and sensor. After the first flash, future updates can be sent wirelessly over your local network. The project is designed for M5Stack Dial V1.1 specifically. The repository also includes 3D-printable files for an enclosure if you want to build one. Customizing which features appear on each page mainly involves editing the page YAML files. The README includes notes on known limitations, such as album art needing to stay small because the hardware has limited memory, and some air conditioner integrations requiring additional mapping for fan speed and swing controls.

Copy-paste prompts

Prompt 1
Walk me through flashing this ESPHome firmware onto an M5Stack Dial for the first time.
Prompt 2
Show me how to edit the YAML files to connect this to my own Home Assistant entities.
Prompt 3
Explain how to customize which pages appear on the dial's screen.
Prompt 4
Help me set up wireless updates after the initial USB flash.

Frequently asked questions

What is smart-home-button?

Firmware that turns the M5Stack Dial, a small round knob device, into a physical control panel for Home Assistant smart home dashboards.

What language is smart-home-button written in?

Mainly C++. The stack also includes C++, ESPHome, LVGL.

What license does smart-home-button use?

Not stated in the README.

How hard is smart-home-button to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is smart-home-button for?

Mainly vibe coder.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.