DevCon 2025: Connect | Learn | Build
June 4 - 6, 2025, Amsterdam, Netherlands
Understand Temperature Tracking for Cloud-Based Cold Chain Solutions
Presented by Steven Si, Senior Software Engineer
The Critical Role of Cold Chain Logistics
Value drivers exist in multiple industries and applications.
- $35 Billion: Annual pharmaceutical industry loss due to temperature-related issues.
- 48 Million: People in the U.S. affected by food-borne illness every year.
- 22% of 60 Million tons: Food wasted in the U.S. every year, lost after production and before consumption.
Electronic Sensors: Featuring the ZS300 and ZB200 models.
Visual & RFID Sensors
ZS300 Electronic Temperature Sensors
- Environmental Exposure Revealed via BLE and Cloud.
- Detects temperatures from -40°C to +85°C, transmits data via Zebra Bridge or Android™ to the cloud.
- Enables Real-Time responses to Temperature events throughout the Cold Chain (Transportation or Storage).
- Easily integrates with existing Transportation and Warehouse Management Systems.
Applications: Ice Cream, Poultry/Beef, Pharma/Biologics
ZS300 Electronic Sensing Architecture
Hardware
- ZS300 Sensors: Data logger
- ZB200 Bridges: Gateway
Android Mobile Apps
- ZBSetup: Configure bridge's Wi-Fi.
- ZSFinder: Software bridge (or gateway) running as background services. 3rd party apps communicate with the sensor via AIDL interface.
- ZSDemo: A demo app that uses the AIDL interfaces provided by ZSFinder.
API
- Management API: Enroll sensors, create tasks, add sensors to task, stop task, etc.
- Data Reporting API: Retrieve temperature data from the cloud.
- Event Subscription API: Register webhook for event notification.
The architecture involves Cloud App, Mobile App, Desktop App interacting with Zebra's Data Services via APIs, connecting to ZB200 Bridges and ZS300 Sensors via BLE and Wi-Fi/Wired connections.
ZS200 Sensors
Range: -40°C to +85°C (-40°F to 185°F)
Accuracy: ±0.3°C
Resolution: 0.01°C
QR Code
Contains BLE MAC Address, Serial Number & Model Number in URL format: http://www.zebra.com/apps/r/qr?mB=00:07:4D:CD:AF:6A&s=DLJ215100951&n=ZS300 DLJ215100951&c=ZS&v=0
LED (Red, Green & Yellow) Blink Patterns
- Yellow: Not on a task
- Yellow & Green: Delayed task start
- Red or Green: On a task with alarms or without alarms
Button
- Short Press: Check the sensor status via LED.
- Long Press (3 sec): Wake up the sensor from deep sleep. The sensor goes back to deep sleep after 3min if unassigned to a task.
ZS300 Sensor Diagram: Shows SN, QR Code, LED, and Button.
ZB200 Bridge
Connectivity: Wired, Wi-Fi, USB-C Power
- Wired: Ethernet Port, Precedence over Wi-Fi.
- Wi-Fi: 802.11 a/c
- Bluetooth Low Energy 4.1: For communicating with sensors & ZBSetup.
Button Functions
- Press (2 sec): Info LED blinks blue for ZBSetup app to configure the Bridge's Wi-Fi via BLE.
- Long press (>6 sec): Power off the Bridge. Reconnect USB to turn the Bridge back on.
- Forced FW Download Mode: Connect USB while pressing the button until Info and Tag Communication LEDs blink.
ZB200 Bridge Diagram: Shows connectivity status LEDs for Status, Tag Communication, Cloud, Ethernet, Wi-Fi, Positive, Negative, Warning, and Bluetooth Communication. Includes a BT Pairing Button.
Sensor Workflow Summary
A typical flow involves the following steps:
- Enroll sensors (POST /devices/sensor-enrollments)
- Create a task (POST /environmental/tasks)
- Add sensors to the task (POST /environmental/tasks/{taskID}/sensors)
- Stop the task (POST /environmental/tasks/{taskID}/stop)
- Get data log (GET /tasks/{taskID}/log)
Visual representation of the workflow using arrows connecting each step.
Electronic Temperature Sensors API
Access the API documentation at: https://developer.zebra.com/apis/electronic-temperature-sensors
API Services:
- Data Reporting for Electronic Temperature Sensors: Retrieve a Task's full data log.
- Electronic Temperature Sensors Android Service Token: Used to generate a service token for the Zebra Android app ZSFinder.
- Management for Electronic Temperature Sensors: Enroll a Sensor, Create a Task, Add Sensors to a Task, Stop Task.
- Webhook Subscription for Electronic Temperature Sensors: Setup webhook subscriptions to get alerted for temperature out-of-range events.
Electronic Temperature Sensors API Overview
- Management API: Interact and manage sensors.
- Data Reporting API: Retrieve data logs from the Data Lake. Data is saved in the Data Lake for 7 years.
- Event Subscription API: Subscribe for real-time notification and data updates.
- Android Service Token API: Required to run the ZSFinder app on an Android device. Daily quota: 5,000. Spike arrest rate: 7 calls per second.
API Subscriptions
Subscription Types | Features | Term |
---|---|---|
Developer Subscription Enables Developers to create their apps |
Unlimited API calls Access to Android™ Sensor Discovery Service Access to Sensors Management APIs Access to Data APIs Access to Alerts |
90 Days (Renewable for up to 6 months) |
SelfView Subscription Access Data from your Cloud |
Unlimited API calls Access to Android™ Sensor Discovery Service Access to Sensors Management APIs |
1 year / 3 years |
LogView Subscription Enables apps to operate from Zebra's cloud |
Unlimited API calls Access to Android™ Sensor Discovery Service Access to Sensors Management APIs Access to Data APIs |
1 year / 3 years |
EventView Subscription Enables apps to receive real-time Alerts from Zebra's cloud platform |
Unlimited API calls Access to Android™ Sensor Discovery Service Access to Sensors Management APIs Access to Data APIs Access to Alerts |
1 year / 3 years |
Get Started
To get an API Key:
- Create an account at https://developer.zebra.com/
- Reach out to sensorPM@zebra.com
Management APIs
- Included at No Charge.
- Enable Management of Sensors & Task Configuration.
- Enables retrieving Sensors Certificate of Calibration.
Task Management Endpoints:
- POST /environmental/tasks: Creates a new Task
- GET /environmental/tasks: Retrieves Tasks
- GET /environmental/tasks/{taskId}: Retrieves data for a Task
- POST /environmental/tasks/{taskId}/stop: Stops a Task
- GET /environmental/tasks/{taskId}/alarms: Retrieves alarms for a Task
- POST /environmental/tasks/{taskId}/sensors: Associates sensors with a Task
Environmental Devices Endpoints:
- GET /devices/environmental-sensors: Retrieves sensors associated with a tenant.
Devices Enrollment Endpoints:
- POST /devices/sensor-enrollments: Requests enrollment for a sensor.
Example: Creating a new task
curl -X 'POST' \
'https://api.zebra.com/v2/environmental/tasks' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{ ... }'
Response:
{
"id": "51f9b386-62d5-4867-9ba4-0e232936227e"
}
More details on Zebra DevPortal.
Data Reporting APIs
- Included in LogView and EventView subscriptions.
- Provides ability to securely query and retrieve data gathered by sensors.
Analytics and Reporting for Temperature Sensors:
GET /tasks/{taskId}/log: Retrieve sensor read events by task.
Example: Getting a tasks logs:
curl -X 'GET' \
'https://api.zebra.com/v2/data/environmental/tasks/MyTaskID/log?startTime=...&endTime=...' \
-H 'accept: application/json'
Response:
{
"results": [
{
"type": "beacon",
"event": {
"id": "6359fcb8-96a0-461c-90b1-07dbb002c063",
"timestamp": 1633359112806,
"deviceld": "bridge-id_or_phone-id",
"data": {},
"format": "beacon",
"id": "sensormac",
"value": "-2.06",
"rssi": -51
},
"analytics": {
"recorded Timestamp": 1633359112806,
"resourceld": "bridge-id_or_phone-id",
"tenant": "my_tenant",
"timestamp": 1633359112806,
"meta": {
"data": {
"taskld": "task id"
}
},
"coordinates": {
"global": {
"lat": 0,
"lng": 0
}
}
},
"decode": {
"temperature": {
"alert": true,
"deviation": 0.3,
"format": "celsius",
"taskld": "task id",
"sample": -2.06
}
}
}
]
}
More details on Zebra DevPortal.
Webhook Subscription API
- Included in EventView subscription.
- Allows subscribing to Temp. Excursion Alarms.
- NOTE: webhook listener required.
Event Subscription:
POST /subscription: Creates and starts a webhook subscription.
Manage Event Subscriptions:
- GET /subscription: Retrieves all subscriptions.
- POST /subscription/{subscriptionId}/stop: Stops a subscription.
- POST /subscription/{subscriptionId}/start: Starts a subscription.
Example: Creating a subscription:
{
"headers": {},
"apikey": "abc12345",
"tenant": "12345abc",
"taskIds":[
"449d226f3a1a4ad48e5c552831aa9334",
"629427d184744093a5dd3cd6b19c96b1"
],
"epcis": true,
"name": "The name of my new webhook subscription",
"webhookUrl": "https://hooks.myorganization.com/services/hooks/myendpoint",
"webhookVerb": "POST"
}
Response:
{
"subscription": {
"id": "B5JD07WPJ3BDVXRR"
}
}
More Details on Zebra DevPortal.
Electronic Temperature Sensors API (cont.)
REST (POST)
- Android Service Token API (Included in SelfView Subscription)
Required for running the ZSFinder app on an Android device.
Android Services Authentication:
POST /devices/credentials/token: Creates an authentication token.
The token can be passed to the ZSFinder app through either the app's UI or the AIDL interface.
A Simple Use Case
Typical Flow of Using Electronic Temperature Sensors:
- Enroll sensors
- Create a task
- Add sensors to the task
- Stop the task
- Get the data log of a task
Visual flow diagram showing the steps and corresponding API calls.
Resources
- ZB200 Bridges: https://www.zebra.com/us/en/products/temperature-monitoring-sensing/electronic-sensors/zb200.html
- ZS300 Sensors: https://www.zebra.com/us/en/products/temperature-monitoring-sensing/electronic-sensors/zs300.html
- Electronic Temperature Sensor API: https://developer.zebra.com/apis/electronic-temperature-sensors
- Get Started Developer Guide: https://developer.zebra.com/content/electronic-temperature-sensors-developer-guide
- Cold Chain Tracking with Zebra Electronic Temperature Sensors: https://developer.zebra.com/blog/cold-chain-tracking-zebra-electronic-temperature-sensors
Questions?
Thank You
ZEBRA and the stylized Zebra head are trademarks of Zebra Technologies Corp., registered in many jurisdictions worldwide. All other trademarks are the property of their respective owners. ©2025 Zebra Technologies Corp. and/or its affiliates. All rights reserved.