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();
