Hi,
I’ve been searching all week and can’t seem to prevent my ESP8266 D1 Mini from entering deep sleep. No matter what I’ve tried, my ESP just keeps going back into deep sleep after publishing sensor data. I’ve found a lot of guides to follow, but haven’t made much progress.
One forum post suggested changing deep_sleep.enter
to deep_sleep.allow
, but I just get an error saying "Unable to find action with the name 'deep_sleep.allow'."
Can I please have some help?
Home Assistant Helper:
input_boolean.esphome_disable_deep_sleep
Node Red Flow:
MQTT Explorer:
(proof that the Home Assistant helper is successfully publishing over MQTT)
ESPHome Config:
(I’ve trimmed out all the disabled sensors)
################################################################################
# Define variables
################################################################################
substitutions:
# Device Properties
devicename: dev-air-quality
friendly_name: Dev-Air-Quality
devicetopic: AirQuality
log_tag: yaml
# Sleep Properties
sleep_time: 5s #1min #5min #10s
run_time: 5s #1s
# Pinout
# Wake D0 # GPIO16 - Wake (deep sleep) - high at boot.
pin_i2c_scl: D1 # GPIO5
pin_i2c_sda: D2 # GPIO4
# Reserved D3 # GPIO0 - biased high - connected to flash button
# Reserved D4 # GPIO2 - biased high - connected to on-board LED
pin_rx: D5 # GPIO14
pin_tx: D6 # GPIO12
pin_dht: D7 # GPIO13
# D8 # GPIO15 - biased low
# RX # GPIO3
# TX # GPIO1 - debug output at boot
# A0 # ADC0
################################################################################
# Define Device
################################################################################
esphome:
name: $devicename
on_boot:
#- lambda: 'ESP_LOGE("${log_tag}", "Booted");'
- logger.log:
format: "Normal Boot"
level: ERROR
# on_loop:
on_shutdown:
- logger.log:
format: "Normal Deep Sleep"
level: ERROR
esp8266:
board: d1_mini
# Enable logging
logger:
level: DEBUG
on_message:
level: WARN
then:
- mqtt.publish:
topic: $devicetopic/logger
payload: !lambda |-
return "Level: " + to_string(level) + " ||| Tag: " + tag + " ||| Message: " + message;
# Enable Home Assistant API
#api:
# password: !secret api_password
# Enable Over-The-Air flashing
ota:
#safe_mode: True
password: !secret ota_password
on_end:
- logger.log:
format: "OTA Update"
level: ERROR
################################################################################
# Power
################################################################################
deep_sleep:
id: deep_sleep_1
sleep_duration: $sleep_time
run_duration: $run_time
################################################################################
# Wireless Access
################################################################################
wifi:
id: wifi_client
fast_connect: true # Skip wifi scan to save time.
ssid: !secret wifi_ssid
password: !secret wifi_password
# Set a static IP address.
manual_ip:
static_ip: redacted
gateway: redacted
subnet: redacted
# If changing the name or the IP address of the device, this provides the old address so that ESPHome knows which device to overwrite.
use_address: "192.168.86.200"
mqtt:
id: mqtt_client
broker: !secret mqtt_broker
port: !secret mqtt_port
username: !secret mqtt_user
password: !secret mqtt_password
discovery: true
discovery_retain: true
# Set empty birth and will messages to avoid showing unavailable during sleep
birth_message:
will_message:
topic_prefix: $devicetopic
on_message:
# Disable Deep Sleep
- topic: admin/esphome_disable_deep_sleep
qos: 0 #1
payload: 'ON'
then:
- logger.log:
format: 'MQTT Admin: disable deep sleep'
level: ERROR
- deep_sleep.prevent: deep_sleep_1
# Allow Deep Sleep
- topic: admin/esphome_disable_deep_sleep
qos: 0 #1
payload: 'OFF'
then:
#- lambda: 'ESP_LOGE("${log_tag}", "MQTT Admin: enter deep sleep");'
- logger.log:
format: 'MQTT Admin: entering deep sleep'
level: ERROR
- deep_sleep.enter: deep_sleep_1
################################################################################
# Communication Protocols
################################################################################
i2c:
sda: $pin_i2c_sda
scl: $pin_i2c_scl
id: bus_i2c
scan: False # Save time by skipping the I2C scan on startup, since all addresses are known. Defaults to True
frequency: 50kHz # Defaults to 50kHz, SCD30 can't handle more than 100kHz.
uart:
baud_rate: 9600
rx_pin: $pin_rx
#tx_pin: $pin_tx # Not needed for SCD30 or SGP30
################################################################################
# Functionality
################################################################################
# Air Quality, Temperature and Humidity.
sensor:
# DHT11 Temperature and Humidity Sensor
- platform: dht
model: DHT11
pin: $pin_dht
temperature:
name: "$friendly_name Temperature"
id: temperature
humidity:
name: "$friendly_name Humidity"
id: humidity
update_interval: $sleep_time