Project setup

This commit is contained in:
2026-05-12 13:04:34 +02:00
parent 47d298f4ad
commit 43e510b93d
19 changed files with 2034 additions and 1 deletions
+549
View File
@@ -0,0 +1,549 @@
## Events for 3 pages
substitutions:
nr_of_pages: '3'
display_events:
- double_click page 0
- triple_click page 0
- hold page 0
- double_click page 1
- triple_click page 1
- hold page 1
- double_click page 2
- triple_click page 2
- hold page 2
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
- click page 2
- double_click page 2
- triple_click page 2
- hold page 2
script:
- id: trigger_with_feedback
parameters:
event_id: esphome::template_::TemplateEvent*
event_msg: std::string
led_id: light::LightState*
r: float
g: float
b: float
then:
- lambda: event_id->trigger(event_msg);
- if:
condition:
lambda: return led_id != nullptr;
then:
- lambda: |-
auto call = led_id->make_call();
call.set_state(true);
call.set_rgb(r, g, b);
call.set_brightness(1.0);
call.set_flash_length(200); // Returns to previous state automatically
call.perform();
event:
- platform: template
name: DISPLAY Button Left
id: display_btn_left_event
device_class: button
event_types: ${display_events}
- platform: template
name: DISPLAY Button Right
id: display_btn_right_event
device_class: button
event_types: ${display_events}
- platform: template
name: BAR1 Button Left
id: bar1_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR1 Button Right
id: bar1_btn_right_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR2 Button Left
id: bar2_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR2 Button Right
id: bar2_btn_right_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR3 Button Left
id: bar3_btn_left_event
device_class: button
event_types: ${button_events}
- platform: template
name: BAR3 Button Right
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.2s
then:
- script.execute: prev_page
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_left_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_left_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_left_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute: next_page
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_right_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_right_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: display_btn_right_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: !lambda "return nullptr;"
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_left_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar1_left_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_left_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar1_left_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_left_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar1_left_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_left_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar1_left_rgb_front
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_right_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar1_right_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_right_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar1_right_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_right_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar1_right_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar1_btn_right_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar1_right_rgb_front
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_left_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar2_left_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_left_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar2_left_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_left_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar2_left_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_left_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar2_left_rgb_front
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_right_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar2_right_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_right_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar2_right_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_right_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar2_right_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar2_btn_right_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar2_right_rgb_front
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_left_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar3_left_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_left_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar3_left_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_left_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar3_left_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_left_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar3_left_rgb_front
r: 1.0
g: 0.5
b: 0.0
- 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.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_right_event
event_msg: !lambda "return \"click page \" + std::to_string(id(actual_page));"
led_id: bar3_right_rgb_front
r: 0.0
g: 1.0
b: 0.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_right_event
event_msg: !lambda "return \"double_click page \" + std::to_string(id(actual_page));"
led_id: bar3_right_rgb_front
r: 0.0
g: 0.0
b: 1.0
- timing:
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at most 0.2s
- ON for at most 300ms
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_right_event
event_msg: !lambda "return \"triple_click page \" + std::to_string(id(actual_page));"
led_id: bar3_right_rgb_front
r: 1.0
g: 0.0
b: 1.0
- timing:
- ON for at least 1s
- OFF for at least 0.2s
then:
- script.execute:
id: trigger_with_feedback
event_id: bar3_btn_right_event
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
led_id: bar3_right_rgb_front
r: 1.0
g: 0.5
b: 0.0