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

Leave a Reply

I'm pleased you have chosen to leave a comment and engage in a meaningful conversation. Please keep in mind that comments are moderated according to our privacy policy, links are set to nofollow.

Your email address will not be published. Required fields are marked *