How simonbogh/esp32-ibeacon-indoor-positioning works
This is an ESP32 iBeacon indoor-positioning demo. The workflow is: stations scan beacon tags and publish RSSI observations over MQTT; the dashboard subscribes, aggregates observations by beacon and station, estimates positions from three station measurements, and displays editable station anchors and beacon pins on a floorplan. The README documents the hardware-to-broker flow; sampled dashboard source shows the subscription, callback, rendering, and trilateration flow. The broker is external, and unsampled station internals are represented only at the documented capability level.
Main entry points: Floorplan.js Floorplan view · MessageStack.js MQTT receiver · App.js Dashboard state · Satellite.js Station marker
Components 14
Beacon sensing
- iBeacon tags
- ESP32 stations
ESP32_station/ESP32_station.ino
MQTT transport
- Mosquitto broker
- MQTT settings
dashboard/src/MessageStack/config.js - MQTT receiver
dashboard/src/MessageStack/MessageStack.js
Dashboard workflow
- Dashboard state
dashboard/src/App.js - Trilateration
dashboard/src/Positioner/PositionCalculator.js
Map and controls
- Floorplan view
dashboard/src/Floorplan/Floorplan.js - Beacon pin
dashboard/src/Floorplan/BeaconPin.js - Station marker
dashboard/src/Satellite/Satellite.js - Beacon sidebar
dashboard/src/Settings/Settings.js - Beacon glyph
dashboard/src/SVGIconComponents/StreetView.js - Station glyph
dashboard/src/SVGIconComponents/BullsEye.js - Browser storage
Connections 16
- iBeacon tags → ESP32 stations: emit BLE signals
README.md - ESP32 stations → Mosquitto broker: publish observations
README.md - Mosquitto broker → MQTT receiver: deliver MQTT messages
README.md - MQTT receiver → MQTT settings: reads settings
dashboard/src/MessageStack/MessageStack.js - MQTT receiver → Mosquitto broker: subscribes and publishes
dashboard/src/MessageStack/MessageStack.js - MQTT receiver → Dashboard state: reports observations
dashboard/src/App.js - Dashboard state → MQTT receiver: starts receiver
dashboard/src/App.js - Dashboard state → Floorplan view: renders map
dashboard/src/App.js - Dashboard state → Beacon sidebar: renders sidebar
dashboard/src/App.js - Floorplan view → Trilateration: calculates positions
dashboard/src/Floorplan/Floorplan.js - Floorplan view → Beacon pin: renders beacons
dashboard/src/Floorplan/Floorplan.js - Floorplan view → Station marker: renders stations
dashboard/src/Floorplan/Floorplan.js - Station marker → Floorplan view: returns moved position
dashboard/src/Satellite/Satellite.js - Floorplan view → Browser storage: persists station positions
dashboard/src/Floorplan/Floorplan.js - Beacon pin → Beacon glyph: renders glyph
dashboard/src/Floorplan/BeaconPin.js - Station marker → Station glyph: renders glyph
dashboard/src/Satellite/Satellite.js