COPYRIGHTS & TRADEMARKS: For complete copyright and trademark information, go to www.zebra.com/copyright.
WARRANTY: For complete warranty information, go to www.zebra.com/warranty.
END USER LICENSE AGREEMENT: For complete EULA information, go to www.zebra.com/eula.
Terms of Use
Proprietary Statement
This manual contains proprietary information of Zebra Technologies Corporation and its subsidiaries (“Zebra
Technologies”). It is intended solely for the information and use of parties operating and maintaining the equipment
described herein. Such proprietary information may not be used, reproduced, or disclosed to any other parties for any other
purpose without the express, written permission of Zebra Technologies.
Product Improvements
Continuous improvement of products is a policy of Zebra Technologies. All specifications and designs are subject to
change without notice.
Liability Disclaimer
Zebra Technologies takes steps to ensure that its published Engineering specifications and manuals are correct; however,
errors do occur. Zebra Technologies reserves the right to correct any such errors and disclaims liability resulting therefrom.
Limitation of Liability
In no event shall Zebra Technologies or anyone else involved in the creation, production, or delivery of the accompanying
product (including hardware and software) be liable for any damages whatsoever (including, without limitation,
consequential damages including loss of business profits, business interruption, or loss of business information) arising out
of the use of, the results of use of, or inability to use such product, even if Zebra Technologies has been advised of the
possibility of such damages. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential
damages, so the above limitation or exclusion may not apply to you.
This guide describes the structure and data exchange format used by receivers for bootstrapping itself and sending and
receiving data to a server or gateway.
Receiver Initialization
The receiver, upon boot up, checks its internal flash to see if it has been initialized. If the initialization has been done before
then it uses that configuration for its operations. If the receiver has not been configured before then it does the following:
The receiver acts like a Wi-Fi client. It would try to join a Wi-Fi network with the following details:
•SSID: mpact_init
•Security Type: wpa2
•Security Key: mpact123.
Once the receiver has joined the Wi-Fi network successfully, it tries to connect to a webserver running at a specific IP
address and port.
•HTTP Server IP Address: 192.168.1.100
•HTTP Server Port: 8005.
The receiver performs an HTTP GET operation for bootstrap configuration file called
the bootstrap configuration are in the following sections.
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A representation of Receiver Filter Configuration.",
"type": "object",
"title": "Beacon filter configuration used by receivers. ",
"details": "Beacon filter configuration used by receivers. Attributes added for proximity
solutions",
"schemaVersion": "2.0.2",
"properties": {
"scanIntervalInMilliseconds": {
"type": "integer",
"description": "How often the receiver should scan for BLE beacons",
"minimum": 100,
"maximum": 1000
},
"wifiTransmissionInterval": {
"type": "integer",
"description": "How often the receiver should send scanned beacons to server. This is
time in milliseconds and is a multiple of scanIntervalInMilliseconds. For e.g. if scan interval is
200 and wifi transmission interval is 5 then wifi posts are done at every 200* 5 = 1000ms",
"minimum": 1,
"maximum": 20
},
7
"heartbeatIntervalInSeconds": {
"type": "integer",
"description": "How often the receiver should send heartbeat data to server.",
"minimum": 10,
"maximum": 3600
},
"bootTimeWaitInSeconds": {
"type": "integer",
"description": "How much time in seconds should receiver wait during boot process.",
"minimum": 0,
"maximum": 120
},
"timePullIntervalInMinutes": {
"type": "integer",
"description": "How often the receiver should pull time data from server and set its
local time.",
"minimum": 5,
"maximum": 600
},
"timeCompensationEnable": {
"type": "integer",
"description": "Enable or disable time compensation by the receiver. 0 means disable; 1
means enable.",
"minimum": 0,
"maximum": 1
},
JSON Schema for Receiver Operations
"timeCompensationRate": {
"type": "float",
"description": "Defines the convergence rate in the time compensation value calculation.
The time compensation value is calculated every time after the time pull from gateway. The time
compensation value is used to offset the time drift from MCU. Equation: new compensation value =
old value * (1.0-timeCompensationRate) + latest calculation * timeCompensationRate. If
timeCompensationRate is set to 0.0, the new value is always the same value from history, i.e. the
latest calculation does not have any effect. If set to 1.0, the new value is always based on the
latest calculation, i.e. the historical value does not consider in the new value calculation. The
default value for timeCompensationRate is 0.5. If more aggressive result is needed, set it to
higher than 0.5. Otherwise, set it to lower than 0.5. ",
"type": "string",
"description": "Name of proximity range.",
"minimum": 1,
"maximum": 32
},
"rssiHigh": {
"type": "integer",
"description": "High value of RSSI. Can provide null.",
"minimum": -128,
"maximum": 127
},
"rssiLow": {
"type": "integer",
"description": "Low value of RSSI. Can provide null.",
"minimum": -128,
"maximum": 127
},
"beaconHitCount": {
"type": "integer",
"description": "Beacon hit count in WIFI post interval. How many times a
beacon is seen across WIFI posts.",
"minimum": 1,
"maximum": 12
},
"sendClosestOnly": {
"type": "boolean",
"description": "A flag to indicate whether only the closest beacon per BLE
scan should sent. Closest is determined by RSSI value."
},
"suppressRepeats": {
"type": "boolean",
"description": "Suppress repeats. Flag to indicate whether a single instance
or multiple instances of a beacon should be sent."
},
"aggStrongestPerBeacon": {
"type": "boolean",
"description": "A flag to indicate whether to aggregate for strongest RSSI
per beacon for an aggregation interval. This is only done if aggregationIntervalSecs is set"
12
JSON Schema for Receiver Operations
},
"aggAveragePerBeacon": {
"type": "boolean",
"description": "A flag to indicate whether to compute and send average RSSI
per beacon for an aggregation interval. This is only done if aggregationIntervalSecs is set"
},
"aggApplyIIRFilter": {
"type": "boolean",
"description": "A flag to indicate whether to apply IIR filter, compute and
send filtered RSSI per beacon for an aggregation interval. This is only done if
aggregationIntervalSecs is set"
},
"aggSecondStrongestPerBeacon": {
"type": "boolean",
"description": "A flag to indicate whether to aggregate for second strongest
RSSI per beacon for an aggregation interval. This is only done if aggregationIntervalSecs is set.
Note second strongest could have same value as strongest"
}
}
}
}
},
"superBeaconProfiles": {
"description": "These filters are applied on the beacons seen by the SuperBeacon",