78 lines
2.7 KiB
YAML
78 lines
2.7 KiB
YAML
substitutions:
|
|
local_gpioinvert: "True"
|
|
local_singleclick_duration: "300000" # 5 minutes in ms
|
|
# local_doubleclick_duration: "1800000" # 30 minutes in ms
|
|
# local_tripleclick_duration: "7200000" # 2 hours in ms
|
|
|
|
#globals:
|
|
# - id: single_click_delay
|
|
# type: long
|
|
# restore_value: no
|
|
# initial_value: ${local_singleclick_duration}
|
|
# - id: double_click_delay
|
|
# type: long
|
|
# restore_value: no
|
|
# initial_value: ${local_doubleclick_duration}
|
|
# - id: triple_click_delay
|
|
# type: long
|
|
# restore_value: no
|
|
# initial_value: ${local_tripleclick_duration}
|
|
|
|
binary_sensor:
|
|
- platform: gpio
|
|
pin:
|
|
number: ${local_gpio}
|
|
mode: INPUT
|
|
inverted: ${local_gpioinvert}
|
|
name: ${local_name}
|
|
on_multi_click:
|
|
# Single Click: one press (short press/release)
|
|
- timing:
|
|
- ON for at most 1s
|
|
- OFF for at least 0.5s
|
|
then:
|
|
- lambda: |-
|
|
if (id(Relay_3).state) {
|
|
ESP_LOGD("button3", "Single click: Relay_3 is on, turning it off.");
|
|
id(Relay_3).turn_off();
|
|
} else {
|
|
ESP_LOGD("button3", "Single click: Relay_3 is off, turning it on for %d ms.", id(single_click_delay));
|
|
id(Relay_3).turn_on();
|
|
delay(id(single_click_delay));
|
|
id(Relay_3).turn_off();
|
|
}
|
|
# # Double Click: two quick press/release cycles
|
|
# - timing:
|
|
# - ON for at most 1s
|
|
## - OFF for at most 1s
|
|
# - ON for at most 1s
|
|
# - OFF for at least 0.5s
|
|
# then:
|
|
# - lambda: |-
|
|
# ESP_LOGD(${local_gpio}, "Double click detected: turning ",${local_relay_id}," on for %d ms.", ${local_doubleclick_duration});
|
|
## ${local_relay_id}->turn_on();
|
|
# delay(${local_doubleclick_duration});
|
|
# ${local_relay_id}->turn_off();
|
|
# # Triple Click: three quick press/release cycles
|
|
## - timing:
|
|
# - ON for at most 1s
|
|
## - OFF for at most 1s
|
|
# - ON for at most 1s
|
|
# - OFF for at most 1s
|
|
# - ON for at most 1s
|
|
# - OFF for at least 0.5s
|
|
# then:
|
|
# - lambda: |-
|
|
# ESP_LOGD(${local_gpio}, "Triple click detected: turning ",${local_relay_id}," on for %d ms.", ${local_tripleclick_duration});
|
|
# ${local_relay_id}->turn_on();
|
|
# delay(${local_tripleclick_duration});
|
|
# ${local_relay_id}->turn_off();
|
|
# # Hold: button held for at least 4 seconds
|
|
# - timing:
|
|
# - ON for at least 4s
|
|
|
|
## then:
|
|
# - lambda: |-
|
|
# ESP_LOGD(${local_gpio}, "Hold detected: turning ",${local_relay_id}," on indefinitely.");
|
|
# ${local_relay_id}->turn_on();
|