Bluetooth Proxy for ESP32-S3-Firebeetle2 – Home Assistant + ESPHome + BTHome

descriptionStandard

This articles demonstrates a Bluetooth Proxy configuration for use with the ESP32-S3-Firebeetle2 board and Home Assistant + ESPHome + BTHome.

Hardware used:

  • Firebeetle 2 Board ESP32-S3(N16R8)

After breaking a ribbon for a camera that was included with one of these boards; I repurposed it for use as a Bluetooth Gateway (proxy) that I use with several Shelly BLU Bluetooth Smart Motion Sensor’s.

Note: The board selection used under ESPHome is: esp32-s3-devkitc-1 so this should work on other esp32-s3 based devices and there is nothing defined in this configuration specific to this board.

External references

YAML Source

substitutions:
  id: 
  name: 
  friendly_name:  Blueooth Proxy

esphome:
  project:
    name: "oddineers.bluetooth_proxy"
    version: "0.1.0"
  name: ${name}
  min_version: 2025.5.0
  friendly_name: ${friendly_name}
  name_add_mac_suffix: true

esp32:
  board: esp32-s3-devkitc-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret api_key

ota:
  - platform: esphome
    password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # If you don't use .local for your IOT devices change that here
  #domain: .local

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: " Fallback Hotspot"
    password: !secret ap_password

esp32_ble_tracker:
  scan_parameters:
    # We currently use the defaults to ensure Bluetooth
    # can co-exist with WiFi In the future we may be able to
    # enable the built-in coexistence logic in ESP-IDF
    active: true

bluetooth_proxy:
  active: true

button:
  - platform: safe_mode
    id: button_safe_mode
    name: Safe Mode Boot

  - platform: factory_reset
    id: factory_reset_btn
    name: Factory reset

captive_portal:

# Sensors for Home Assistant
sensor:
  - platform: wifi_signal
    name: "WiFi Signal"
    update_interval: 60s
  - platform: uptime
    name: "Uptime"
    update_interval: 110s

text_sensor:
  - platform: wifi_info
    ip_address:
      name: "IP"
    ssid:
      name: "SSID"
    bssid:
      name: "BSSID"
    mac_address:
      name: "MAC"
    dns_address:
      name: "DNS"
bluetooth_proxy.yamlView rawView file on GitLab