BLE Asset Tracking: Tags, Gateways, and Cloud Integration

<\/script>\n
'; }, get iframeSnippet() { const domain = '{ SITE_DOMAIN }'; const type = '{ embed_type }'; const slug = '{ embed_slug }'; return ''; }, get activeSnippet() { return this.method === 'script' ? this.scriptSnippet : this.iframeSnippet; }, copySnippet() { navigator.clipboard.writeText(this.activeSnippet).then(() => { this.copied = true; setTimeout(() => { this.copied = false; }, 2000); }); } }" @keydown.escape.window="open = false" @click.outside="open = false">

Embed This Widget

Theme


      
    

Widget powered by . Free, no account required.

Building BLE-based asset tracking systems at scale

| 5 min read

BLE Asset Tracking: Tags, Gateways, and Cloud Integration

BLE asset tracking uses small, battery-powered advertising tags attached to assets — tools, carts, patients, pallets — and a network of fixed gateways that scan for tag advertisements and report them to a cloud platform. Unlike GPS (outdoor, power-hungry), BLE tracking works indoors, lasts years on a coin cell, and scales to thousands of tags per facility.

System Architecture

[BLE Tag] ──adv──> [Gateway/AP] ──Ethernet/Wi-Fi──> [Location Engine] ──> [Dashboard]

Tags: advertising-only, no connection, 100 ms–10 s interval
Gateways: scanning all 3 adv channels, forwarding RSSI + tag MAC + timestamp
Location Engine: RSSI fingerprinting, trilateration, or ML-based positioning

BLE tags are typically advertising-only (no ATT">GATT connection) to maximize battery life. A tag advertising at 1-second intervals with 0 dBm TX power and 10 µA sleep current lasts 2–5 years on a CR2032.

Tag Design

Parameter Value Impact
Advertising interval 1–10 s Battery life vs. location update rate
TX power −4 to +4 dBm Range vs. battery; +4 dBm ≈ 30 m open
Payload Manufacturer specific data Asset ID, battery, sensor data
PHY LE 1M Widest gateway compatibility
Motion detection Accelerometer wake Advertise fast when moving, slow when still
Sleep current 0.5–2 µA Dominates battery budget

Adaptive advertising based on motion state is the highest-ROI optimization: a stationary asset at 10 s interval versus a moving asset at 100 ms interval reduces average current by 10–50×.

Gateway Placement

BLE RSSI is highly variable (±5–10 dB per measurement due to multipath, body shadowing). Accurate location requires multiple gateway observations:

Method Gateways Accuracy Infrastructure
Proximity (nearest gateway) 1 ±5–20 m (room-level) Low
RSSI trilateration ≥3 ±2–5 m Medium
RSSI fingerprinting ≥3 (survey required) ±1–3 m Medium + survey effort
AoA direction finding 1 per zone (array) ±0.5–1 m High
Channel Sounding 1 ±0.1–0.2 m Requires BT 6.0 hardware

Gateway density rule of thumb: one gateway per 100–150 m² for room-level accuracy; one per 30–50 m² for ±3 m zone accuracy in typical office/warehouse environments.

Mounting height: 2.5–3 m ceiling mount minimizes body shadowing and multipath from floor reflections. Avoid mounting above metal HVAC ducts.

RSSI-Based Location Algorithms

Log-Distance Path Loss Model:

RSSI = TX_Power − 10 × n × log10(d) + X_σ

Where n = path loss exponent (2.0 free space, 2.5–3.5 indoors), X_σ = zero-mean Gaussian noise.

Solving for distance:

def rssi_to_distance(rssi: float, tx_power: float = -59, n: float = 2.8) -> float:
    # Returns estimated distance in meters from RSSI and TX power at 1m
    return 10 ** ((tx_power - rssi) / (10 * n))

Kalman Filter for Smoothing: Raw RSSI is noisy. A simple 1D Kalman filter reduces jitter:

class RSSIKalman:
    def __init__(self, q=0.1, r=5.0):
        self.x, self.p = 0.0, 1.0
        self.q, self.r = q, r  # process noise, measurement noise

    def update(self, z: float) -> float:
        self.p += self.q
        k = self.p / (self.p + self.r)
        self.x += k * (z - self.x)
        self.p *= (1 - k)
        return self.x

Gateway Hardware Options

Gateway Interface BLE Version Scan Channels Notes
Raspberry Pi 4 + USB dongle Ethernet/Wi-Fi Up to 5.3 All 3 Flexible, Python/BlueZ
Nordic Thingy:91 LTE-M 5.2 All 3 Cellular-connected outdoor
Laird DVK-BL5340 Ethernet 5.4 All 3 Industrial, −40°C
Cisco Catalyst AP Wi-Fi backhaul 5.2 All 3 Enterprise, integrated IoT
Kontakt.io Gateway Pro Ethernet 5.2 All 3 Purpose-built asset tracking

Cloud Integration Pattern

Gateway ──MQTT──> Cloud Broker ──> Location Engine ──> REST API ──> Dashboard
                                                   ──> WebSocket ──> Real-time map

Standard MQTT topic structure:

ble/gateway/{gateway_id}/scan/{tag_mac}
{
  "rssi": -72,
  "tx_power": 4,
  "manufacturer_data": "0x0059...",
  "timestamp_ms": 1735900000000
}

The location engine aggregates observations from multiple gateways per tag, applies smoothing, and outputs a location estimate every 1–30 seconds depending on SLA requirements.

Tag Payload Design

A compact 8-byte manufacturer-specific data payload:

Byte 0-1: Company ID (BT SIG registered, or 0xFFFF for prototype)
Byte 2-4: Asset ID (24-bit, 16M unique assets)
Byte 5:   Battery (0-100%)
Byte 6:   Status flags (motion, tamper, button)
Byte 7:   RSSI calibration (TX power at 1m, signed dBm)

Use the Packet Builder to design and preview your advertising payload structure before firmware implementation.

BLE vs. Other Asset Tracking Technologies

Technology Range Battery Life Indoor Cost per Tag
BLE 1–50 m 1–5 years Yes $3–15
UWB 1–50 m 6–24 months Yes $15–40
RFID (passive) 0–10 m Infinite Yes $0.10–2
Wi-Fi 10–100 m Weeks Yes $5–20
GPS Global Days–months No $20–80

BLE hits the best balance of battery life, infrastructure cost, and indoor accuracy for most enterprise asset tracking deployments. Use the Power Estimator to model tag battery life for your specific advertising interval and TX power configuration.

Frequently Asked Questions

Yes, our guides range from beginner introductions to advanced topics. Each guide indicates its difficulty level and prerequisites so you can find the right starting point.