Skip to content

Power Saving

BTHome devices are often battery-powered. These configurations help minimize power consumption.

Lower the CPU frequency from 240MHz (default) to 80MHz for significant power savings:

esp32:
board: seeed_xiao_esp32s3
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80: y

Available frequencies:

  • CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 - 240MHz (default, highest performance)
  • CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160 - 160MHz (balanced)
  • CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 - 80MHz (lowest power)

Combine disabling WiFi on boot with power save mode for maximum savings:

wifi:
enable_on_boot: false
ap: {}
power_save_mode: HIGH

enable_on_boot: false - WiFi radio stays off at startup. BLE continues to work independently.

power_save_mode - Controls WiFi power consumption when enabled:

  • NONE - No power saving (default)
  • LIGHT - Light power saving, minimal latency impact
  • HIGH - Maximum power saving, higher latency

For maximum battery life, use deep sleep to power down the ESP32 completely between readings:

deep_sleep:
run_duration: 1min # Stay awake for 1 minute
sleep_duration: 5min # Sleep for 5 minutes

During deep sleep, the ESP32 consumes only ~10µA. The device will:

  1. Wake up from deep sleep
  2. Initialize BLE and sensors
  3. Broadcast sensor data for run_duration
  4. Enter deep sleep for sleep_duration
  5. Repeat
esphome:
name: bthome-sensor
friendly_name: BTHome Sensor
esp32:
board: seeed_xiao_esp32s3
framework:
type: esp-idf
sdkconfig_options:
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80: y
logger:
wifi:
enable_on_boot: false
ap: {}
power_save_mode: HIGH
esp32_ble:
id: ble
sensor:
- platform: internal_temperature
id: temp
update_interval: 60s # Less frequent updates
bthome:
min_interval: 30s # Longer advertising interval
max_interval: 60s
tx_power: -6 # Lower TX power
sensors:
- type: temperature
id: temp
Setting Impact Recommendation
Deep sleep Very High Use for battery devices (~10µA sleep)
CPU frequency High Use 80MHz for BLE-only devices
WiFi on boot High Disable with enable_on_boot: false
WiFi power save Medium Use power_save_mode: HIGH
Advertising interval Medium 30s+ for battery devices
TX power Medium Lower if range permits
Sensor update interval Low Match to advertising interval
Logger Low Disable in production

For production deployments, disable logging to save additional power:

logger:
level: NONE

Or remove the logger: section entirely.