Juniper Mist Asset Tracking Integration: How It Works
Nirmitee.io Engineering
Author
What asset integration with Juniper Mist actually means
Asset integration with Juniper Mist means pulling live location data out of the Mist cloud into your own software, so a tagged piece of equipment shows up on your floor map and in your records. Juniper Mist finds the asset. Your software decides what that asset is, who owns it, and what happens when it moves. The two sides talk over an API.
This guide covers how that link works, what the building has to provide, what your team builds, and the trade-offs to weigh first. It is written for an engineering or product lead sizing the work, and for a buyer deciding whether Mist is the right base for asset tracking software.
The problem it solves
Staff lose real time hunting for shared equipment, and that is what this integration attacks. In a published NHS England wireless trial at Mid Cheshire Hospitals, frontline staff saved up to 30 minutes a day once they could find equipment on a screen, and clinical incidents involving the tracked equipment dropped by about three quarters. Vendor figures run higher, so treat those with care. Even the conservative trial number is a nurse getting half an hour back every shift.
The money side is equipment that goes missing or gets hoarded. When people cannot find a pump, they stash one for later, and the hospital over-buys to cover the shortfall. A live map of where every tagged item sits removes the reason to hoard. For the wider picture, read our guide to hospital asset management and how real-time location cuts equipment loss.
What Juniper Mist is, in plain terms
Juniper Mist is cloud-managed Wi-Fi whose access points double as Bluetooth sensors. The same radios that carry your network traffic also listen for Bluetooth Low Energy tags, so you do not hang a separate sensor network on the ceiling. Juniper calls the location side Asset Visibility, and it runs in the Mist cloud rather than on a local server.
The part that makes it accurate is the antenna. Each supported access point carries a directional Bluetooth antenna array, and Juniper calls the method virtual BLE, or vBLE. Instead of placing physical beacons around the building and fingerprinting the radio by hand, Mist drops software beacons on the floor plan and lets machine learning handle the calibration. You name a signal as an asset by its MAC address, its service UUID, or its iBeacon or Eddystone identifiers, and from then on it shows on the venue map and in history. Mist works with any standards-based BLE tag, so you are not locked to one tag vendor.
Bluetooth or RFID: which one Mist uses
Mist tracks assets with Bluetooth Low Energy, not RFID. This matters because the two technologies answer different questions, and the Juniper and RFID articles that circulate often get filed together by mistake. Bluetooth gives you live location on a map. RFID gives you a read when a tag passes a reader. Neither is better in the abstract. They fit different jobs.
Use Bluetooth and Mist when you need to find moving equipment anywhere in a building and you already run, or plan to run, Juniper Wi-Fi. Use RFID when you mostly need inventory counts or check-in and check-out at set points, and you want cheap tags with no battery. For the full tag-level comparison, see our breakdown of RFID tag types for hospital equipment.
How the integration works, step by step
The integration is a one-way flow of location events from Mist into your software, and it has five stages. A tag broadcasts, the access points hear it, the Mist cloud works out a position, Mist delivers that position to your connector, and your connector stores it and draws it on a map. You build the last two stages. Mist and the tags handle the rest.
Two ways Mist hands you the data
Mist offers two delivery methods, and you pick one to start. A WebSocket stream pushes positions continuously, which suits a live, moving map. A webhook sends one HTTP message per update, which suits event records and systems that prefer to be called rather than to hold a socket open. For most asset registers, start with the webhook and add the stream later only if you need second-by-second movement.
| Feed | Best for | How it works |
|---|---|---|
| WebSocket stream | A live, moving map | Hold a socket open to wss://api-ws.mist.com and subscribe per floor plan |
| Webhook | Event records | Mist posts each update to your URL on the location-asset topic |
What a location event looks like
Each asset event carries the tag MAC, the map, a position in metres, and a timestamp. You match that MAC to an asset in your own records. The location webhook topic for Bluetooth assets is location-asset, and it is enabled per site. Juniper documents the fields as the site and map IDs, the x and y coordinates, a timestamp, the asset type, and the asset MAC. A delivered message looks like this.
POST https://your-app.example.com/webhooks/mist
Content-Type: application/json
{
"topic": "location-asset",
"events": [
{
"site_id": "a1b2c3d4-0000-0000-0000-000000000000",
"map_id": "ward-3-floor-2",
"mac": "aabbccddeeff",
"type": "asset",
"x": 12.4,
"y": 7.8,
"timestamp": 1792300800
}
]
} The x and y are positions on the floor plan in metres, not GPS coordinates. Confirm the exact field names against the current Mist API before you code to them, because the wrapper shape can change between versions.
Streaming it live over WebSocket
For a live map, connect to the Mist WebSocket endpoint, authenticate with an API token, and subscribe to one floor's assets. Each floor plan is its own channel, so a multi-floor site means several subscriptions.
# Connect, then authenticate with your API token
wss://api-ws.mist.com/api-ws/v1/stream
Authorization: Token <your_api_token>
# Subscribe to the discovered assets on one floor plan
{ "subscribe": "/sites/<site_id>/stats/maps/<map_id>/discovered_assets" } Turning an event into an asset on the map
Your connector does two small jobs: look up the asset by its tag MAC, and store the latest position. Keep the handler fast, acknowledge the message, and do any heavy work after. The MAC-to-asset table is the one piece of state that makes the whole thing useful, so a screen to manage it is part of the build, not an afterthought.
// Minimal webhook receiver: map a Mist tag to one of your assets
app.post('/webhooks/mist', (req, res) => {
for (const e of req.body.events) {
const asset = assets.findByTagMac(e.mac); // your mapping table
if (!asset) continue; // unknown tag, skip
positions.upsert({
assetId: asset.id,
mapId: e.map_id,
x: e.x, y: e.y,
at: e.timestamp
});
}
res.sendStatus(200); // ack fast, process async
}); What you need in place before you start
The integration only works if the building runs Juniper Mist and the floor plans are set up correctly, so confirm this before you quote any work. The prerequisites split cleanly into what the site provides and what your team builds.
On the Mist side
- Juniper Mist Wi-Fi with Asset Visibility. The access points do the sensing, and the Asset Visibility service has to be turned on for the organisation.
- Floor plans, uploaded and scaled, with the access points placed. Mist reports position as x and y on the plan. If the plan is not scaled and the access points are not placed on it, the coordinates mean nothing.
- BLE tags with a static MAC. Juniper's guidance is a broadcast interval between 0.1 and 1 second and a transmit power of at least 0 dBm. If the MAC rotates, Mist cannot keep matching it to your named asset.
- An API token scoped to the site. This is what your connector uses to read the stream or to register the webhook.
On your side
- A connector that receives the webhook or reads the WebSocket, with reconnect and de-duplication handled.
- A mapping screen to link each tag MAC to an asset in your system.
- Storage for current position and location history, so you can answer "where is it now" and "where has it been".
- A floor-map view that staff actually use, with search by asset and a clear last-seen time.
Accuracy, latency and the limits to plan for
Mist gives you room-level location, not exact placement, and you should design the product around that. Juniper states a zonal accuracy of roughly 3 to 5 metres for BLE tags, so you will land staff in the right bay or room, not on the exact shelf. For finding a wandering infusion pump, that is enough. For "which of these two beds", it is not.
Latency is the other number to validate on site. An independent community test a few years ago saw about one position update every six seconds and roughly thirty seconds of lag behind real movement. We did not measure that, and Mist has changed since, so treat it as a rough guide and test it on the real floor before you promise a refresh rate to anyone. The honest line to a buyer is that this is near-real-time for finding things, not a precise live tracker for fast motion.
Where this fits with your EHR and asset software
Asset location is a layer that sits alongside your clinical systems, not inside them. Most teams feed these events into a maintenance system or an asset register, and some tie a location back to room and patient context. If you already run EHR integration or an Epic link, the Mist feed joins that picture rather than replacing it, and the same interoperability discipline applies: one source of truth per fact, clear ownership of the asset record, and events that can be replayed if a downstream system misses them.
Is Juniper Mist the right choice?
Mist is a strong choice when the building already runs Juniper Wi-Fi and the need is live indoor location, and a poor choice when neither is true. Here is the honest split.
Where it wins. You get live location on a map with no manual scanning, you reuse the access points already on the ceiling, and you work with standard Bluetooth tags from more than one vendor. The cloud does the hard location maths, and the API is clean enough to integrate in days once the floor plans are ready.
Where it costs you. It needs Juniper Mist Wi-Fi, which is a real spend if the site is on another vendor, so for a building that is not on Mist, RFID or a standalone BLE system is often cheaper. Accuracy is zonal, the tags use batteries that need managing, and the floor plans need keeping up to date as the building changes. If all you need is a nightly inventory count, this is more platform than the job calls for.
Thinking about building this? Our healthcare interoperability team has connected location, clinical and operational systems across hospitals, and our healthcare product engineering group builds the connector, the mapping screen and the map view that staff rely on. Talk to our team for an architecture review of your Mist asset-tracking integration, or to scope it as a fixed piece of work.
Ready to scale?
Talk to our healthcare engineering team about building, integrating, and shipping faster.
Frequently Asked Questions
Does Juniper Mist use RFID or Bluetooth for asset tracking?
How does data get from Juniper Mist into my software?
How accurate is Juniper Mist asset tracking?
What does a site need before this integration will work?
Do I need Juniper Wi-Fi, or can I use any access points?


