Dynamically generate events file
This commit is contained in:
@@ -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.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:
|
||||||
|
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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.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:
|
||||||
|
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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
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.2s
|
||||||
|
- 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.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at most 0.2s
|
||||||
|
- ON for at most 300ms
|
||||||
|
- OFF for at least 0.2s
|
||||||
|
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.2s
|
||||||
|
then:
|
||||||
|
lambda: |-
|
||||||
|
id(bar3_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
import yaml
|
||||||
|
|
||||||
|
# CONFIGURATION
|
||||||
|
NR_OF_PAGES = 3
|
||||||
|
INCLUDE_DISPLAY_EXTRA = True # Enable Double, Triple, Hold for main display buttons
|
||||||
|
LED_CONFIRMATION = True # Flash LED on press
|
||||||
|
FILENAME = "3bar_1display_events.yaml"
|
||||||
|
|
||||||
|
# --- ESPHome YAML Handling Fixes ---
|
||||||
|
class ESPHomeExtend:
|
||||||
|
def __init__(self, value): self.value = value
|
||||||
|
|
||||||
|
class ESPHomeLambda:
|
||||||
|
def __init__(self, value): self.value = value
|
||||||
|
|
||||||
|
class LiteralString(str): pass
|
||||||
|
|
||||||
|
def represent_extend(dumper, data):
|
||||||
|
return dumper.represent_scalar('!extend', data.value)
|
||||||
|
|
||||||
|
def represent_lambda(dumper, data):
|
||||||
|
# Ensures !lambda is followed by a quoted string or block for ESPHome compatibility
|
||||||
|
return dumper.represent_scalar('!lambda', data.value, style='"')
|
||||||
|
|
||||||
|
def represent_literal(dumper, data):
|
||||||
|
return dumper.represent_scalar('tag:yaml.org,2002:str', data, style='|')
|
||||||
|
|
||||||
|
yaml.add_representer(ESPHomeExtend, represent_extend)
|
||||||
|
yaml.add_representer(ESPHomeLambda, represent_lambda)
|
||||||
|
yaml.add_representer(LiteralString, represent_literal)
|
||||||
|
# -----------------------------------
|
||||||
|
|
||||||
|
def generate():
|
||||||
|
# 1. Define event lists for substitutions
|
||||||
|
base_types = ["click", "double_click", "triple_click", "hold"]
|
||||||
|
display_types = [] + (base_types[1:] if INCLUDE_DISPLAY_EXTRA else [])
|
||||||
|
|
||||||
|
display_events = []
|
||||||
|
button_events = []
|
||||||
|
for p in range(NR_OF_PAGES):
|
||||||
|
display_events.extend([f"{t} page {p}" for t in display_types])
|
||||||
|
button_events.extend([f"{t} page {p}" for t in base_types])
|
||||||
|
|
||||||
|
data = {
|
||||||
|
"substitutions": {
|
||||||
|
"nr_of_pages": str(NR_OF_PAGES),
|
||||||
|
"display_events": display_events,
|
||||||
|
"button_events": button_events
|
||||||
|
},
|
||||||
|
"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": LiteralString(
|
||||||
|
"auto call = led_id->make_call();\n"
|
||||||
|
"call.set_state(true);\n"
|
||||||
|
"call.set_rgb(r, g, b);\n"
|
||||||
|
"call.set_brightness(1.0);\n"
|
||||||
|
"call.set_flash_length(200); // Returns to previous state automatically\n"
|
||||||
|
"call.perform();"
|
||||||
|
)}]
|
||||||
|
}}
|
||||||
|
]
|
||||||
|
}],
|
||||||
|
"event": []
|
||||||
|
}
|
||||||
|
|
||||||
|
# 2. Event Entities
|
||||||
|
buttons = [
|
||||||
|
("DISPLAY Button Left", "display_btn_left_event", "${display_events}"),
|
||||||
|
("DISPLAY Button Right", "display_btn_right_event", "${display_events}"),
|
||||||
|
("BAR1 Button Left", "bar1_btn_left_event", "${button_events}"),
|
||||||
|
("BAR1 Button Right", "bar1_btn_right_event", "${button_events}"),
|
||||||
|
("BAR2 Button Left", "bar2_btn_left_event", "${button_events}"),
|
||||||
|
("BAR2 Button Right", "bar2_btn_right_event", "${button_events}"),
|
||||||
|
("BAR3 Button Left", "bar3_btn_left_event", "${button_events}"),
|
||||||
|
("BAR3 Button Right", "bar3_btn_right_event", "${button_events}"),
|
||||||
|
]
|
||||||
|
for name, eid, types in buttons:
|
||||||
|
data["event"].append({
|
||||||
|
"platform": "template", "name": name, "id": eid,
|
||||||
|
"device_class": "button", "event_types": types
|
||||||
|
})
|
||||||
|
|
||||||
|
# 3. Binary Sensor Extensions
|
||||||
|
data["binary_sensor"] = []
|
||||||
|
triggers = {
|
||||||
|
"click": (0.0, 1.0, 0.0), # Green
|
||||||
|
"double_click": (0.0, 0.0, 1.0), # Blue
|
||||||
|
"triple_click": (1.0, 0.0, 1.0), # Purple
|
||||||
|
"hold": (1.0, 0.5, 0.0) # Orange
|
||||||
|
}
|
||||||
|
|
||||||
|
btn_configs = [
|
||||||
|
("main_display_btn_left", "display_btn_left_event", None, "prev_page"),
|
||||||
|
("main_display_btn_right", "display_btn_right_event", None, "next_page"),
|
||||||
|
("bar1_btn_left", "bar1_btn_left_event", "bar1_left_rgb_front", None),
|
||||||
|
("bar1_btn_right", "bar1_btn_right_event", "bar1_right_rgb_front", None),
|
||||||
|
("bar2_btn_left", "bar2_btn_left_event", "bar2_left_rgb_front", None),
|
||||||
|
("bar2_btn_right", "bar2_btn_right_event", "bar2_right_rgb_front", None),
|
||||||
|
("bar3_btn_left", "bar3_btn_left_event", "bar3_left_rgb_front", None),
|
||||||
|
("bar3_btn_right", "bar3_btn_right_event", "bar3_right_rgb_front", None),
|
||||||
|
]
|
||||||
|
|
||||||
|
for btn_id, event_id, led_id, page_script in btn_configs:
|
||||||
|
sensor = {
|
||||||
|
"id": ESPHomeExtend(btn_id),
|
||||||
|
"filters": [{"delayed_off": "10ms"}],
|
||||||
|
"internal": True,
|
||||||
|
"on_multi_click": []
|
||||||
|
}
|
||||||
|
|
||||||
|
is_display = "main_display" in btn_id
|
||||||
|
for t_name, color in triggers.items():
|
||||||
|
if is_display and t_name != "click" and not INCLUDE_DISPLAY_EXTRA:
|
||||||
|
continue
|
||||||
|
|
||||||
|
multi_click = {"timing": []}
|
||||||
|
if t_name == "click":
|
||||||
|
multi_click["timing"] = ["ON for at most 300ms", "OFF for at least 0.2s"]
|
||||||
|
elif t_name == "double_click":
|
||||||
|
multi_click["timing"] = ["ON for at most 300ms", "OFF for at most 0.2s", "ON for at most 300ms", "OFF for at least 0.2s"]
|
||||||
|
elif t_name == "triple_click":
|
||||||
|
multi_click["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"]
|
||||||
|
elif t_name == "hold":
|
||||||
|
multi_click["timing"] = ["ON for at least 1s", "OFF for at least 0.2s"]
|
||||||
|
|
||||||
|
actions = []
|
||||||
|
if t_name == "click" and page_script:
|
||||||
|
actions.append({"script.execute": page_script})
|
||||||
|
else:
|
||||||
|
# The Feedback call with proper ESPHome formatting
|
||||||
|
actions.append({
|
||||||
|
"script.execute": {
|
||||||
|
"id": "trigger_with_feedback",
|
||||||
|
"event_id": event_id,
|
||||||
|
"event_msg": ESPHomeLambda(f'return "{t_name} page " + std::to_string(id(actual_page));'),
|
||||||
|
"led_id": led_id if (led_id and LED_CONFIRMATION) else ESPHomeLambda("return nullptr;"),
|
||||||
|
"r": color[0], "g": color[1], "b": color[2]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
multi_click["then"] = actions
|
||||||
|
sensor["on_multi_click"].append(multi_click)
|
||||||
|
data["binary_sensor"].append(sensor)
|
||||||
|
|
||||||
|
# 4. Write output
|
||||||
|
with open(FILENAME, "w") as f:
|
||||||
|
f.write("## Dynamically generated event configuration\n")
|
||||||
|
f.write("## Do not edit manually - run generator script to update\n\n")
|
||||||
|
yaml.dump(data, f, sort_keys=False, default_flow_style=False)
|
||||||
|
print(f"Generated {FILENAME} successfully.")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
generate()
|
||||||
+310
-118
@@ -1,73 +1,96 @@
|
|||||||
## Dynamically generated on xx-xx-xxxx
|
## Dynamically generated event configuration
|
||||||
## Run python script again to update
|
## Do not edit manually - run generator script to update
|
||||||
|
|
||||||
substitutions:
|
substitutions:
|
||||||
nr_of_pages: 2
|
nr_of_pages: '3'
|
||||||
|
|
||||||
# Dynamically generated list
|
|
||||||
display_events:
|
display_events:
|
||||||
- "double_click page 0"
|
- double_click page 0
|
||||||
- "triple_click page 0"
|
- triple_click page 0
|
||||||
- "hold page 0"
|
- hold page 0
|
||||||
- "double_click page 1"
|
- double_click page 1
|
||||||
- "triple_click page 1"
|
- triple_click page 1
|
||||||
- "hold page 1"
|
- hold page 1
|
||||||
|
- double_click page 2
|
||||||
# Dynamically generated list
|
- triple_click page 2
|
||||||
|
- hold page 2
|
||||||
button_events:
|
button_events:
|
||||||
- "click page 0"
|
- click page 0
|
||||||
- "double_click page 0"
|
- double_click page 0
|
||||||
- "triple_click page 0"
|
- triple_click page 0
|
||||||
- "hold page 0"
|
- hold page 0
|
||||||
- "click page 1"
|
- click page 1
|
||||||
- "double_click page 1"
|
- double_click page 1
|
||||||
- "triple_click page 1"
|
- triple_click page 1
|
||||||
- "hold 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:
|
event:
|
||||||
- platform: template
|
- platform: template
|
||||||
name: DISPLAY Button Left event
|
name: DISPLAY Button Left
|
||||||
id: display_btn_left_event
|
id: display_btn_left_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${display_events}
|
event_types: ${display_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: DISPLAY Button Right event
|
name: DISPLAY Button Right
|
||||||
id: display_btn_right_event
|
id: display_btn_right_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${display_events}
|
event_types: ${display_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR1 Button Left event
|
name: BAR1 Button Left
|
||||||
id: bar1_btn_left_event
|
id: bar1_btn_left_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR1 Button Right event
|
name: BAR1 Button Right
|
||||||
id: bar1_btn_right_event
|
id: bar1_btn_right_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR2 Button Left event
|
name: BAR2 Button Left
|
||||||
id: bar2_btn_left_event
|
id: bar2_btn_left_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR2 Button Right event
|
name: BAR2 Button Right
|
||||||
id: bar2_btn_right_event
|
id: bar2_btn_right_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR3 Button Left event
|
name: BAR3 Button Left
|
||||||
id: bar3_btn_left_event
|
id: bar3_btn_left_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
- platform: template
|
- platform: template
|
||||||
name: BAR3 Button Right event
|
name: BAR3 Button Right
|
||||||
id: bar3_btn_right_event
|
id: bar3_btn_right_event
|
||||||
device_class: button
|
device_class: button
|
||||||
event_types: ${button_events}
|
event_types: ${button_events}
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
- id: !extend main_display_btn_left
|
- id: !extend 'main_display_btn_left'
|
||||||
filters:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -83,8 +106,14 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -93,16 +122,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: display_btn_left_event
|
||||||
- id: !extend main_display_btn_right
|
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:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -118,8 +158,14 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -128,16 +174,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(display_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: display_btn_right_event
|
||||||
- id: !extend bar1_btn_left
|
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:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -146,16 +203,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -164,17 +233,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: bar1_btn_left_event
|
||||||
|
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
|
||||||
- id: !extend bar1_btn_right
|
led_id: bar1_left_rgb_front
|
||||||
|
r: 1.0
|
||||||
|
g: 0.5
|
||||||
|
b: 0.0
|
||||||
|
- id: !extend 'bar1_btn_right'
|
||||||
filters:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -183,16 +262,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -201,17 +292,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar1_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: bar1_btn_right_event
|
||||||
|
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
|
||||||
- id: !extend bar2_btn_left
|
led_id: bar1_right_rgb_front
|
||||||
|
r: 1.0
|
||||||
|
g: 0.5
|
||||||
|
b: 0.0
|
||||||
|
- id: !extend 'bar2_btn_left'
|
||||||
filters:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -220,16 +321,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -238,16 +351,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: bar2_btn_left_event
|
||||||
- id: !extend bar2_btn_right
|
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:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -256,16 +380,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -274,17 +410,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar2_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: bar2_btn_right_event
|
||||||
|
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
|
||||||
- id: !extend bar3_btn_left
|
led_id: bar2_right_rgb_front
|
||||||
|
r: 1.0
|
||||||
|
g: 0.5
|
||||||
|
b: 0.0
|
||||||
|
- id: !extend 'bar3_btn_left'
|
||||||
filters:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -293,16 +439,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_left_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_left_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -311,17 +469,27 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_left_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_left_event).trigger("hold page " + std::to_string(id(actual_page)));
|
id: trigger_with_feedback
|
||||||
|
event_id: bar3_btn_left_event
|
||||||
|
event_msg: !lambda "return \"hold page \" + std::to_string(id(actual_page));"
|
||||||
- id: !extend bar3_btn_right
|
led_id: bar3_left_rgb_front
|
||||||
|
r: 1.0
|
||||||
|
g: 0.5
|
||||||
|
b: 0.0
|
||||||
|
- id: !extend 'bar3_btn_right'
|
||||||
filters:
|
filters:
|
||||||
- delayed_off: 10ms
|
- delayed_off: 10ms
|
||||||
internal: true
|
internal: true
|
||||||
@@ -330,16 +498,28 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_right_event).trigger("click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_right_event).trigger("double_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at most 0.2s
|
- OFF for at most 0.2s
|
||||||
@@ -348,11 +528,23 @@ binary_sensor:
|
|||||||
- ON for at most 300ms
|
- ON for at most 300ms
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_right_event).trigger("triple_click page " + std::to_string(id(actual_page)));
|
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:
|
- timing:
|
||||||
- ON for 1s to 5s
|
- ON for at least 1s
|
||||||
- OFF for at least 0.2s
|
- OFF for at least 0.2s
|
||||||
then:
|
then:
|
||||||
lambda: |-
|
- script.execute:
|
||||||
id(bar3_btn_right_event).trigger("hold page " + std::to_string(id(actual_page)));
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user