SIP (Smart Indoor Positioning)
ESP32 BLE indoor positioning, built in our lab and ready for your site
Real-time indoor positioning on hardware you can buy off the shelf. ESP32 anchors listen to a Bluetooth tag, and our positioning engine turns raw signal into a steady, live position.
- Status
- Ready to pilot
- Built for
- Malls, hospitals, warehouses, venues and product teams that need to locate people or assets indoors.
- Category
- BLE indoor positioning
The problem
GPS stops at the door. Inside a mall, a hospital or a warehouse the satellites can't see you, so locating a person, a trolley or a piece of equipment needs its own infrastructure.
The established platforms are built for airports: closed hardware, per-site licences and long sales cycles. Most sites need less than that. They need to know where things are, on hardware they can replace themselves, running software they own.
So we built the core ourselves. SIP turns a few ESP32 boards and a coin-cell beacon into a real-time positioning system. We wrote every layer in-house, from the firmware to the maths, so we can shape each one around your site.
How it works
- 01
Tag
A Bluetooth Low Energy beacon on the person or asset advertises several times a second. No app, no pairing, and a coin cell lasts months.
- 02
Anchors
ESP32 boards fixed around the space listen for the beacon. Every half second each anchor sends the median signal strength it heard to an MQTT broker over WiFi.
- 03
Engine
The positioning engine converts signal strength to distance, fits the one position that agrees with every anchor, and smooths the track with a Kalman filter.
- 04
Your layer
On top of the engine we build what your site needs: a live floor plan, wayfinding, zone alerts, asset search or footfall analytics. That layer turns the core into your MVP.
What it does
- Off-the-shelf ESP32 boards and standard BLE beacons
- Median RSSI per report window, so a single bad packet changes nothing
- Weighted nonlinear position fit across all anchors
- Constant-velocity Kalman filter for a steady track
- Positions and anchor health over MQTT, ready for any dashboard or backend
- Per-anchor settings in the firmware config, no code changes per board
- Layout checks that catch anchor placements unable to give a reliable fix
- Upgrade path to UWB anchors for sub-30 cm accuracy
How we built it
Median, not average
Bluetooth signal strength arrives in spikes. Someone walks past, a packet reflects off a metal shelf, and one reading drops by 10 dB. An average lets that spike drag the distance estimate with it. Each anchor collects every sample in a 500 ms window and reports the median and the sample count, so one bad packet has no effect.
Three anchors is not least squares
The textbook trilateration trick subtracts one circle equation from the others to get a linear system. With three anchors that leaves two equations for two unknowns, so nothing gets averaged and one noisy distance moves the answer by metres. SIP uses it only as a starting guess, then runs a nonlinear fit across all anchors. We benchmarked both over 5,000 simulated positions with 4 dB of signal noise: median error fell from 2.1 m to 1.2 m, and the worst case from 54 m to 7 m.
Trust the close anchors more
Signal strength error is proportional: 3 dB off is roughly 30% of the distance, whether the beacon sits 1 metre away or 10. Measured in metres, far readings carry far more error than near ones. The fit weights each anchor by the inverse of its distance, so the anchors nearest the tag lead.
One radio, two jobs
The ESP32 shares one 2.4 GHz radio between Bluetooth and WiFi. Scanning Bluetooth nonstop starves the WiFi link that carries readings out. With WiFi on, the anchors listen for 50 ms in every 100 ms. Without it, they listen full time.
Built to extend
Anchors publish plain JSON over MQTT, and each board's ID, tag and network live in its config menu. You can add anchors, swap in UWB hardware or feed positions into an existing building system without touching the core.
SIP (Smart Indoor Positioning): common questions
How accurate is BLE indoor positioning?
Expect 1 to 3 metres in a real building, depending on the number of anchors, the walls, and how many people move through the space. That tells you which room or zone someone is in, not which shelf. For 10 to 30 cm, ultra-wideband (UWB) fits better, and SIP is built to take UWB anchors.
How does an indoor positioning system work?
Fixed receivers, called anchors, measure a radio signal from a tag carried by a person or fixed to an asset. Software turns those measurements into distances or angles and works out where the tag must be. SIP measures Bluetooth signal strength with ESP32 anchors.
What is the difference between BLE and UWB indoor positioning?
BLE costs little, runs on coin cells and works with standard beacons and phones, with accuracy in metres. UWB times how long a radio pulse takes to travel, which gives 10 to 30 cm accuracy, but needs dedicated tags and costs more per anchor. Many sites use BLE for zones and add UWB where precision matters.
How many anchors does indoor positioning need?
At least three that can hear each area, placed off a straight line, or the system can't tell which side of the line the tag is on. A fourth anchor makes the position noticeably steadier. In larger spaces, plan on an anchor roughly every 10 metres and confirm with a site survey.
What does it take to turn SIP into an MVP for our site?
The firmware and positioning engine already run. An MVP adds what your site needs around them: a survey and anchor plan, on-site calibration, and the interface your team uses, such as a live map, alerts or reports. We start with a pilot in one area, prove the accuracy there, then expand.
Can Labvent build indoor positioning for our building?
Yes, wherever it is. We build embedded and IoT systems end to end, from firmware to dashboard, and work with clients remotely. Tell us about the site and what you need to track, and we'll scope a pilot.