Bluetooth Position Triangulation (GPS/IPS/ESPresence)

Rationale

I’d like my smart home to be able to do presence detection based off my Bluetooth Device’s location.

Now that HA has Bluetooth support, and that ESPHome can serve as a Bluetooth proxy, it’d be incredibly helpful to have the associations between the detecting device and the Bluetooth RSSI values. This could eventually be consumed by the Bluetooth integration itself for triangulation, or some other new integration. I elaborate on this a bit in:
Location Triangulation (ESPresence alternative) · Issue #1857 · esphome/feature-requests (github.com)

Alternatives

As of now, there are a few integrations attempting to determine one’s location by RSSI. Some Examples:

  1. Room Assistant
  2. MQTT Room
  3. ESPresence

But each of these have their own problems, such as HW and placement requirements.

Of them, ESPresence has worked the best for me, but it requires me to have dedicated non-ESPHome ESP32 devices as nodes to triangulate my position.

Feature Request

A similar to ESPresence should now be possible inside HA, given that HA has access to the detecting device. Below is an HA log from the detection of a random BT device on my tracer-kitchen device:

2022-09-09 13:43:20.181 DEBUG (MainThread) [homeassistant.components.bluetooth.manager] tracer-kitchen: 6A:37:F8:E0:5F:9F AdvertisementData(manufacturer_data={6: b'\x01\t \x02\x13"&E\xf7\x8b\xc8c\x00r\xf1t\x18\xc4\x88\xa8\xf2I\xfeo$\x0c\xa0'}) connectable: False match: set() rssi: -80

My Proposal, would be to add support for tracking the associations between the detecting interface and RSSI values. Then later, in either the Bluetooth or some new integration, add support for triangulating location based off of the device to RSSI pairs.