From e46215e7fb0e6010dd3b2ea6e7246e6e4f7bd723 Mon Sep 17 00:00:00 2001 From: Martijn Date: Sun, 29 Dec 2024 15:36:08 +0100 Subject: [PATCH] updated readme and example to match new changes --- Examples/3pages_TotalExample.yml | 202 +++++++++++++++---------------- README.md | 39 ++++-- 2 files changed, 130 insertions(+), 111 deletions(-) diff --git a/Examples/3pages_TotalExample.yml b/Examples/3pages_TotalExample.yml index 23f95ed..314a3fa 100644 --- a/Examples/3pages_TotalExample.yml +++ b/Examples/3pages_TotalExample.yml @@ -46,9 +46,7 @@ packages: globals: - id: !extend page_names - initial_value: '{"Page 1","Music","Page 3"}' - - id: !extend active_page_name - initial_value: "" + initial_value: '{"page 2","Music","Page 3"}' font: - file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf" @@ -108,80 +106,80 @@ event: name: BAR1 button Left event id: bar1_btn_left_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" - platform: template name: BAR1 button Right event id: bar1_btn_right_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" - platform: template name: BAR2 button Left event id: bar2_btn_left_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" - platform: template name: BAR2 button Right event id: bar2_btn_right_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" - platform: template name: BAR3 button Left event id: bar3_btn_left_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" - platform: template name: BAR3 button Right event id: bar3_btn_right_event event_types: - - "press page 0" - - "release page 0" - - "long press page 0" - "press page 1" - "release page 1" - "long press page 1" - "press page 2" - "release page 2" - "long press page 2" + - "press page 3" + - "release page 3" + - "long press page 3" binary_sensor: - id: !extend main_display_btn_left @@ -194,29 +192,29 @@ binary_sensor: on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_left_event).trigger("press page 0"); - break; case 1: id(bar1_btn_left_event).trigger("press page 1"); - id(music_card_vol_down).execute(); break; case 2: id(bar1_btn_left_event).trigger("press page 2"); + id(music_card_vol_down).execute(); + break; + case 3: + id(bar1_btn_left_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_left_event).trigger("release page 0"); - break; case 1: id(bar1_btn_left_event).trigger("release page 1"); break; case 2: id(bar1_btn_left_event).trigger("release page 2"); break; + case 3: + id(bar1_btn_left_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -224,43 +222,43 @@ binary_sensor: then: - lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_left_event).trigger("long press page 0"); - break; case 1: id(bar1_btn_left_event).trigger("long press page 1"); break; case 2: id(bar1_btn_left_event).trigger("long press page 2"); break; + case 3: + id(bar1_btn_left_event).trigger("long press page 3"); + break; } - id: !extend bar1_btn_right on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_right_event).trigger("press page 0"); - break; case 1: id(bar1_btn_right_event).trigger("press page 1"); - id(music_card_vol_up).execute(); break; case 2: id(bar1_btn_right_event).trigger("press page 2"); + id(music_card_vol_up).execute(); + break; + case 3: + id(bar1_btn_right_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_right_event).trigger("release page 0"); - break; case 1: id(bar1_btn_right_event).trigger("release page 1"); break; case 2: id(bar1_btn_right_event).trigger("release page 2"); break; + case 3: + id(bar1_btn_right_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -268,43 +266,43 @@ binary_sensor: then: - lambda: |- switch (id(actual_page)){ - case 0: - id(bar1_btn_right_event).trigger("long press page 0"); - break; case 1: id(bar1_btn_right_event).trigger("long press page 1"); break; case 2: id(bar1_btn_right_event).trigger("long press page 2"); break; + case 3: + id(bar1_btn_right_event).trigger("long press page 3"); + break; } - id: !extend bar2_btn_left on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_left_event).trigger("press page 0"); - break; case 1: id(bar2_btn_left_event).trigger("press page 1"); - id(music_card_prev).execute(); break; case 2: id(bar2_btn_left_event).trigger("press page 2"); + id(music_card_prev).execute(); + break; + case 3: + id(bar2_btn_left_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_left_event).trigger("release page 0"); - break; case 1: id(bar2_btn_left_event).trigger("release page 1"); break; case 2: id(bar2_btn_left_event).trigger("release page 2"); break; + case 3: + id(bar2_btn_left_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -312,43 +310,43 @@ binary_sensor: then: - lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_left_event).trigger("long press page 0"); - break; case 1: id(bar2_btn_left_event).trigger("long press page 1"); break; case 2: id(bar2_btn_left_event).trigger("long press page 2"); break; + case 3: + id(bar2_btn_left_event).trigger("long press page 3"); + break; } - id: !extend bar2_btn_right on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_right_event).trigger("press page 0"); - break; case 1: id(bar2_btn_right_event).trigger("press page 1"); - id(music_card_next).execute(); break; case 2: id(bar2_btn_right_event).trigger("press page 2"); + id(music_card_next).execute(); + break; + case 3: + id(bar2_btn_right_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_right_event).trigger("release page 0"); - break; case 1: id(bar2_btn_right_event).trigger("release page 1"); break; case 2: id(bar2_btn_right_event).trigger("release page 2"); break; + case 3: + id(bar2_btn_right_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -356,43 +354,43 @@ binary_sensor: then: - lambda: |- switch (id(actual_page)){ - case 0: - id(bar2_btn_right_event).trigger("long press page 0"); - break; case 1: id(bar2_btn_right_event).trigger("long press page 1"); break; case 2: id(bar2_btn_right_event).trigger("long press page 2"); break; + case 3: + id(bar2_btn_right_event).trigger("long press page 3"); + break; } - id: !extend bar3_btn_left on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_left_event).trigger("press page 0"); - break; case 1: id(bar3_btn_left_event).trigger("press page 1"); - id(music_card_power).execute(); break; case 2: id(bar3_btn_left_event).trigger("press page 2"); + id(music_card_power).execute(); + break; + case 3: + id(bar3_btn_left_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_left_event).trigger("release page 0"); - break; case 1: id(bar3_btn_left_event).trigger("release page 1"); break; case 2: id(bar3_btn_left_event).trigger("release page 2"); break; + case 3: + id(bar3_btn_left_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -400,43 +398,43 @@ binary_sensor: then: - lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_left_event).trigger("long press page 0"); - break; case 1: id(bar3_btn_left_event).trigger("long press page 1"); break; case 2: id(bar3_btn_left_event).trigger("long press page 2"); break; + case 3: + id(bar3_btn_left_event).trigger("long press page 3"); + break; } - id: !extend bar3_btn_right on_click: lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_right_event).trigger("press page 0"); - break; case 1: id(bar3_btn_right_event).trigger("press page 1"); - id(music_card_playpause).execute(); break; case 2: id(bar3_btn_right_event).trigger("press page 2"); + id(music_card_playpause).execute(); + break; + case 3: + id(bar3_btn_right_event).trigger("press page 3"); break; } on_release: lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_right_event).trigger("release page 0"); - break; case 1: id(bar3_btn_right_event).trigger("release page 1"); break; case 2: id(bar3_btn_right_event).trigger("release page 2"); break; + case 3: + id(bar3_btn_right_event).trigger("release page 3"); + break; } on_multi_click: - timing: @@ -444,15 +442,15 @@ binary_sensor: then: lambda: |- switch (id(actual_page)){ - case 0: - id(bar3_btn_right_event).trigger("long press page 0"); - break; case 1: id(bar3_btn_right_event).trigger("long press page 1"); break; case 2: id(bar3_btn_right_event).trigger("long press page 2"); break; + case 3: + id(bar3_btn_right_event).trigger("long press page 3"); + break; } sensor: @@ -491,13 +489,13 @@ display: lambda: |- id(all_pages_main).execute(); switch (id(actual_page)){ - case 0: + case 1: id(containers).execute(); break; - case 1: + case 2: id(music_card).execute(20, 125); break; - case 2: + case 3: it.print(100, 160, id(font_arial20), "This is page 3!"); break; } @@ -556,13 +554,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("volume_down"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } @@ -570,13 +568,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("volume_up"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } @@ -584,13 +582,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("prev"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } @@ -598,13 +596,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("next"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } @@ -612,13 +610,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("power"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } @@ -626,13 +624,13 @@ script: then: - lambda: |- switch (id(actual_page)){ - case 0: + case 1: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(red)); break; - case 1: + case 2: id(music_card_bar).execute("playpause"); break; - case 2: + case 3: id(bar_display).image(80, 0, id(lightbulb), ImageAlign::TOP_CENTER, id(blue)); break; } diff --git a/README.md b/README.md index 5cda8c8..c9a7dc8 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ The Button+ is a modular control panel for home automation systems. It is design __You can order the Button+ on there [website](https://button.plus).__ this is also the place to find the original firmware, in case you want to revert back. -To make the Button+ work with ESPHome we needed at least a list of used components and a pinout/IO-list. I spend a couple of evenings with my multimeter, making my wife crazy with the beeps, googled and collected data sheets of the components, broke a the display of 1 BAR module and did a trail-on-error to make stuf work with ESPHome. Here in this repo you'll find the [results](./Components) of my journy. +To make the Button+ work with ESPHome we needed at least a list of used components and a pinout/IO-list. I spend a couple of evenings with my multimeter, making my wife crazy with the beeps, googled and collected data sheets of the components, broke a the display of 1 BAR module and did a trail-on-error to make stuff work with ESPHome. Here in this repo you'll find the [results](./Components) of my journey. -The ESPHome integration adds more flexebility and features, but also add some more complexity. To minimize the complexity I started this repo to collect examples and improve my work. +The ESPHome integration adds more flexibility and features, but also add some more complexity. To minimize the complexity I started this repo to collect examples and improve my work. > Want to help? Pull requests are welcome! @@ -20,21 +20,42 @@ The ESPHome integration adds more flexebility and features, but also add some mo TODO --> -## Usefull Links +## Changes: + +### NEXT: 0.2.0 +#### NEW: +- added display item card (thanks @balk77) +- menu can now be controlled from HA and has page naming (thanks @balk77) + +#### BREAKING: +- global `nr_of_pages` is now replaced by `nr_of_pages` ***substitution***, if you have compile errors please see the basic examples +- paging is now indexed by 1 > first page has number 1. Page 0>1, 1>2 etc. + + +### 0.1.1 +Serialized the mini displays, by toggling the CS pins we need only 1 display instance now. + +### 0.1.0 +Created a Package + +### Before 0.1.0 +versions with first prove of concepts + +## Documentation + +The documentation of the Button+ ESPHome integration can be found in the [Docs directory](./Docs) + +## Useful Links * Display Items: https://esphome.io/components/display/ * Fonts: https://esphome.io/components/font#display-fonts * Icon's and images: https://esphome.io/components/image#display-image -## Documentation - -The documentaion of the Button+ ESPHome integration can befound in the [Docs directory](./Docs) - ## Status -All the features, i the Buton+ has to offer should work with the [`basic_example.yaml`](./Examples/basic_example.yaml). Please reffer the ESPHome documentaion for more information on how to build your own menu or ... (?) +All the features the Button+ has to offer should work with the [`3pages_TotalExample.yaml`](./Examples/3pages_TotalExample.yml). Please refer the ESPHome documentation for more information on how to build your own menu or ... (?) -The documentaion is yet to be made... Again If you want to help... Pull requests are welcome! +The documentation is work in progress.. Again If you want to help... Pull requests are welcome! ## TODO: