Skip to main content

Bluetooth Indoor Positioning System with LoRaWAN

Introduction

Overview

Indoor positioning is a common challenge for many industries. While high-precision systems like UWB exist, they can be costly and complex. This solution offers a flexible and cost-effective alternative by combining two powerful wireless technologies: Bluetooth Low Energy (BLE) for location sensing and LoRaWAN for long-range, low-power data transmission.

The system is built around the SenseCAP T1000 Tracker and supports two distinct positioning modes, allowing you to balance precision with battery life based on your needs:

  1. High-Precision Tracking (Trilateration): When a tracker detects signals from three or more BLE beacons, it can calculate its precise (x, y) coordinates on a map. This mode is ideal for tracking the movement of assets or personnel, providing accurate location updates periodically or whenever movement occurs.

  2. Zone-Based Positioning (Proximity): When a tracker is in range of only one or two beacons, it identifies its location based on proximity to the nearest beacon. This mode is perfect for simpler use cases like automated check-ins, confirming an asset is in a designated room, or conserving battery life by reporting location less frequently.

By supporting both methods, this solution provides a versatile and easy-to-deploy system for a wide range of indoor tracking applications, from simple presence detection to more detailed coordinate-based monitoring.

Navigate to our bundle page

Check out our Indoor & Outdoor Integrated Positioning bundle page for all the products you need to implement this solution.

Key Features & Benefits

  • Cost-Effective & Scalable: Leverages affordable BLE beacons and avoids the need for expensive gateway installations in every room.
  • Long-Range Data Transmission: A single LoRaWAN gateway can cover an entire building or campus, drastically reducing infrastructure costs.
  • Instant SOS Alert: Trackers include a panic button that, when pressed, immediately sends an SOS alert via LoRaWAN for rapid emergency response.
  • Intelligent Power Management: By using a built-in accelerometer, the tracker can report only when movement is detected and send periodic "heartbeat" signals otherwise. This dramatically extends battery life to up to 6 months with optimal settings for many asset tracking applications.
  • Simple Deployment: Setting up BLE beacons and LoRaWAN gateways is straightforward, getting your positioning system online quickly.
  • Open-Source Software: The project is fully open-source, allowing you to build and customize your own backend server using our GitHub repository.

Use Cases

Use Cases

This solution is ideal for a wide range of zone-based tracking and safety applications:

  • Campus & School Safety

    Provide students and staff with a wearable tracker. The built-in SOS button allows them to instantly send an emergency alert with their last known location from anywhere on campus, providing peace of mind and enabling faster response times.

  • Asset Management

    Track the location of valuable assets, both indoors and outdoors (e.g., vehicles in a parking lot). Configure the tracker to only report when it moves, conserving battery while ensuring you are alerted to unauthorized movement.

  • Automated Check-In & Personnel Management

    By adjusting the signal strength of a BLE beacon, you can create a "check-in" zone for offices or nursing homes. When a person wearing a tracker enters the zone, their presence is automatically logged.

System Architecture

The system operates on a simple yet powerful principle. Mobile trackers listen for signals from fixed beacons and report what they hear to a central server.

System Architecture Diagram

Prerequisites

The main components are:

  1. BLE Beacons: These are small, fixed transmitters placed at known locations (e.g., room entrances, key zones). They continuously broadcast a unique ID.
  2. SenseCAP T1000 Tracker: This is the mobile device attached to the asset or person you want to track. It scans for nearby BLE beacons and identifies the one with the strongest signal.
  3. LoRaWAN Gateway: The tracker sends a data packet containing the ID of the nearest BLE beacon to the gateway via LoRaWAN.
  4. Network & Application Server: The gateway forwards the data to a LoRaWAN Network Server(SenseCraft Data), which then routes it to an application server. The application server holds a map of the beacon IDs and their real-world locations, allowing it to determine the tracker's position (e.g., "Tracker #58 is near Beacon #12, which is in Conference Room 3").

Before you begin, make sure you have the following:

  • A SenseCAP T1000 Tracker
  • One or more BLE beacons
  • A LoRaWAN gateway connected to the internet
  • A server or computer with Docker installed

SenseCAP T1000 Tracker

LoRaWAN® mobile tracker with BLE scanning capabilities

  • BLE Beacon Detection: Supports BLE 5.1 for precise indoor and outdoor positioning.

  • Wide Area Network: LoRaWAN® Class A(v1.0.4) connectivity for long-range, low-power communication.

  • Motion Detection: Built-in accelerometer for real-time motion and stationary status sensing.

  • Emergency Button: Independent SOS button to trigger emergency alerts with one press.

BLE Beacons

Regular Bluetooth Broadcasting

  • Protocol Compatible: Bluetooth® LE 5.0 | Full support for iBeacon and Eddystone formats.

  • Flexible Deployment: Configurable transmission power for adjustable coverage radius.

  • Long-lasting: Up to 2 years of battery life with standard settings.

  • Easy Installation: Comes with adhesive backing for easy mounting on walls or other surfaces.

  • Broadcasting Range: Up to 75 meters outdoors, 120 meters indoors in open areas.

SenseCAP M2 Multi-Platform Gateway

LoRaWAN® Network Infrastructure

  • Wide Coverage: Indoor coverage radius of up to 2 km, ensuring stable signal.

  • Massive Connectivity: Supports over 200 concurrent devices with excellent performance.

  • Multiple Backhauls: Provides multiple network backhaul options including Ethernet, Wi-Fi, and 4G.

  • Integrated Solution: Built-in local LoRaWAN server capabilities to simplify network deployment and management.

Getting Started Guide

Indoor positioning 2d map
  1. Deploy Beacons: Place BLE beacons at strategic locations throughout your facility. Create a map or list documenting the unique ID of each beacon and its physical location (e.g., Beacon_ID_01: "Main Entrance", Beacon_ID_02: "Warehouse Zone A").
  2. Set up the Gateway: Connect your LoRaWAN gateway to the internet and configure it to forward packets to your chosen LoRaWAN Network Server.
  3. Deploy the Application: On your application server, create the logic to map the reported beacon IDs back to the physical locations you documented in Step 3.
  4. Configure the Tracker: Activate the SenseCAP T1000 and onboard it to your LoRaWAN Network Server. Ensure it is configured for BLE scanning mode.
  5. Visualize: As the tracker moves through the facility, it will report the nearest beacon, and your application can display its location on a dashboard or map.

Step 1: Set Up Your Hardware

First, you need to set up the physical devices in your facility.

1a. Deploy Beacons

info

For complete technical details, refer to the BC01 Indoor Bluetooth Beacon documentation.

First, place your BLE beacons at key locations throughout your facility, such as at the main entrance, in the warehouse, and in offices.

Indoor positioning 2d map

Next, create a list(template) for yourself to record each beacon's unique MAC Address and its physical location. This record is essential for the software configuration step.

Example Record:

MAC Address,Location,Beacon ID
c30000564b31,"Main Entrance",01
c30000564b32,"Warehouse Zone A",02
c30000564b33,"Corner Office",03

The video below shows how you will use this list to add your beacons to the application's map later. Creating an accurate record now will make the software setup much easier.

Pro Tip: For easier management, you can use the SenseCraft app to give all your beacons a consistent UUID. This helps ensure the tracker only listens to your devices and ignores others. Check out Feature 4: Filter by Beacon UUID for more details.

Quick view of the parameters of BC01 beacon
ParametersDefault Value
UUIDFDA50693-A4E2-4FB1-AFCF-C6EB07647825
Major10001
Minor19641
Measured power-59dBm
Tx Power-30 - +4dBm, default 0dBm
Adv Interval100ms~10s, default 500ms
Passwordseeed123 (Letters and numbers)
Device NameBC01 (1-7 characters)
Soft Rebootseeed123 (same with the password)

1b. Set Up the Gateway

First, power on your LoRaWAN gateway and connect it to the internet. From here, the steps depend on which network server you're using.

If you're using the default SenseCraft Data(formerly SenseCAP Portal) platform, your gateway is already pre-configured.

  1. Follow the official user manual to make sure the gateway is online and connected to your account.
  2. Once that's done, you can move on to Step 2.

Step 2: Install the Positioning Application

Next, you will install the main application on your server using Docker. Or you can have a view of the demo first.

Indoor positioning application preview

Run the Installation Command

Open a terminal on your server and run the following command:

docker run -p 5173:5173 -p 8022:8022 --name indoor-positioning --restart unless-stopped -v /data/indoor-positioning/db/:/app/db/ -d seeedcloud/sensecraft-indoor-positioning

What this command does:

  • It downloads and starts the SenseCraft Indoor Positioning application.
  • -p 5173:5173 makes the web dashboard accessible on port 5173.
  • -v /data/indoor-positioning/db/:/app/db/ tells the application to store its database and maps in the /data/indoor-positioning/db/ folder on your machine.
  • -d runs the application in the background.

After running the command, you can access the dashboard by opening a web browser and going to http://<your_server_ip>:5173.

Step 3: Configure the Application

app-configuration-management

Now, open the application dashboard in your browser to configure the system settings.

3a. Runtime Configuration (Connecting to LoRaWAN)

This setting connects the application to your LoRaWAN Network Server to receive tracker data. A key feature is that the application supports simultaneous connections to both the SenseCraft Data platform and a ChirpStack server.

app-server-runtime-configuration

In the dashboard, you can enable one or both of the following MQTT sources to connect to your network servers.

To Connect to SenseCraft Data
  1. Enable the SenseCAP OpenStream MQTT toggle.
  2. Enter your Username and API Key.
To Connect to ChirpStack
  1. Enable the ChirpStack MQTT toggle.
  2. Enter your ChirpStack server address and Application ID.
    • The MQTT topic field will then update automatically. You can find the Application ID on the main page for your application within ChirpStack.
chirpstack-application-id

Note: The {clientID} field is used by the system and will be replaced with a random ID on startup. You don't need to change it.

Important: After enabling or changing any of these settings, you must restart the application (the Docker container) for them to take effect.

Other Settings

The following settings can be changed at any time without restarting the application:

  • Authentication: Update the username and password used to log in to the application's dashboard.
  • Area Positioning: Enable this option to estimate a tracker's location when there are too few beacon signals available for precise, multi-point positioning.
  • Tracker Access Control: Configure which devices are allowed to send data to the application. You can either allow data from any device or create a specific list of authorized trackers.
  • Webhook: Enable this to push location results to your own service using an HTTP POST request.

3b. Map and Beacon Configuration

In this step, you will use the application's dashboard to upload your floor plan and add the beacons you physically deployed earlier.

Application Configuration Management
  1. Upload Your Map First, go to the configuration menu and upload an image of your floor plan. Standard image formats like PNG or JPG are recommended.
  2. Add Your Beacons Go to the "Beacons" section. Using the list you created in Step 1a, add each beacon's information (like its MAC address). The easiest way to do this is to click directly on the beacon's location on the map you just uploaded.
  3. Adjust the Environmental Factor (Optional) This is an advanced setting that fine-tunes location accuracy. It helps the system convert signal strength (RSSI) into a more accurate distance by accounting for your specific environment.
    • For open spaces, the default value of ~2.0 is usually sufficient.
    • For complex indoor areas with many walls and obstacles, you may need to adjust the value between 1.8 and 4.0.
    • Recommendation: It's best to leave this at the default setting to start. You can come back and adjust it later if you need to improve positioning accuracy.

Step 4: Activate and Visualize Your Tracker

The final step is to turn on your tracker and see it on the map.

tracker-visualize-on-map
  1. Activate the SenseCAP T1000 Tracker and onboard it to your LoRaWAN Network Server. Ensure your gateway is online and the tracker devices is 'registered' on the LNS server. check Step 1b for details.
  2. Ensure it is set to BLE scanning mode so it can detect the beacons. Check the video below for help.
  3. Visualize: As the tracker moves through your facility, it will detect the nearest beacons and report its location. You will see its icon moving across the map on your dashboard.

Opt for Other Platform, When using ChirpStack.

Retain the default platform settings (SenseCAP for The Things Network), When using SenseCraft Data.

Application Features Overview

Feature 1: Data Pushing (Webhook & WebSocket)

You can get real-time data from the system in two ways:

  • Webhook: As mentioned in the configuration, this pushes data to a URL you provide.
  • WebSocket: For real-time applications, you can connect to the /ws endpoint using Basic HTTP Authentication. The data formats for sos, tracker_update (trilateration), and tracker_location_approximate (proximity) are detailed in the JSON examples provided in the original document.

Data Formats

{
"type": "tracker_sos",
"data": {
"2CF7F1C0530004AD": {
"timestamp": 1756967508000,
"sos": 0
}
}
}

Feature 2: Two Positioning Modes

The system supports two positioning methods:

  1. Trilateration: When the tracker detects three or more beacons, it calculates a precise (x, y) coordinate. This is the default and most accurate mode.
  2. Proximity (Area Positioning): If you enable this and the tracker can only detect one beacon, it will report its position as being "near" that beacon within a calculated radius. This is useful for ensuring coverage in all areas.

Trilateration

TrilaterationTrilateration(SOS)
area-positioning-normal
area-positioning-sos

Area Positioning

Area PositioningArea Positioning(SOS)
area-positioning-normal
area-positioning-sos

Feature 3: Viewing Alert History

You can view the alert history (e.g., SOS button presses) for any tracker by clicking on its icon on the map. The system logs each new alert and will continue to push notifications for an active alert until it is resolved.

alert-history-records

Feature 4: Filter by Beacon UUID

You can filter the displayed trackers on the map by their associated beacon UUIDs. This allows for more focused monitoring of specific areas or assets. it is valued not to be hacked.

sensecraft-ble-filter

Reference & Resource

FAQ

Why is my tracker not reporting its location?
  • Probable Cause: There may be an issue with the LoRaWAN connectivity.
  • Solution: Check the status of your LoRaWAN gateway to ensure it's online and connected. Also, verify that the tracker's Device EUI is correctly registered on your network server.
Why is the tracker's position inaccurate?
  • Probable Cause: The placement of your BLE beacons might be causing interference or weak signal coverage.
  • Solution: Try adjusting the transmission power of the beacons. You may also need to relocate them to reduce signal obstruction from walls or machinery.
Why is the tracker's battery draining so quickly?
  • Probable Cause: The reporting frequency is set too high, causing the device to transmit data more often than necessary.
  • Solution: Optimize the motion detection settings to only report when the tracker is moving. You can also increase the reporting interval (the time between location updates) to conserve power.
Why is location data missing or not showing up?
  • Probable Cause: There could be a problem with the database or API, often related to how the data payload is being interpreted.
  • Solution: First, verify that the payload decoder on your application server is correct and working. If the decoder is correct, check the application server logs for any errors or connectivity issues.
Why are SOS alerts not being received promptly?
  • Probable Cause: The LoRaWAN network may be congested, or the device class isn't suitable for urgent messages.
  • Solution: For time-critical applications like SOS alerts, ensure your tracker is configured to use Class C mode. This keeps the device's receiver on continuously, allowing for immediate reception of messages from the server.
How do I adjust the advertising interval and transmission power of a BC01 beacon?

You can use the SenseCraft app to configure the BC01 beacon.

  1. Install the SenseCraft app from the Google Play Store or Apple App Store.
  2. Open the app and enable Bluetooth on your phone.
  3. Scan for nearby beacons and select the one you wish to configure.
  4. Enter the default password "seeed123" to access the settings.
  5. Adjust the advertising interval (100ms to 10s) and transmission power (-30dBm to +4dBm) to your needs.
  6. Save the changes.
Loading Comments...