I tried different version of ESP32 to compile for ESPHome with the option to report BLE devices. I use the latest version (First line when I compile INFO ESPHome 2026.2.4) of ESPHome in a docker on my Synology. I found that I need for this component bthome but the system tells me it is not available. I tried framework arduino and esp-idf without success. Does anybody have a idea what to check?
If you explain a bit what you are trying to achieve it is easier to help.
Bthome is a Bluetooth sensor packet format, and sits on top of any oh bluetooth adapter (being a dongle, onboard pi or via an esphome device).
Are you trying to read the BTHome sensor on the ESP device and decode data on the ESP device, or forward Bluetooth BTHome packets to OH and decode there?
I want to read values from Shelly devices like door/window sensors. My understanding is that for Shelly I need platform bthome. This is my config
esphome:
name: "esp32-wroom-32d"
friendly_name: ESPHome BT receiver
name_add_mac_suffix: false
esp32:
board: esp32dev
framework:
type: esp-idf #arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "qU+s="
# Allow Over-The-Air updates
ota:
- platform: esphome
password: "3264796bcebc4dccc2e8ce52a61ec6e0"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
web_server:
port: 80
esp32_ble_tracker:
scan_parameters:
duration: 30s
active: true
bthome:
binary_sensor:
# --- Shelly BLU Deurcontacten ---
- platform: bthome
mac_address: "8C:6F:B9:2E:4A:F4"
opening:
name: "Eetkamer Deur Status"
battery_low:
name: "Eetkamer Deur Batterij Laag"
sensor:
- platform: bthome
mac_address: "8C:6F:B9:2E:4A:F4"
battery_level:
name: "Eetkamer Deur Batterij"
This is the error
Failed config
bthome: [source /config/esp32-esphome-vloerverwarming.yaml:36]
Component not found: bthome.
I recomend you to use a Shelly second generation and forward to forward the BT sensors. Then you can use the official Shelly binding to implement the bluetooth sensors
There is no such component bthome in ESPHome firmware that I am aware of.
What you are looking for is this setup:
Your Shelly BLU device → ESPHome Bluetooth Proxy component on your ESP32 device (1) → ESPHome Binding acting as a virtual Bluetooth adapter (2) → BTHome Binding decoding the messages (3)
- Bluetooth Proxy - ESPHome - Smart Home Made Simple
- GitHub - seime/openhab-esphome: ESPHome native API implementation for openHAB binding · GitHub
- BTHome Binding [4.0.0.0;6.0.0.0)
So to sum it up you need minimum 3 OH Things:
- A
Thing esphome:device:xxxxthat represents the ESPHome device - A
Bridge bluetooth:esphome:proxythat represents a Bluetooth adapter in OH - A
Thing bluetooth:bthome:proxy:myshellydevicethat represents your Shelly BLU device
If you add more ESPHome devices, they will all be represented by the same virtual Bluetooth adapter, effectively increasing your BLE coverage on your site.
Thanks. I know and use this already but what to use a Shelly device to get this working.
Thanks. I know and use this already but what to use a Shelly device to get this working.
Thanks for your feedback. I tried it but can’t get the ESP32 proxy online. This is my things file
// -----------------------------------------------------------------------------
// 1. ESPHome Device
// -----------------------------------------------------------------------------
Bridge esphome:device:ble_proxy "ESP32 BLE Proxy" [
hostname="192.168.100.137",
port=6053,
encryptionKey="....",
deviceId="bt-bthome",
enableBluetoothProxy=true
]
// -----------------------------------------------------------------------------
// 2. Bluetooth & BTHome configuratie
// -----------------------------------------------------------------------------
// We definiëren de Bluetooth listener die de ESPHome bridge gebruikt
Bridge bluetooth:esphome:proxy "ESPHome Bluetooth Listener" [
bridgeUID="esphome:device:ble_proxy"
] {
// De Shelly sensor als kind van de Bluetooth Bridge
Thing bthome eetkamer_deur "Shelly BLU Eetkamer Deur" [
address="8C:6F:B9:2E:4A:F4",
expectedReportingIntervalSeconds=600
]
}
and this is my yaml file
esphome:
name: bt-bthome
friendly_name: BT-BTHome
esp32:
board: esp32-c6-devkitc-1
framework:
type: esp-idf
# Enable logging
logger:
level: VERY_VERBOSE
# Enable Home Assistant API
api:
encryption:
key: "...
ota:
- platform: esphome
password: "..."
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
esp32_ble_tracker:
bluetooth_proxy:
active: true
captive_portal:
The GUI shows and
![]()
I hope you can give me some things to check. If I enable the login of ESPHome I don’t see any traffic with ip address 192.168.100.137
I don’t see that your ESP is configured with a static IP address (in the ESPHome config, not OH side) - are you sure it is actually assigned 192.168.100.137 by your DHCP server?
And does it come online in OH?
DEBUG level logs for package no.seime might shed some light.
BRG
Yes if I remove the things file it is detected by ESPHome binding.
How to do this? I tried a few opties but are not supported. PS I’m using a ESP32-C6
Can you explain.
Do you mean that it is discovered in the OH Inbox if you remove it from the file? If so that makes sense, but you need to “accept” it as a new thing into OH? And did it connect and become ONLINE?
Edit: I see that your thing remains in state UNKNOWN. This status is used between connection start and connection failed/successful. So it may look like OH cannot reach your device.
See WiFi Component - ESPHome - Smart Home Made Simple
Either change the binding log level in Main UI > Settings → Add-on Settings → ESPHome Binding or use openhab-cli log:set DEBUG no.seime
I found that the Apollo MRS-2 could also be a proxy so I modified
ApolloAutomation.MSR-2: github://ApolloAutomation/MSR-2/Integrations/ESPHome/MSR-2.yaml
to
ApolloAutomation.MSR-2: github://ApolloAutomation/MSR-2/Integrations/ESPHome/MSR-2_BLE.yaml
and compiled it. The device what was working before but shows shows now also UNKOWN. I modified it back but got the same result. What I did last week is upgrading the ESPHome environment to ESPHome 2026.2.4. Could it be that the development of the image doesn’t match with version of the ESPHome binding?
@HenMus Just out of curiosity - are you already using the MQTT Binding for other devices?
Yes I was using MQTT for ESPAltherma already before I started with ESPHome.
Then you might want to give OpenMQTTGateway a try on one of your ESP32s, for direct reception of your Shelly BLU Door and Window sensor, without the need for any additional Shelly intermediate as gateway and with openHAB MQTT auto-discovery.
With the basic esp32dev-ble binary, easiest through the web installation (current dev version to make sure all the Shelly BLU devices are included.
With MQTT this should also avoid any future issues with updates.
Just a suggestion to avoid the issues you are seeing.
Thanks but I first need to get the Apollo MRS-2 to work as it was before without BLE. There must be a mismatch between de ESPHome binding and ESPHome compiler environment. Who can help?
The first Apollo MSR-2 does not response to ConnectRequest but the second one is working fine. This are the versions.
Is there a version of no.seime.openhab.binding.esphome-4.1.0-SNAPSHOT.jar what can work with API version 1.14. Maybe the latest one but I can’t install that version. There my problem and search started
The binding supports the latest ESPHome version, but possibly not your eldest ESPHome device as there was a breaking change in the ESPHome protocol starting with version 2025.10. If you cannot make that device connect, you should upgrade it.
I run all my sensors on the same ESPHome version (2026.2.4), so if you are running the lastest version of the binding (which you always should), they will work.
Just to confirm you are running the latest binding version: what does openhab cli+ bundle:list|grep ESP print?
I’m NOT running the latest but 4.1.0.202507291945. The reason, I can’t install the latest because it gives an error Esphome latest version and can’t solve the BT requirement.
