Seperate events out to own yaml file

This commit is contained in:
2026-05-11 15:37:39 +02:00
parent 21791e8aeb
commit f6bd11f892
4 changed files with 364 additions and 207 deletions
+2 -205
View File
@@ -37,10 +37,9 @@ packages:
files:
path: 'package/3bar_1display.yaml'
vars:
nr_of_pages: '1'
page_names: '{"Start"}'
nr_of_pages: '2'
page_names: '{"Start","Page 2"}'
ref: main
font:
- file: "https://github.com/web-fonts/ttf/raw/refs/heads/master/bpg-ingiri-arial-webfont.ttf"
@@ -98,208 +97,6 @@ color:
- id: grey
hex: A6A6A6
event:
- platform: template
name: BAR1 button Left event
id: bar1_btn_left_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
- platform: template
name: BAR1 button Right event
id: bar1_btn_right_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
- platform: template
name: BAR2 button Left event
id: bar2_btn_left_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
- platform: template
name: BAR2 button Right event
id: bar2_btn_right_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
- platform: template
name: BAR3 button Left event
id: bar3_btn_left_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
- platform: template
name: BAR3 button Right event
id: bar3_btn_right_event
event_types:
- "press page 0"
- "release page 0"
- "long press page 0"
binary_sensor:
- id: !extend main_display_btn_left
on_click:
- script.execute: prev_page
- id: !extend main_display_btn_right
on_click:
- script.execute: next_page
- id: !extend bar1_btn_left
on_click:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar1_btn_left_event).trigger("press page 0");
break;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar1_btn_left_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
- lambda: |-
switch (id(actual_page)){
case 0:
id(bar1_btn_left_event).trigger("long press page 0");
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;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar1_btn_right_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
- lambda: |-
switch (id(actual_page)){
case 0:
id(bar1_btn_right_event).trigger("long press page 0");
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;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar2_btn_left_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
- lambda: |-
switch (id(actual_page)){
case 0:
id(bar2_btn_left_event).trigger("long press page 0");
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;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar2_btn_right_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
- lambda: |-
switch (id(actual_page)){
case 0:
id(bar2_btn_right_event).trigger("long press page 0");
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;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar3_btn_left_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
- lambda: |-
switch (id(actual_page)){
case 0:
id(bar3_btn_left_event).trigger("long press page 0");
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;
}
on_release:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar3_btn_right_event).trigger("release page 0");
break;
}
on_multi_click:
- timing:
- ON for at least 2s
then:
lambda: |-
switch (id(actual_page)){
case 0:
id(bar3_btn_right_event).trigger("long press page 0");
break;
}
display:
#########
# MAIN ##
+1
View File
@@ -9,6 +9,7 @@
packages:
base: !include base.yaml
scripts: !include 3bar_1display_scripts.yaml
events: !include 3bar_1display_events.yaml
esphome:
on_boot:
+358
View File
@@ -0,0 +1,358 @@
## Dynamically generated on xx-xx-xxxx
## Run python script again to update
substitutions:
nr_of_pages: 2
# Dynamically generated list
display_events:
- "double_click page 0"
- "triple_click page 0"
- "hold page 0"
- "double_click page 1"
- "triple_click page 1"
- "hold page 1"
# Dynamically generated list
button_events:
- "click page 0"
- "double_click page 0"
- "triple_click page 0"
- "hold page 0"
- "click page 1"
- "double_click page 1"
- "triple_click page 1"
- "hold page 1"
event:
- platform: template
name: DISPLAY Button Left event
id: display_btn_left_event
device_class: button
event_types: ${display_events}
- platform: template
name: DISPLAY Button Right event
id: display_btn_right_event
device_class: button
event_types: ${display_events}
- platform: template
name: BAR1 Button Left event
id: bar1_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR1 Button Right event
id: bar1_btn_right_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR2 Button Left event
id: bar2_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR2 Button Right event
id: bar2_btn_right_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR3 Button Left event
id: bar3_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR3 Button Right event
id: bar3_btn_right_event
device_class: button
event_types: ${button_events}
binary_sensor:
- id: !extend main_display_btn_left
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
- script.execute: prev_page
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(display_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(display_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(display_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend main_display_btn_right
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
- script.execute: next_page
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(display_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(display_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(display_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar1_btn_left
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar1_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar1_btn_right
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar1_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar1_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar2_btn_left
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar2_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar2_btn_right
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar2_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar2_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar3_btn_left
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar3_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
- id: !extend bar3_btn_right
filters:
- delayed_off: 10ms
internal: true
on_multi_click:
- timing:
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.2s
then:
lambda: |-
id(bar3_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
- timing:
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at most 0.5s
- ON for at most 300ms
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
- timing:
- ON for 1s to 5s
- OFF for at least 0.5s
then:
lambda: |-
id(bar3_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
+3 -2
View File
@@ -37,8 +37,8 @@ spi:
mosi_pin: GPIO5
substitutions:
nr_of_pages: '"1"'
page_names: '{"Page 1"}'
nr_of_pages: '"2"'
page_names: '{"Page 1", "Page 2"}'
globals:
- id: nr_of_pages
@@ -117,6 +117,7 @@ sensor:
icon: "mdi:order-numeric-ascending"
id: active_page_id_ha
update_interval: never
accuracy_decimals: 0
text_sensor:
- platform: template