2026-05-19 13:09:07 +02:00
2026-05-19 13:09:07 +02:00
2026-05-12 13:04:34 +02:00
2026-05-12 11:13:29 +02:00
2026-05-12 13:04:34 +02:00
2026-05-12 13:04:34 +02:00
2026-05-12 13:04:34 +02:00
2026-05-19 13:30:11 +02:00

buttonplus-esphome-generator

A python script that generates a full ESPHome config for the Button+ V2

Features

  • Notification Action: esphome.<name>_notification
    • Shows a notification, which has to be dismissed
  • Toast Action: esphome.<name>_toast
    • Shows a quick toast message which dissapears after a timeout
    • Perfect for confirming actions
  • Get info Action: esphome.<name>_get_page_info
    • Shows data needed for the set_page_led action
  • Set Led per page Action: esphome.<name>_set_page_led
    • Allows you to set the LED for a specific page
    • So that you don't need to keep track of which page is active when setting a LED
  • Generates pages and all buttons and events belonging to each page
  • Breathe and Blink effect for all LEDs
  • more to come..

Setup

Project uses pipenv (Optional)

run pipenv install to setup the project the first time.

run pipenv shell after that to open the virtual environment.

Run script

You can then use python src/main.py --help to run the generator

Example run command

python src/main.py -v 1 -b 3 -p Start Music Lights Security -c single double hold

Config example

The configuration (handmade) on which this generator is based, can be found in the esphome folder.

Todo

Ideas

  • Show image service
  • Top level config only for drawing, everything else hidden
    • back to using packages or includes probably
    • with --no-split option
    • two files

Missing config

  • Event lambda's (see config.yaml)
  • Implement --no-click-confirm
  • Make effects optional (--no-effects)
  • service: get led state
    • led name
    • page name
    • page num
  • service: get_page_info
    • rename the service
    • add the effect options
S
Description
A python script that generates a full ESPHome config for the Button+ V2
Readme MIT 150 KiB
Languages
Python 100%