binary_sensor: # Call detection - platform: gpio name: "${board_name} incoming call" id: incoming_call device_class: sound pin: number: $pin_call_detect mode: INPUT_PULLUP inverted: True filters: delayed_off: $call_end_detect_delay on_press: then: script.execute: state_call on_release: then: script.execute: state_no_call # Accept HW button - platform: gpio name: "${board_name} button" id: button pin: number: $pin_btn_accept mode: INPUT inverted: True filters: delayed_on: 25ms on_multi_click: # Double click - mute mode - timing: - ON for at most $short_click_time_to - OFF for at most $short_click_time_to - ON for $short_click_time_from to $short_click_time_to - OFF for at least 200ms then: - logger.log: "Double Click" - if: condition: binary_sensor.is_off: incoming_call then: lambda: |- if (id(mode_mute_once)) { id(mode_mute) = true; id(mode_mute_once) = false; } else { id(mode_mute) = false; id(mode_mute_once) = true; } # Long click - disable auto opening and mute - timing: - ON for at least $short_click_time_to then: - logger.log: "Single Long Click" - if: condition: binary_sensor.is_on: incoming_call then: script.execute: call_reject else: - lambda: |- id(mode_auto_open) = false; id(mode_auto_open_once) = false; id(mode_auto_reject) = false; id(mode_mute) = false; id(mode_mute_once) = false; - delay: 10ms - script.execute: led_blink_blue_once # Short click - open door or enable once auto opening - timing: - ON for at most $short_click_time_to - OFF for at least 500ms then: - logger.log: "Single Short Click" - if: condition: binary_sensor.is_on: incoming_call then: script.execute: call_accept else: lambda: |- if (id(mode_auto_open_once)) { id(mode_auto_open) = true; id(mode_auto_open_once) = false; id(mode_auto_reject) = false; } else if (id(mode_auto_open)) { id(mode_auto_open) = false; id(mode_auto_open_once) = false; id(mode_auto_reject) = true; } else { id(mode_auto_open) = false; id(mode_auto_open_once) = true; id(mode_auto_reject) = false; } # - <<: !include includes/binary_sensor.captive.yaml