Clarity needed with switchbot bot and bluetooth protocol

Hi
I noticed a few months ago that one of our Switchbot bots is being temperamental.
90-95% of the time it doesn’t trigger.
Using the phone app with BT connected (no HUB) I had 100% success triggering the bot.
On the device page it shows off then unavailable every 5 minutes.

So I deleted the bot from Homeassistant and it immediately showed “Add” for it to rejoin.
Which I did, but again it wouldn’t trigger the bot.

After digging into it a bit more I saw an error show when manually triggering it from the device page in HomeAssistant which says there’s no BT proxy nearby.

Failed to perform the action switch/turn_on. None (12:34:56:78:90:AB) - 12:34:56:78:90:AB: Failed to connect after 9 attempt(s): No backend with an available connection slot that can reach address 12:34:56:78:90:AB was found: in connectable history; 1 scanner(s) registered, 1 scanning, 1 connectable; last advertisement 0s ago via hci0 (BA:09:87:65:43:21): The proxy/adapter is out of connection slots or the device is no longer reachable; 
Add additional proxies (https://esphome.github.io/bluetooth-proxies/) near this device

Right enough, the ESP32 Espresence we have in our kitchen near the bot isn’t 100%.
It is working and showing updates in MQTT, but stopped reporting our trackers when near. Could be the BT module on the board may be fried, so I’ve powered it off for now.

But this is where I’m a little confused.
We have a few ESP32 covering most of our home, so the intermittent connection will be one of the adjacent ESP32s ones connecting at the edge of it’s range.

But we also have a BT dongle with antenna connected (via extension) to our HA server as hci0 and it has no problem controlling BT devices on the far side of our home. e.g. Switchbot air purifier (wired). I assume that’s what made the instant detection of the bot after deleting it from the integration.

Question I have is that why the BT dongle doesn’t handle the device trigger as it’s fairly close to the bot (adjacent room)?
Instead it’s relying solely on using proxy devices to trigger the device.

Adendum: All the time the device is not triggering, it’s still reporting BT signal strength and battery status.

That’s why I’m confused as to why it needs a BT proxy if the other info is still available

Do you know which proxy is connecting to your switchbot when you’re sending a command?
I had similar issues with my switchbot curtain drawers, and have 99.5% solved it with a PoE bluetooth proxy close to them. I think it has at least 5 slots open as well, for 4 curtain drawers and one extra in case something else connects.

The BT proxy’s are faster and likely respond first.

The difference is they are specific coded to do proxy duty and will only talk to up to 3 devices at a time.

I don’t know how to tell tbh.

I’d rather it use the BT dongle. I know it can.
Before we had proxies, we used to use a bot on our old dumb boiler. That worked a charm with just the BT dongle. Maybe a few seconds for it to wake up the connection and do the first trigger, but once it did that one all other actions were pretty much instant

I’d love to be proven wrong, but I think the solution is a proxy close enough to get a really really strong signal so that your switchbot always chooses this proxy.

Maybe. Looking into it more and the other devices use both WiFi and BT so they can’t be used to quantify how switchbot is connecting.

Trying to find a way to force the battery powered bot not to use a proxy.
Not having much luck yet

I might have just fixed it…

I changed the Bluetooth integration from Auto to Active and it works. No laggy response when it works either.

I think in Auto it was defaulting to Passive.
It’ll use more battery, but the CR2 lasts years, so I’m good with that.

If anyone else is looking for the setting:

  1. Settings
  2. Devices & Services
  3. Bluetooth
  4. Configure the radio (gear icon)
  5. Expand “Adapters”
  6. Gear icon on your BT hardware address (prob hci0)
  7. Select your option and Submit