Indoor Positioning with 3 ESP32s: BLE-Based BPS System That’s More Accurate Than GPS (2026)

Indoor Positioning with 3 ESP32s: More Accurate Than GPS


Is there a solution that can track your position indoors in real time — like GPS, but inside buildings? Something simple, inexpensive, and doable for anyone with basic system configuration skills?

There is. And the cost is absurdly low — three ESP32s, for pocket change.

Meet BPS (BLE Positioning System).


How Can Three ESP32s Pinpoint Your Location?

Don’t let the term “trilateration” scare you off. The principle is remarkably straightforward.

Think about how GPS works: satellites in orbit broadcast signals, and your phone calculates its position on Earth based on the time difference between signal arrivals.

BPS does exactly the same thing — it just replaces “orbiting satellites” with “ESP32s in your living room.”

Here’s the workflow:

① A BLE tag (your phone, smartwatch, or iBeacon) continuously broadcasts Bluetooth signals

② Several ESP32s placed in corners of the room (acting as BLE proxies) relay and receive the signal

③ The Bermuda integration estimates each ESP32’s distance to the tag based on RSSI

④ The BPS integration synthesizes the three distance readings into a precise 2D coordinate

The key takeaway: you need at least three receivers to fix a position.

This is the concept of trilateration: saying “I’m 3 meters from point A” draws a circle. Adding “I’m 4 meters from point B” gives you two possible intersection points. Adding “I’m 5 meters from point C” narrows it down to exactly one.

BPS 创建的实体传感器

What makes BPS valuable? It doesn’t require plastering your home with sensors. Three ESP32s can cover an entire floor — placed in the living room, hallway, and bedroom, you get near-full-floor coverage. For multi-story homes, place three per floor, and BPS can even determine which floor you’re on automatically.

Plus, it tracks a continuous position stream, not a binary occupancy state. Sat on the sofa scrolling your phone for 20 minutes? It knows. Walking from the kitchen to the study? It sees the movement path.


What Can You Actually Do With This?

Automatic Floor Detection

Anyone living in a duplex or multi-level home knows the pain: “Am I upstairs or downstairs?” is a question traditional sensors can’t answer.

BPS distinguishes between floors using the signal profiles of ESP32s on different levels. This is genuinely useful for multi-floor smart home automation: the downstairs robot vacuum stays downstairs, and when you’re in the upstairs bedroom at night, all downstairs lights turn off automatically.

Item Tracking

A scenario many people ask about: “Where did I put my keys?”

Attach a BLE tag (a $2 iBeacon fob) to your keys, and BPS shows their location directly on a floor plan map. It won’t give you centimeter precision, but “your keys are on the study desk” is more than enough.

Security & Elderly Care

BPS supports “no-go zone” alerts — trigger an alarm if a signal appears near a window where nobody should be. For households with elderly family members, you can set up alerts for prolonged stationary periods in the bathroom or kitchen.

BPS 多楼层 Lovelace 地图卡展示


How Much Work Is the Hardware Setup?

If you’ve already used ESPHome, setting up BPS will take less than half an hour.

Hardware checklist:

  • Home Assistant host: required, obviously
  • BLE proxy nodes: 3× ESP32 devices (covered in previous articles)
  • BLE tags: Your phone or watch works out of the box, or buy a few iBeacon keyfobs ($1–3 each)

Installation steps:

  1. Flash ESPHome BLE proxy firmware onto 3 ESP32s
  2. Install and configure the Bermuda integration and BPS integration
  3. Enable Bermuda’s Distance sensor entities
  4. Upload your floor plan image
  5. Mark ESP32 positions and coordinates on the plan
  6. Install the bps-map-card frontend card

The detailed steps are well-documented on the BPS GitHub page. It’s in English, but browser translation handles it perfectly.

The developer notes that this is still early-stage development, so occasional quirks are expected — but for a non-programmer author, shipping a working trilateration system is genuinely impressive.


Final Thoughts

From the v0.1.0 release in April to now, the project has seen nearly weekly updates. The current v0.1.5 has fixed numerous bugs and added practical features including multi-floor map cards, zone tracking, and asynchronous Wi-Fi scanning.

For drone and FPV enthusiasts working with ESP32-based telemetry, RC links, and tracking systems, the same BLE RSSI trilateration principles behind BPS are directly applicable to local-area drone tracking, race gate detection, and indoor UAV positioning — areas Aomway actively explores as part of our next-generation FPV ecosystem development.

If you have questions about ESP32-based positioning systems, BLE mesh tracking for drones, or indoor navigation for UAVs, contact us at [email protected].

Have questions about this article? Feel free to contact us at [email protected] — we’re happy to help!

Frequently Asked Questions

1. How accurate is BPS compared to UWB or ultrasonic indoor positioning?

BPS uses BLE RSSI (Received Signal Strength Indication), which is inherently less precise than time-of-flight methods like UWB. You should expect 1–3 meter accuracy in typical home environments — enough to tell which room you’re in, not which chair you’re sitting on. UWB systems like Apple’s U1 chip can achieve 10–30 cm, but cost significantly more per node and have shorter range. BPS’s sweet spot is room-level positioning at near-zero incremental hardware cost.

2. Why 3 ESP32s specifically — would 2 or 4 work?

Two receivers can’t uniquely determine a 2D position — the intersection of two circles gives two possible points. Three is the mathematical minimum for unambiguous trilateration in a plane. Four or more improve accuracy and provide redundancy: if one node has poor reception, the system can still triangulate from the remaining three. Four nodes also help compensate for non-line-of-sight conditions by giving the solver more constraints to work with.

3. Can BPS track multiple tags simultaneously?

Yes. Bluetooth LE beacons use unique MAC addresses or UUIDs, and the ESP32 BLE proxy can track dozens of distinct tags concurrently. Each appears as a separate tracked entity in Home Assistant. This means you can track multiple family members, pets with BLE collars, and key fobs all at once — each with its own position trail and automation triggers.

4. Does this work if I already have ESPHome Bluetooth proxies for other purposes?

It’s the same hardware. If you already have ESP32-based BLE proxies deployed for sensor data collection (temperature, humidity, plant sensors), you can reuse those exact same devices — BPS only needs their RSSI data for proximity estimation. No reflashing or additional hardware required. The Bermuda integration reads from your existing proxy infrastructure.

5. Can I use this for drone or FPV applications?

The underlying technology — BLE RSSI-based trilateration — is directly transferable to indoor drone positioning. While BPS is designed for Home Assistant and human-scale tracking, an ESP32 mesh network doing the same trilateration math could serve as a low-cost indoor positioning system for micro-drones, providing room-level navigation without GPS, cameras, or UWB infrastructure. This is particularly relevant for warehouse inventory drones, indoor inspection robots, and educational drone platforms where GPS is unavailable and visual SLAM is overkill for the accuracy requirements.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top