Yazan Daradkeh

Senior Digital Project/Product Manager

Mastering Room Presence: ESP32 Bluetooth Proxies & Bermuda BLE

Mastering Room Presence: ESP32 Bluetooth Proxies & Bermuda BLE


Room presence is the absolute holy grail of smart home automation, and combining ESPHome with the Bermuda BLE integration is a brilliant way to pull it off. Instead of relying on traditional motion sensors that leave you sitting in the dark the second you stop moving, Bermuda tracks your phone or BLE beacons to know exactly which room you're lounging in.

The real beauty of this setup is that you don't need to drop a fortune on proprietary gear. You just scatter a few cheap ESP32 boards around the house, flash them with ESPHome, and let them act as dedicated Bluetooth proxies. They sniff out Bluetooth signals and pass them straight to Home Assistant over your Wi-Fi network without breaking a sweat.

Here is a perfect example of a lean, mean Bluetooth proxy configuration for your ESP32. Notice how the esp32_ble_tracker is set up with specific scan parameters, while the bluetooth_proxy component is set to active. This is exactly what Home Assistant needs to start gathering those BLE advertisements:

YAML

esphome:

  name: "k-esp32-bluetooth-proxy"

  friendly_name: K ESP32 Bluetooth Proxy

  name_add_mac_suffix: false 

esp32:

  board: esp32dev

  framework:

    type: arduino

logger:

  level: WARN

api:

  encryption:

    key: "l26dQVCTporhB3EJzfnHiWBmK3oIc8H2w7HYtwTU888="

ota:

  - platform: esphome

    password: "941cb3ec19f0fcff15d740ab17c3ae36"

wifi:

  networks:

    - ssid: !secret wifi_ssid

      password: !secret wifi_password

  power_save_mode: NONE 

  reboot_timeout: 0s

  ap:

    ssid: "K ESP32 Bluetooth Proxy"

    password: "2vsPcQNqWFt9"

mqtt:

  broker: !secret mqtt

  username: !secret mqtt_user

  password: !secret mqtt_password

sensor:

  - platform: wifi_signal

    name: "WiFi Signal"

    id: wifi_rssi_sensor

    update_interval: 60s

  # The core proxy logic

esp32_ble_tracker:

  scan_parameters:

    active: false 

    interval: 320ms

    window: 300ms

bluetooth_proxy:

  active: true

Once you've got your ESP32s flashed, plugged in, and assigned to their respective Rooms (or Areas) in Home Assistant, it's time to bring in the brains of the operation: Bermuda BLE Trilateration. Bermuda looks at the signal strength (RSSI) from all your proxies and calculates exactly which room your tracked device is closest to.

Getting Bermuda installed is an absolute doddle. Just follow these quick steps:

  1. Open HACS (Home Assistant Community Store) in your Home Assistant dashboard.

  2. Search for "Bermuda BLE Trilateration" in the Integrations section and hit download.

  3. Restart your Home Assistant server so the new integration loads up.

  4. Head over to Settings > Devices & Services, click Add Integration, and search for Bermuda.

  5. Once added, click Configure on the Bermuda integration to select which Bluetooth devices (like your phone's BLE transmitter, smartwatches, or beacon tags) you want to track.

It works like a charm once you get it dialled in. You can link those newly created Bermuda device trackers straight to your "Person" entities in HA for seamless, rock-solid automations. Enjoy the build, Yaz!

"If you've got any questions or need a hand wrangling your own setup, don't hesitate to reach out at [email protected] or connect with me via www.yazan.me. I'm always keen to help out!"