Hi,
I’m trying to make a remote controller powered with battery, so I need to put the esp in deepsleep and wake it when a button is pressed. I’m facing some problems with the deep sleep, I get all the pins are pressed, the wake mask all the time has the first threebits at 1 even if the button are not pressed and the value on that GPIOs is zero. What I’m doing wrong or missing?
esphome:
name: esp32-c6-one
friendly_name: esp32-c6-one
on_boot:
priority: -100
then:
- deep_sleep.prevent: deep_sleep_1
- output.turn_off: user_led
- delay:
seconds: 1
- if:
condition:
wifi.connected:
then:
- if:
condition:
- lambda: 'return esp_sleep_get_wakeup_cause() == ESP_SLEEP_WAKEUP_EXT1;'
then:
- mqtt.publish:
topic: test/command
payload: !lambda |-
uint64_t wake = esp_sleep_get_ext1_wakeup_status();
uint32_t low = wake % 0xFFFFFFFF;
uint32_t high = (wake>> 32) % 0xFFFFFFFF;
if ( low & BIT(1) ) {
return "Pin 1 woke me up: " + std::to_string(wake);
}
if ( low & BIT(2) ) {
return "Pin 2 woke me up: " + std::to_string(wake);
}
return "error" + std::to_string(wake);
else:
- mqtt.publish:
topic: test/request
payload: !lambda |-
return "getStatus";
else:
- deep_sleep.allow: deep_sleep_1
- deep_sleep.enter: deep_sleep_1
mqtt:
discovery: false # disable entity discovery
discover_ip: true # enable device discovery
broker: !secret broker_ip
port: !secret broker_port
username: !secret mqtt_user
password: !secret mqtt_password
on_message:
- topic: test/status
payload: "testResp"
then:
- deep_sleep.allow: deep_sleep_1
- output.turn_on: user_led
- delay:
seconds: 5
- deep_sleep.enter: deep_sleep_1
esp32:
board: seeed_xiao_esp32c6
framework:
type: esp-idf
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: !secret test_encr_key
ota:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
power_save_mode: NONE
captive_portal:
output:
- platform: gpio
id: user_led
inverted: true
pin:
GPIO15
# Example configuration entry
deep_sleep:
id: deep_sleep_1
run_duration:
minutes: 2
sleep_duration:
minutes: 1
seconds: 0
esp32_ext1_wakeup:
pins:
- GPIO0
- GPIO1
- GPIO2
mode: ANY_HIGH
web_server:
port: 80