Power Saving
BTHome devices are often battery-powered. These configurations help minimize power consumption.
CPU Frequency (ESP32)
Section titled “CPU Frequency (ESP32)”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: yAvailable 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)
WiFi Power Saving
Section titled “WiFi Power Saving”Combine disabling WiFi on boot with power save mode for maximum savings:
wifi: enable_on_boot: false ap: {} power_save_mode: HIGHOptions
Section titled “Options”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 impactHIGH- Maximum power saving, higher latency
Deep Sleep
Section titled “Deep Sleep”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 minutesDuring deep sleep, the ESP32 consumes only ~10µA. The device will:
- Wake up from deep sleep
- Initialize BLE and sensors
- Broadcast sensor data for
run_duration - Enter deep sleep for
sleep_duration - Repeat
Complete Low-Power Example
Section titled “Complete Low-Power Example”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: tempPower Saving Checklist
Section titled “Power Saving Checklist”| 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 |
Disabling Logger
Section titled “Disabling Logger”For production deployments, disable logging to save additional power:
logger: level: NONEOr remove the logger: section entirely.