Struggling to discover BLE devices

Hi Everyone - newbie here.

I’ve bought a couple of ESP32 devices and flashed them to be a bluetooth proxy. However, there not descovering any BT/BLE devices. I can see that they are running BT from my phone, I know my Govee BLE thermostats are working as I can see them through the app. I just can’t work out why the ESP32s providing a BT service.

I’m really a bit lost as to what I’ve done / not done. Might a kind soul in the community be able to help?

Diagnostics

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2025.1.1",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.13.1",
    "docker": true,
    "arch": "x86_64",
    "timezone": "Europe/London",
    "os_name": "Linux",
    "os_version": "6.6.66-haos",
    "supervisor": "2024.12.3",
    "host_os": "Home Assistant OS 14.1",
    "docker_version": "27.2.0",
    "chassis": "vm",
    "run_as_root": true
  },
  "custom_components": {
    "meross_lan": {
      "documentation": "https://github.com/krahabb/meross_lan",
      "version": "5.4.1",
      "requirements": []
    },
    "ble_monitor": {
      "documentation": "https://github.com/custom-components/ble_monitor",
      "version": "13.0.0",
      "requirements": [
        "pycryptodomex>=3.21.0",
        "janus>=2.0.0",
        "aioblescan>=0.2.14",
        "btsocket>=0.3.0",
        "pyric>=0.1.6.3"
      ]
    },
    "hacs": {
      "documentation": "https://hacs.xyz/docs/use/",
      "version": "2.0.2",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "govee_ble_hci": {
      "documentation": "https://github.com/Home-Is-Where-You-Hang-Your-Hack/sensor.goveetemp_bt_hci",
      "version": "0.10.3",
      "requirements": [
        "bleson==0.1.8"
      ]
    },
    "localtuya": {
      "documentation": "https://github.com/rospogrigio/localtuya/",
      "version": "5.2.1",
      "requirements": []
    },
    "octopus_energy": {
      "documentation": "https://bottlecapdave.github.io/HomeAssistant-OctopusEnergy",
      "version": "13.5.0",
      "requirements": [
        "pydantic"
      ]
    }
  },
  "integration_manifest": {
    "domain": "esphome",
    "name": "ESPHome",
    "after_dependencies": [
      "zeroconf",
      "tag"
    ],
    "codeowners": [
      "OttoWinter",
      "jesserockz",
      "kbx81",
      "bdraco"
    ],
    "config_flow": true,
    "dependencies": [
      "assist_pipeline",
      "bluetooth",
      "intent",
      "ffmpeg",
      "http"
    ],
    "dhcp": [
      {
        "registered_devices": true
      }
    ],
    "documentation": "https://www.home-assistant.io/integrations/esphome",
    "integration_type": "device",
    "iot_class": "local_push",
    "loggers": [
      "aioesphomeapi",
      "noiseprotocol",
      "bleak_esphome"
    ],
    "mqtt": [
      "esphome/discover/#"
    ],
    "requirements": [
      "aioesphomeapi==28.0.0",
      "esphome-dashboard-api==1.2.3",
      "bleak-esphome==2.0.0"
    ],
    "zeroconf": [
      "_esphomelib._tcp.local."
    ],
    "is_built_in": true,
    "overwrites_built_in": false
  },
  "setup_times": {
    "null": {
      "setup": 0.07407927699387074
    },
    "01JGEBVYAXFX09BVWV15WTYABX": {
      "wait_import_platforms": -1.0212713939836249,
      "config_entry_setup": 1.107525696977973
    },
    "01JGC2GWQ7GEZRPA5QA3HPW0EE": {
      "wait_import_platforms": -1.0253774009179324,
      "config_entry_setup": 1.109004080062732
    }
  },
  "data": {
    "config": {
      "created_at": "2024-12-31T12:43:19.773931+00:00",
      "data": {
        "device_name": "esphome-web-c9388c",
        "host": "192.168.1.13",
        "noise_psk": "",
        "password": "",
        "port": 6053
      },
      "discovery_keys": {
        "dhcp": [
          {
            "__type": "<class 'homeassistant.helpers.discovery_flow.DiscoveryKey'>",
            "repr": "DiscoveryKey(domain='dhcp', key='142b2fc9388c', version=1)"
          }
        ],
        "zeroconf": [
          {
            "__type": "<class 'homeassistant.helpers.discovery_flow.DiscoveryKey'>",
            "repr": "DiscoveryKey(domain='zeroconf', key=('_esphomelib._tcp.local.', 'esphome-web-c9388c._esphomelib._tcp.local.'), version=1)"
          }
        ]
      },
      "disabled_by": null,
      "domain": "esphome",
      "entry_id": "01JGEBVYAXFX09BVWV15WTYABX",
      "minor_version": 1,
      "modified_at": "2025-01-06T07:42:36.665574+00:00",
      "options": {
        "allow_service_calls": true
      },
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "user",
      "title": "ESPHome Web c9388c",
      "unique_id": "14:2b:2f:c9:38:8c",
      "version": 1
    },
    "storage_data": {
      "device_info": {
        "uses_password": false,
        "name": "esphome-web-c9388c",
        "friendly_name": "ESPHome Web c9388c",
        "mac_address": "**REDACTED**",
        "compilation_time": "Nov 25 2024, 08:39:04",
        "model": "esp32dev",
        "manufacturer": "Espressif",
        "has_deep_sleep": false,
        "esphome_version": "2024.11.1",
        "project_name": "esphome.web",
        "project_version": "24.11.1",
        "webserver_port": 80,
        "legacy_voice_assistant_version": 0,
        "voice_assistant_feature_flags": 0,
        "legacy_bluetooth_proxy_version": 0,
        "bluetooth_proxy_feature_flags": 0,
        "suggested_area": ""
      },
      "services": [],
      "api_version": {
        "major": 1,
        "minor": 10
      },
      "update": []
    },
    "dashboard": "5c53de3b_esphome"
  }
}

What BLE devices do you have? And are expecting HA to discover?

Have you added the Bluetooth integration? Bluetooth - Home Assistant

I have a pair of Govee Thermometer / Hygrometers - H5105
They seem to work fine with the Govee app

I tried to add the Bluetooth integration but I get the pop-up
No unconfigured Bluetooth adapters found. There are 0 ignored adapters.

Can the esp see the ble devices in the ESPHome logs?

Setting up devices.

In case you aren’t clear, esp32’s only do BLE not regular Bluetooth.

1 Like

Your Govee Thermometer / Hygrometers - H5105 require active scanning.

Or also try it with our Theengs Gateway Add-on :wink:

Thanks for the reply @DigiH
I tried Theengs Gateway

[21:21:57] INFO: Creating TheengsGateway configuration...
[21:22:00] INFO: IDENTITIES: 
[21:22:00] INFO: BINDKEYS: 
[21:22:00] INFO: BLACKLIST: 
[21:22:00] INFO: WHITELIST: 
[21:22:00] INFO: Starting TheengsGateway...
ERROR:BLEGateway:No Bluetooth adapters found.

I’m not sure how to set up active scanning - more reading required

@Mahko_Mahko Thank you for helping,
I’ll be a bit slow setting this up and get back to you

1 Like

If you do not have any local Bluetooth adapters Theengs Gateway cannot catch any BLE broadcasts - the same as the internal Bluetooth integration.

The only alternative would be to use OpenMQTTGateway on an ESP32 as a proxy, or just as a stand alone BLE to MQTT gateway, receiving and decoding many devices, as well as your Gove H5101. The MQTT integration would be required for that, to then allow for auto-dsocvery of your H5101s.

Very similar to the ESPHome solution @Mahko_Mahko is suggesting. I’m confident one or the other solutions will work fine for you and your H5101s :slight_smile:

@DigiH thank you again
I’m running HA on a Hyper-v VM, so I have no access to usb or BT. The ESPs will be my only BT interfaces.

I’ll need to plod through this, so thank you. Hopefully I have enough pointers.
Being a newbie, I’ll just be a bit slow.

If you already have the Theengs Gateway Add-on installed, and assuming you have the Mosquito MQTT Broker and the MQTT Integration installed as well, go to the Theengs Gateway Add-on configuration and switch off

BLE

This will tell it to not even look for a local Bluetooth adapter.

Then when you web install the esp32dev-ble-mqtt-undecoded binary of OpenMQTTGateway on an ESP32, and configure it with your WiFi and MQTT broker credentials, it will automatically act as a remote Bluetooth antenna for the Theengs gateway Add-on to received the BLE broadcasts and to allow it to receive and decode your H5101s.

Once they have been discovered you can switch off

DISCOVERY

in the Add-on configuration, as not to discovery any other BLE devices which might appear in your vicinity.

I hope this helps :slight_smile:

1 Like

So the solution from @DigiH is spot on and thank you so much for providing it, thank you also for all the other contributions.

Note that, there are quite a few different binaries to choose from at OpenMQTTGateway and I actually had more success with the esp32-olimex-gtw-ble-poe one. Also worth noting that I bought 3 boards one of which was slightly different and doesn’t work with the binary above. So some experimentation might be required.

Next stop is to make a depth gauge with an esp32 to measure ground water level. I’ll post back when I’m done :slight_smile:

2 Likes