BLE Component¶
The esp32_ble
component in ESPHome sets up the Bluetooth LE stack on the device so that a BLE Server
can run.
Warning
The BLE software stack on the ESP32 consumes a significant amount of RAM on the device.
Crashes are likely to occur if you include too many additional components in your device’s configuration. Memory-intensive components such as Voice Assistant and other audio components are most likely to cause issues.
# Example configuration
esp32_ble:
io_capability: keyboard_only
disable_bt_logs: true # Default, saves flash
Configuration variables:¶
io_capability (Optional, enum): The IO capability of this ESP32, used for securely connecting to other BLE devices. Defaults to
none
.none
- No IO capability (Connections that require PIN code authentication will fail)keyboard_only
- Only a keyboard to enter PIN codes (or a fixed PIN code)display_only
- Only a display to show PIN codeskeyboard_display
- A keyboard and a displaydisplay_yes_no
- A display to show PIN codes and buttons to confirm or deny the connection
enable_on_boot (Optional, boolean): If enabled, the BLE interface will be enabled on boot. Defaults to
true
.- name (Optional, string): The name of the BLE device.
Defaults to the hostname of the device.
Must be 20 characters or less.
Must be 13 characters or less when using
name_add_mac_suffix: true
- Adding the MAC address as a suffix to the device name.
disable_bt_logs (Optional, boolean): When enabled, disables Bluetooth logging categories that are not used by the configured components. This saves flash memory by only including the loggers needed by your configuration. Defaults to
true
.
Note
The disable_bt_logs
option intelligently disables only the Bluetooth logging categories that are not required by your configuration. Each Bluetooth component registers the specific loggers it needs, and all unused loggers are automatically disabled during compilation. This includes loggers for Classic Bluetooth features (like RFCOMM, A2DP, HID) that are not used by ESPHome’s BLE implementation.
ble.disable
Action¶
This action turns off the BLE interface on demand.
on_...:
then:
- ble.disable:
Note
The configuration option enable_on_boot
can be set to false
if you do not want BLE to be enabled on boot.
ble.enable
Action¶
This action turns on the BLE interface on demand.
on_...:
then:
- ble.enable:
Note
The configuration option enable_on_boot
can be set to false
if you do not want BLE to be enabled on boot.
ble.enabled
Condition¶
This Condition checks if BLE is currently enabled or not.
on_...:
- if:
condition: ble.enabled
then:
- ble.disable:
else:
- ble.enable:
The lambda equivalent for this is id(ble_id).is_active()
.