ESPHome Bluetooth Erratic

Hey there! First off, I’m not 100% sure what my issue is, but it’s been driving me crazy. I have 4 Bluetooth devices (3 Govee hygrometers and an OralB toothbrush) that my Esp32 picks up with the Bluetooth proxy I had set up. Over the last month or two, suddenly this has stopped working.

Every few days, seemingly without any rhyme or reason, it’ll grab readings again, then it’ll stop again. Restarting my home assistant, unplugging and plugging back in both the HA & Esp32 don’t seem to make a difference, and I have all the latest updates installed. I haven’t changed the location of my router or Esp32, and the signal strength is generally strong there.

What can I troubleshoot at this point to get these devices to get picked up again? I initially thought it was a Govee problem until I realized my toothbrush only shows up when my hygrometers do, and vice versa.

Thank you so much for the help! This has been driving me insane for weeks!

No yaml. No logs. No issue. Some one close the thread please.

I’m sorry but that felt rude as I didn’t see anywhere on here what I needed to include and I’m new to all of this. I thought I did a good job stating the issue, so I’m sorry about that!

What yaml do you need from me on this? I haven’t done anything really custom with my configuration. I’m using an odroid c4 with home assistant os.

What logs should I provide? A debug from the esp32 device?

Thank you for understanding! I just don’t know what I need to provide, so my apologies if that was somewhere and I missed it.

A yaml for the esp device could help us see if there’s something there.

I personally had similar behavior some months ago when I used arduino instead of esp-idf framework for the bluetooth proxy. Also it is important not to mess with bluetooth time settings if you also use wifi (they share the radio).

Yeah, don’t worry. You will develope thick skin. In general if you ask about esphome you should include the yaml using preformatted text</>. Logs from the esphome for that device may give a clue. Worth mentioning the exact esp device you are using with a picture. If you have other sensors on the device like wifi strength or internal temp that don’t use Bluetooth it could help to know if they are getting through on wifi. An uptime sensor could tell you if it crashes first then cant connect.

Here’s what the diagnostics say:

{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2024.4.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.12.2",
    "docker": true,
    "arch": "aarch64",
    "timezone": "America/New_York",
    "os_name": "Linux",
    "os_version": "6.6.25-haos",
    "supervisor": "2024.04.4",
    "host_os": "Home Assistant OS 12.2",
    "docker_version": "25.0.5",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "pirateweather": {
      "version": "1.1.1",
      "requirements": [
        "python-forecastio==1.4.0"
      ]
    },
    "smartthinq_sensors": {
      "version": "0.31.5",
      "requirements": [
        "pycountry>=20.7.3",
        "xmltodict>=0.12.0",
        "charset_normalizer>=2.0.0"
      ]
    },
    "xiaomi_miot": {
      "version": "0.7.7",
      "requirements": [
        "construct==2.10.56",
        "python-miio>=0.5.6",
        "micloud>=0.3"
      ]
    },
    "hacs": {
      "version": "1.32.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "esphome",
    "name": "ESPHome",
    "after_dependencies": [
      "zeroconf",
      "tag"
    ],
    "codeowners": [
      "@OttoWinter",
      "@jesserockz",
      "@kbx81",
      "@bdraco"
    ],
    "config_flow": true,
    "dependencies": [
      "assist_pipeline",
      "bluetooth"
    ],
    "dhcp": [
      {
        "registered_devices": true
      }
    ],
    "documentation": "https://www.home-assistant.io/integrations/esphome",
    "integration_type": "device",
    "iot_class": "local_push",
    "loggers": [
      "aioesphomeapi",
      "noiseprotocol",
      "bleak_esphome"
    ],
    "requirements": [
      "aioesphomeapi==23.2.0",
      "esphome-dashboard-api==1.2.3",
      "bleak-esphome==1.0.0"
    ],
    "zeroconf": [
      "_esphomelib._tcp.local."
    ],
    "is_built_in": true
  },
  "data": {
    "config": {
      "entry_id": "a09bb8d63fe5aba9229698a1e729271c",
      "version": 1,
      "minor_version": 1,
      "domain": "esphome",
      "title": "Bluetooth Proxy 6299ac",
      "data": {
        "host": "37.19.111.112",
        "port": 6053,
        "password": "",
        "noise_psk": "",
        "device_name": "esp32-bluetooth-proxy-6299ac"
      },
      "options": {
        "allow_service_calls": true
      },
      "pref_disable_new_entities": false,
      "pref_disable_polling": false,
      "source": "zeroconf",
      "unique_id": "cc:db:a7:62:99:ac",
      "disabled_by": null
    },
    "storage_data": {
      "device_info": {
        "uses_password": false,
        "name": "esp32-bluetooth-proxy-6299ac",
        "friendly_name": "Bluetooth Proxy 6299ac",
        "mac_address": "**REDACTED**",
        "compilation_time": "May  1 2023, 04:15:24",
        "model": "esp32dev",
        "manufacturer": "Espressif",
        "has_deep_sleep": false,
        "esphome_version": "2023.4.2",
        "project_name": "esphome.bluetooth-proxy",
        "project_version": "1.0",
        "webserver_port": 0,
        "voice_assistant_version": 0,
        "legacy_bluetooth_proxy_version": 5,
        "bluetooth_proxy_feature_flags": 0,
        "suggested_area": ""
      },
      "services": [],
      "api_version": {
        "major": 1,
        "minor": 7
      },
      "button": [
        {
          "object_id": "safe_mode_boot",
          "key": 2037531703,
          "name": "Safe Mode Boot",
          "unique_id": "esp32-bluetooth-proxy-6299acbuttonsafe_mode_boot",
          "disabled_by_default": false,
          "icon": "mdi:restart-alert",
          "entity_category": 2,
          "device_class": "restart"
        }
      ]
    },
    "dashboard": "5c53de3b_esphome"
  }
}

You have to post the esphome code, go to esphome, and on the device press edit and copy paste. Or on the three dots, download yaml.
From where you posted the diagnostic, press visit on the left and you will see the esphome panel.