Zebra Zebra Bluetooth Low Energy Devices MPACT JSON Schema for Receiver Operations

MPACT
JSON Schema for Receiver Operations
MN-003388-01EN
JSON Schema for Receiver Operations

Copyright

© 2020 ZIH Corp. and/or its affiliates. All rights reserved. ZEBRA and the stylized Zebra head are trademarks of ZIH Corp., registered in many jurisdictions worldwide. All other trademarks are the property of their respective owners.
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.
2
JSON Schema for Receiver Operations

Table of Contents

Copyright - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2 Terms of Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2
Proprietary Statement - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 Product Improvements - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2 Liability Disclaimer - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2
Limitation of Liability - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -2 Table of Contents - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -3 Introduction - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 Receiver Initialization - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 JSON Schema For Receiver Bootstrap Configuration - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -4 Sample Receiver Bootstrap configuration JSON - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6 JSON Schema For Receiver Filter Configuration - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -7 Sample Receiver Filter Configuration JSON Without SuperBeacon Filters - - - - - - - - - - - - - - -16 Sample Receiver Filter Configuration JSON With SuperBeacon Filters - - - - - - - - - - - - - - - - - -17 Sample Receiver Filter Configuration JSON With Receiver Broadcast - - - - - - - - - - - - - - - - - -18 Sample Receiver Filter Configuration With Reboot And WifiNetwork Settings - - - - - - - - - - - - -20 Sample Receiver Filter Configuration With Aggregation Data Settings - - - - - - - - - - - - - - - - - -21 JSON Schema For Beacon Data Events - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -23 Sample Beacon Data Events JSON For GE Mobile Receiver (GE-MB6000) - - - - - - - - - - - - - -25 Sample Beacon Data Events JSON For GE Fixed Receiver (GE-MB5000) - - - - - - - - - - - - - - -26 Sample Beacon Data Events JSON For MPACT Fixed Receiver (MPACT-MB5000) - - - - - - - -27 Sample Beacon Data Events JSON For Virtual Mobile Receiver (vMR Android) - - - - - - - - - - -28 Sample Beacon Data Events JSON For Virtual Mobile Receiver (vMR IOS) - - - - - - - - - - - - - -29 Sample Beacon Data Events JSON For MPACT Receiver With SuperBeacon Data - - - - - - - -30 Sample Beacon Data Events JSON For MPACT Receiver With SuperBeacon Data And Delay Time - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -32 Sample Beacon Data Events JSON For VMR Android With SuperBeacon Data - - - - - - - - - - -33 Sample Beacon Data Events JSON For VMR iOS With SuperBeacon Data - - - - - - - - - - - - - -35 JSON Schema For Health Events - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -36 Fixed Receiver Sample Health Heartbeat JSON - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -38 Mobile Receiver Sample Health Heartbeat JSON - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -38 Mobile Receiver Sample Health Heartbeat JSON With Version - - - - - - - - - - - - - - - - - - - - - - -38 Mobile Receiver Sample Health Heartbeat JSON With WIFI Details - - - - - - - - - - - - - - - - - - - -39 Mobile Receiver Sample Health Heartbeat JSON With Battery Details - - - - - - - - - - - - - - - - - -39 VMR Android Heartbeat JSON - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -40 VMR IOS Heartbeat JSON - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -40 JSON Schema For Time Request Response For Servers - - - - - - - - - - - - - - - - - - - - - - - - - - -40 Sample Response For Time Request - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -41
3
JSON Schema for Receiver Operations

Introduction

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.
badge_config.json. The details of

JSON Schema For Receiver Bootstrap Configuration

{
"$schema": "http://json-schema.org/draft-04/schema#",
"description": "A representation of Receiver Bootstrap Configuration.",
"type": "object",
"title": "Bootstrap configuration schema used by receivers.",
"properties": {
"wifiProfiles": {
"type": "array", "required": ["ssid", "securityKey", "securityType", "enable"], "optional": ["wpaEnterpriseUser", "wpaEnterprisePassword", "eapType",
"wpaEnterpriseOuterIdentity"],
"minItems": 1, "maxItems": 4, "items": {
"ssid": {
"type": "string", "description": "SSID for receiver to connect to. ", "minimum": 4,
"maximum": 32 }, "securityKey": {
"type": "string",
"description": "SSID password. ",
"minimum": 2,
"maximum": 63 }, "securityType": {
"type": "string",
4
}, "_useNetPing": {
}, "gatewayConfigs": {
"enable"],
JSON Schema for Receiver Operations
"description": "Security Type.",
"minItems": 1,
"maxItems": 1,
"enum": [
"wpatkip_psk", "wpa_tkip", "wpatkip", "wpaaes_psk", "wpaaes", "wpa", "wpamixed_psk", "wpa2tkip_psk", "wpa2_tkip", "wpa2tkip", "wpawaes_psk", "wpa2aes", "wpa2", "wpa2mixed_psk", "wpatkip_ent", "wpaaes_ent", "wpamixed_ent", "wpa2tkip_ent", "wpa2aes_ent", "wpa2mixed_ent", "open", "wep", "wpa2_fbt"
] }, "wpaEnterpriseUser": {
"type": "string",
"description": "WPA Enterprise user name ",
"minimum": 4,
"maximum": 32 }, "wpaEnterprisePassword": {
"type": "string",
"description": "WPA Enterprise password ",
"minimum": 1,
"maximum": 32 }, "eapType": {
"type": "string",
"description": "EAP Type.",
"minItems": 1,
"maxItems": 1,
"enum": [
"peap"
] }, "enable": {
"type": "boolean",
"description": "Enable/Disable the WIFI profile " }, "wpaEnterpriseOuterIdentity": {
"type": "string",
"description": "Outer Identity password ",
"minimum": 0,
"maximum": 32 }
}
"type": "integer", "description": "0 – default, 1 – Enables Ping check of Gateway"
"type": "array", "required": ["user", "password", "receiverConfigURL", "configPullFrequencyInMins",
"minItems": 1, "maxItems": 4, "items": {
"user": {
5
JSON Schema for Receiver Operations
"type": "string",
"description": "User name to access receiver configuration.",
"minimum": 1,
"maximum": 32 }, "password": {
"type": "string",
"description": "Password to access receiver configuration. ",
"minimum": 1,
"maximum": 32 }, "receiverConfigURL": {
"type": "string",
"description": "URL to pull receiver configuration. ",
"minimum": 2,
"maximum": 256 }, "configPullFrequencyInMins": {
"type": "integer",
"description": "Frequency in minutes to pull receiver configuration ",
"minimum": 1 }, "enable": {
"type": "boolean",
"description": "Enable/Disable the WIFI profile " }
}
} }, "optional": ["_useNetPing"], "required": ["wifiProfiles", "gatewayConfigs"]
}

Sample Receiver Bootstrap configuration JSON

{
"wifiProfiles": [{
"ssid": "Test5AP7532", "securityKey": "5>\/NK5MogOc6lrt}m3\\:dN\/rbR:zzpyIGy5niZqVh\"A~W5.h<},2b2?T'?w'Xf2", "securityType": "wPA2", "wpaEnterpriseUser": "", "wpaEnterprisePassword": "", "eapType": "", "enable": true
}, {
"ssid": "Cisco_WPA2_FT_PSK_AES_63", "securityKey": "Abc123456789012345678901234567890123456789012345678901234567890", "securityType": "wpa2_fbt", "wpaEnterpriseUser": "", "wpaEnterprisePassword": "", "wpaEnterpriseOuterIdentity": "", "eapType": "",
"enable": false }, {
"ssid": "Cisco_WPA2_PSK_AES_63",
"securityKey": "Abc123456789012345678901234567890123456789012345678901234567890",
"securityType": "wpa2",
"wpaEnterpriseUser": "",
"wpaEnterprisePassword": "",
"wpaEnterpriseOuterIdentity": "",
"eapType": "",
"enable": false },
6
JSON Schema for Receiver Operations
{
"ssid": "Cisco_WPA2_ENT_NORMAL",
"securityKey": "Unused",
"securityType": "wpa2",
"wpaEnterpriseUser": "exact32",
"wpaEnterprisePassword": "Aa123456789012345678901234567890",
"wpaEnterpriseOuterIdentity": "abcdefg",
"eapType": "peap",
"enable": false }, {
"ssid": "Cisco_WPA2_ENT_FT",
"securityKey": "mpact123",
"securityType": "wpa2_fbt",
"wpaEnterpriseUser": "exact32",
"wpaEnterprisePassword": "Aa123456789012345678901234567890",
"wpaEnterpriseOuterIdentity": "abcdefg",
"eapType": "peap",
"enable": false }
], "gatewayConfigs": [{
"user": "user", "password": "scarlet", "receiverConfigURL":
"http://10.76.3.129:9200/scarlet/gateway/config/v1/receiver?org=SC_ZEBRA&facility=SC_ZEBRA_SAN_JOS E",
"configPullFrequencyInMins": 15, "enable": false
}, {
"user": "superuser", "password": "mpact123", "receiverConfigURL": "http://10.21.201.23:8005/stats/ReceiverConfig.json", "configPullFrequencyInMins": 15, "enable": true
}]
}

JSON Schema For Receiver Filter Configuration

{
"$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. ",
"minimum": 0.0,
"maximum": 1.0 }, "discardDataAfterTransmissionFailures": {
"type": "integer",
"description": "Discard beacon data after this number of consecutive data post failures",
"minimum": -1,
"maximum": 4096 }, "version": {
"type": "string",
"description": "Version of Configuration",
"minimum": 1,
"maximum": 32 }, "sendBatteryDetails": {
"type": "boolean",
"description": "Enable or disable battery details (for units with battery) to be sent to
server as part of heartbeat event. Default is false."
},
"beaconWhiteList": {
"type": "array",
"required": ["uuid", "type"],
"minItems": 1,
"maxItems": 16,
"items": {
"uuid": {
8
JSON Schema for Receiver Operations
"type": "string", "description": "UUID of beacon. Case insensitive. Requires hyphen as separator.", "minimum": 36,
"maximum": 36 }, "type": {
"type": "array",
"description": "Beacon type.",
"minItems": 1,
"maxItems": 1,
"enum": [
"mpact", "ibeacon"
] }
} }, "wifiNetwork": {
"type": "object",
"properties": {
"sendWifiDetails": {
"type": "boolean", "description": "Enable or disable WIFI details to be sent to server as part of
heartbeat event. Default is false."
}, "wifiNetworkCheckFreqMins": {
"type": "integer", "description": "WIFI Network check frequency in minutes. Default is 1 minute.", "minimum": 1, "maximum": 10
} }, "optional": ["sendWifiDetails", "wifiNetworkCheckFreqMins"]
}, "reboot": {
"type": "object", "properties": {
"consecutiveReinitWifiFailures": {
"type": "integer", "description": "Number of consecutive failures to re-initialize WIFI before unit
reboot",
"minimum": 2,
"maximum": 500 }, "consecutiveHeartBeatFailures": {
"type": "integer",
"description": "Number of consecutive heartbeat post failures ",
"minimum": 3,
"maximum": 1000 }
},
"optional": ["consecutiveReinitWifiFailures", "consecutiveHeartBeatFailures"] }, "serviceUrls": {
"type": "object",
"properties": {
"timeService": {
"type": "string", "description": "URL of the service that receiver uses to request time", "minimum": 8,
"maximum": 256 }, "eventService": {
"type": "string",
"description": "URL of the service to post events.",
"minimum": 8,
9
JSON Schema for Receiver Operations
"maximum": 256 }, "healthService": {
"type": "string",
"description": "URL of the service to post health data.",
"minimum": 8,
"maximum": 256 }, "firmwareService": {
"type": "string",
"description": "URL of the service to pull firmware.",
"minimum": 8,
"maximum": 256 }, "configService": {
"type": "string",
"description": "URL of the configuration service to pull receiver filter
configuration.",
"minimum": 8,
"maximum": 256 }
}, "required": ["timeService", "eventService", "healthService"],
"optional": ["configService", "firmwareService"] }, "serviceUrlsHostName": {
"type": "object",
"properties": {
"timeService": {
"type": "string", "description": "URL of the service that receiver uses to request time. URL can have
hostname.",
"minimum": 8,
"maximum": 256 }, "eventService": {
"type": "string",
"description": "URL of the service to post events. URL can have hostname.",
"minimum": 8,
"maximum": 256 }, "healthService": {
"type": "string",
"description": "URL of the service to post health data. URL can have hostname.",
"minimum": 8,
"maximum": 256 }, "firmwareService": {
"type": "string",
"description": "URL of the service to pull firmware. URL can have hostname.",
"minimum": 8,
"maximum": 256 }, "configService": {
"type": "string",
"description": "URL of the configuration service to pull receiver filter
configuration. URL can have hostname.",
"minimum": 8,
"maximum": 256 }
}, "required": ["timeService", "eventService", "healthService"],
"optional": ["configService", "firmwareService"] }, "firmware": {
"type": "object",
10
JSON Schema for Receiver Operations
"properties": {
"donwloadInSecond": {
"type": "boolean",
"description": "We need description for this" }, "firmwareDownloadDebug": {
"type": "boolean",
"description": "We need description for this" }, "fileName": {
"type": "string",
"description": "Badge/Hub Firmware file name old format.",
"minimum": 16,
"maximum": 256 }, "gaugeFirmware": {
"type": "string",
"description": "Gauge Firmware file name.",
"minimum": 16,
"maximum": 256 }, "wifiFirmware": {
"type": "string",
"description": "WIFI Firmware file name.",
"minimum": 16,
"maximum": 256 }, "bleFirmware": {
"type": "string",
"description": "BLE Firmware file name.",
"minimum": 16,
"maximum": 256 }, "bootloader": {
"type": "string",
"description": "Bootloader Firmware file name.",
"minimum": 16,
"maximum": 256 }, "mainFirmware": {
"type": "string",
"description": "Badge/Hub Firmware new format.",
"minimum": 16,
"maximum": 256 }
}, "required": ["downloadInSecond", "fileName"], "optional": ["firmwareDownloadDebug", "gaugeFirmware", "bootloader", "bleFirmware",
"wifiFirmware", "mainFirmware"]
}, "profiles": {
"type": "array", "required": ["profileLow", "profileHigh", "name", "sendClosestOnly", "suppressRepeats"], "optional": ["beaconType", "aggStrongestPerBeacon", "aggAveragePerBeacon",
"aggApplyIIRFilter", "aggSecondStrongestPerBeacon"],
"minItems": 1, "maxItems": 16, "items": {
"name": {
"type": "string",
"description": "Name of profile.",
"minimum": 1,
"maximum": 32 }, "beaconType": {
"type": "string",
11
JSON Schema for Receiver Operations
"description": "Beacon type.",
"minItems": 1,
"maxItems": 1,
"enum": [
"Mobile", "Fixed"
]
}, "profileLow": {
"type": "integer",
"description": "Minor number",
"minimum": 0,
"maximum": 99999 }, "profileHigh": {
"type": "integer",
"description": "Major number",
"minimum": 0,
"maximum": 99999 }, "proximityRanges": {
"type": "array",
"required": ["rssiLow", "rssiHigh", "name"],
"minItems": 1,
"maxItems": 16,
"items": {
"name": {
"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",
"type": "array",
"required": ["profileLow", "profileHigh", "name"],
"minItems": 1,
"maxItems": 4,
"items": {
"name": {
"type": "string", "description": "Name of profile.", "minimum": 1,
"maximum": 32 }, "profileLow": {
"type": "integer",
"description": "Minor number",
"minimum": 0,
"maximum": 65535 }, "profileHigh": {
"type": "integer",
"description": "Major number",
"minimum": 0,
"maximum": 65535 }, "proximityRanges": {
"type": "array",
"required": ["rssiLow", "rssiHigh", "name"],
"minItems": 1,
"maxItems": 16,
"items": {
"name": {
"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 },
13
Loading...
+ 29 hidden pages