esphome: name: everything_remote friendly_name: Everything Remote on_boot: - priority: 250 then: - lambda: |- id(last_active) = millis() / 1000; id(wake_button_processed) = false; auto cause = esp_sleep_get_wakeup_cause(); if (cause == ESP_SLEEP_WAKEUP_EXT0) { ESP_LOGI("main", "Device woke up by EXT0"); } else if (cause == ESP_SLEEP_WAKEUP_TIMER) { ESP_LOGD("main", "Device woke up by timer."); } else { ESP_LOGD("main", "Device woke up by other cause: %d", cause); } esp32: board: esp32dev framework: type: arduino logger: api: ota: platform: esphome wifi: ssid: "my_wifi" password: "my_password" fast_connect: true power_save_mode: LIGHT globals: - id: last_active type: int restore_value: no initial_value: '0' - id: wake_button_processed type: bool restore_value: no initial_value: 'false' script: - id: reset_idle_timer then: - lambda: |- id(last_active) = millis() / 1000; deep_sleep: id: deep_sleep_ctrl sleep_duration: 2800 min wakeup_pin: number: GPIO0 inverted: true allow_other_uses: true interval: - interval: 60s then: - if: condition: lambda: return (millis() / 1000) - id(last_active) >= 1200; then: - deep_sleep.enter: deep_sleep_ctrl # BUTTONS binary_sensor: - platform: gpio pin: number: GPIO0 mode: input: true pullup: true inverted: true allow_other_uses: true name: "Power" id: power internal: true on_press: then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "power", type: "single"} - platform: gpio pin: number: GPIO2 mode: input: true pullup: true inverted: true name: "Back" id: back internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "back", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "back", type: "long"} - platform: gpio pin: number: GPIO4 mode: input: true pullup: true inverted: true name: "Home" id: home internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "home", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "home", type: "long"} - platform: gpio pin: number: GPIO5 mode: input: true pullup: true inverted: true name: "Play Pause" id: play_pause internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "play_pause", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "play_pause", type: "long"} - platform: gpio pin: number: GPIO18 mode: input: true pullup: true inverted: true name: "Up" id: up internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "up", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "up", type: "long"} - platform: gpio pin: number: GPIO19 mode: input: true pullup: true inverted: true name: "Left" id: left internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "left", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "left", type: "long"} - platform: gpio pin: number: GPIO22 mode: input: true pullup: true inverted: true name: "Select" id: select_button internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "select_button", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "select_button", type: "long"} - platform: gpio pin: number: GPIO23 mode: input: true pullup: true inverted: true name: "Right" id: right internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "right", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "right", type: "long"} - platform: gpio pin: number: GPIO25 mode: input: true pullup: true inverted: true name: "Down" id: down internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "down", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "down", type: "long"} - platform: gpio pin: number: GPIO12 mode: input: true pullup: true inverted: true name: "Volume Up" id: volume_up internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "volume_up", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "volume_up", type: "long"} - platform: gpio pin: number: GPIO13 mode: input: true pullup: true inverted: true name: "Mute" id: mute internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "mute", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "mute", type: "long"} - platform: gpio pin: number: GPIO14 mode: input: true pullup: true inverted: true name: "Channel Up" id: channel_up internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "channel_up", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "channel_up", type: "long"} - platform: gpio pin: number: GPIO15 mode: input: true pullup: true inverted: true name: "Volume Down" id: volume_down internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "volume_down", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "volume_down", type: "long"} - platform: gpio pin: number: GPIO16 mode: input: true pullup: true inverted: true name: "Settings" id: settings internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "settings", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "settings", type: "long"} - platform: gpio pin: number: GPIO17 mode: input: true pullup: true inverted: true name: "Channel Down" id: channel_down internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "channel_down", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "channel_down", type: "long"} - platform: gpio pin: number: GPIO32 mode: input: true pullup: true inverted: true name: "Shortcut 3" id: shortcut_3 internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_3", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_3", type: "long"} - platform: gpio pin: number: GPIO33 mode: input: true pullup: true inverted: true name: "Shortcut 4" id: shortcut_4 internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_4", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_4", type: "long"} - platform: gpio pin: number: GPIO26 mode: input: true pullup: true inverted: true name: "Brightness Down" id: brightness_down internal: false on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "brightness_down", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "brightness_down", type: "long"} - platform: gpio pin: number: GPIO27 mode: input: true pullup: true inverted: true name: "Brightness Up" id: brightness_up internal: false on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "brightness_up", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "brightness_up", type: "long"} - platform: gpio pin: number: GPIO34 mode: input: true inverted: true name: "Shortcut 1" id: shortcut_1 internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_1", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_1", type: "long"} - platform: gpio pin: number: GPIO35 mode: input: true inverted: true name: "Shortcut 2" id: shortcut_2 internal: true on_multi_click: - timing: - ON for at most 350ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_2", type: "single"} - timing: - ON for at least 500ms then: - script.execute: reset_idle_timer - homeassistant.event: event: esphome.remote_button_pressed data: {button: "shortcut_2", type: "long"}