Quuppa Telemetry Interface
Jun 14 2023 at 12:00 AM
Introduction
Quuppa is the Real-Life Search Engine that keeps track of all your assets. Accurate and reliable location data enables streamlined operations, optimised processes, and improved safety. You will save time, effort, materials, and even lives. Quuppa Indoor Positioning offers a cutting-edge solution for companies in various industries. With highly accurate positioning, low maintenance and limitless expandability, our technology can help streamline operations, improve safety and enhance the customer experience. Quuppa solutions include:
- Industry
- Smart Office
- Logistics
- Healthcare
- Retail
- Safety and Security
- Sports
- Museums and Events
Figure 1 - Quuppa Logo (Source: https://www.quuppa.com)
For more information on Quuppa, visit their website by clicking on this link.
Aim
The original purpose of the driver was to monitor social distance between tag bearers during the Covid Pandemic. The driver would be configured to a certain distance and if tags would be closer than the specified distance, it would cause a warning event to be triggered. Since the original implementation, the purpose of the driver expanded to Asset tracking as well as “Zone Tracking”, which have the purpose to monitor the movements of tags within a specified environment. Quuppa currently supports:
- Asset Tracking
- Distance Monitoring
- Environment Monitoring
Approach
Quuppa uses locators and trackers (also known as tags) to monitor an environment which is given a unique identifier called the CoordinateSystemId. The Tags relay their information to the locators which is then passed on to a Quuppa API (also known as the QPE: Quuppa Positioning Engine). From here we can pull the Data using predefined Quuppa API calls. The data that is periodically captured from the Quuppa API is stored within internal caches that are periodically cleaned to support new data. The data caches are used to report data to the Commander platform.
Device Functionality Overview
The Quuppa Intelligent Locating System™ is a complete technology platform for location-based services and applications. It provides accurate real-time tracking for tags, devices and sensors.
At its core, the Quuppa system uses Locators to receive signals from Tags, and the Positioning Engine calculates the locations and relays the data. In addition, the system provides a comprehensive toolkit for planning, testing, configuring, installation, management, and integration with other systems.
The system features and functions are presented at different layers as shown in Figure 2.
Figure 2 - System Features and Functions Layers (Source: https://www.quuppa.com/products/)
Applications
Applications can range from simple tracking and monitoring solutions to complex systems that integrate with other IoT devices and platforms.
Using the Quuppa system as a foundation, Partners can offer their customers state-of-the-art technology solutions to enhance their operations and drive their business forward.
Cloud
Quuppa Site Manager (QSM) is an essential tool for Enterprise users who want to control all their Quuppa systems from a single web-based interface.
Quuppa Mobile Deployment Tool (QMD) simplifies system deployment and reduces the time and resources required for installation.
Quuppa Rules Engine allows users to create custom rules and actions based on data received from tags and sensors.
Quuppa Customer Portal is a web-based platform designed for Quuppa customers to manage their Quuppa systems and access various resources and support services.
Edge
Quuppa Positioning Engine (QPE) is the core software of the Quuppa Intelligent Locating System™. It receives data from the Locators, runs it through advanced positioning algorithms and provides a standard JSON / REST – push / pull API that allows seamless integration with other systems.
Quuppa Controller is an edge device preconfigured with the Quuppa Positioning Engine software and designed to connect to the Quuppa Site Manager. This enables secure, real-time, full-duplex communication between the Controller and the Site Manager.
Quuppa Lite is the perfect solution for use cases where precise location throughout the facility is not mandatory, but where reliable real-time presence detection is still required.
Data Gateway allows the Quuppa System to collect and transmit additional sensor data alongside location. This data can include information such as temperature, humidity, air quality and machinery status.
Network
Quuppa Locators act as the receiving units for the Quuppa Intelligent Locating System™. They receive signals from tags or other Bluetooth-enabled devices and send the data to the Quuppa Positioning Engine, which uses advanced proprietary algorithms to calculate the locations.
Quuppa Q-Port is a passive, Power over Ethernet (PoE) powered device that acts as a cable concentration unit for the Quuppa Locators. It allows for creating a star topology arrangement for the Locator network, which in turn simplifies infrastructure installation and management, significantly reduces cabling and lowers deployment costs, especially in larger areas.
Quuppa Q-Link is a wireless bridge that allows the Quuppa Locators to be connected to the network via the built-in Bluetooth connectivity option. This is particularly useful for extending the Quuppa system to areas where pulling Ethernet cables is not practical or possible, such as outdoors or other hard-to-reach locations.
Devices
The Quuppa system is compatible with various Bluetooth tags, devices and sensors.
The all-purpose tags, the QT1-1 and QT3-1, are small, lightweight tags with a button and LED, ideal for tracking assets or people. The QT1-1 has a battery life of up to three years, while the QT3-1 offers a battery life of up to ten years and is only slightly larger than the QT1-1.
Tools
Quuppa Site Planner (QSP) is a software tool that allows users to design, plan, deploy and configure their Quuppa systems. It helps users optimise Locator placement, achieve optimal coverage and accuracy, and evaluate the performance of their deployment.
Quuppa System Simulator (QSS) is a powerful tool that allows users to simulate and test their Quuppa systems in a virtual environment. It generates data equivalent to the data from the physical installation, allowing users to evaluate and optimise system performance and develop end-user applications in the early stages of the deployment process.
Quuppa Data Player (QDP) is a powerful tool for replaying recorded data and analysing system performance. The visualisation tools offered by the software, such as heat maps and spaghetti diagrams, allow users to gain valuable insight into tag or device movement, identify areas of high or low traffic, optimise Locator placement and evaluate system performance under different scenarios. By using these visualisation tools, users can improve the accuracy and coverage of their systems and better understand the behaviour of tags or devices within the system’s coverage area.
Figure 3 - Quuppa Data Player
Capability
The Quuppa Tracking system consists of Locators that track any tags within their operational range. A Quuppa integration consists of:
- Locators
- Tags
- Quuppa API - To store data accumulated by the Locators
Some integrations include:
- Asset Tracking
- People Tracking
- Social Distancing
Protocol Information
The Quuppa API keeps track of different data which is then cached on the V-Raptor driver. The cached data is pulled via different API calls, namely:
- getProjectInfo -> gets any data associated with the Coordinate System project. This involves mainly the floor plan integration. All the other calls are dependent on this API call to gather the relevant data per project.
- getTagData -> Gets any data relating to the Quuppa tags within the CoordinateSystem.
- getTagPosition -> Gets any data relating to the Tag Positions within the CoordinateSystem.
This driver implements the HTTP protocol.
When using the HTTP API calls, the following responses can be expected from the Quuppa API:
Project Info Response
{
"message": "ProjectData",
"responseTS": 1234567890,
"status": "Ok",
"coordinateSystems": [
{
"id": "4****l-be0f-1234-9c56-**********7",
"name": "*********",
"backgroundImages": [
{
"visible": true,
"metersPerPixelX": 0.04697139521958503,
"yMeter": -3.5306553911205074,
"otherCoordSys": "",
"origoY": 1184.8604017784367,
"metersPerPixelY": 0.04698794609880264,
"origoX": 106.4477641472148,
"xMeter": -5,
"id": "Identification***",
"base64": "data:image/png;base64",
"heightMeter": 59.20481208449133,
"rotation": 0,
"alpha": 1,
"widthMeter": 83.84394046695928
}
],
"zones": [
{
"locationLocked": false,
"id": "c*****73-b123-****-*678-90*******8",
"visible": true,
"color": "#ffffc800",
"name": "Testing Lab",
"polygonData": "25.13,15.04|25.09,10.28|32.49,10.26|32.49,15.00|25.13,15.04",
"polygonHoles": []
}
],
"polygons": [
{
"locationLocked": false,
"id": "5*3*****-w****7-4ea4-9**3-*******gh",
"visible": true,
"color": "#ff0000ff",
"name": "345ggggggg",
"trackingAreas": [
{
"minZ": 1.2000000476837158,
"track3d": false,
"id": "*****be**-y**9-****-8**8-f******23",
"name": "office"
}
],
"polygonData": "-5.00,-3.56|78.85,-3.53|78.83,55.67|-5.00,55.67|-5.00,-3.56",
"polygonHoles": []
}
],
"locators": [
{
"orientation": [
0.1588,
0,
0
],
"visible": true,
"location": [
41.7,
18.39,
3
],
"isOrientationSetManually": true,
"id": "****fgh****",
"locationLocked": true,
"associatedAreas": [
"********-***-0865-****-*******"
],
"locationLockedY": true,
"color": "#ff0000ff",
"locationLockedZ": true,
"locatorChannel": "Proprietary",
"name": "L001",
"locationLockedX": true,
"locatorType": "LD6L",
"notes": ""
}
]
}
],
"command": "http://123.**.*.**:0000/qpe/getProjectInfo?version=2",
"code": 0,
"version": "2.0"
}
Sample Tag Data Response
{
"tags": [
{
"tagId": "00001234567",
"tagName": null,
"color": "#FF0000",
"tagGroupName": "Named Tags",
"locationType": "position",
"locationRadius": 0.53,
"location": [
"58.26",
"33.54",
"1.20"
],
"locationMovementStatus": "moving",
"locationTs": 168605381576400,
"locationCoordSysId": "******-***f-****-9**9-********",
"locationCoordSysName": "********",
"locationZoneIds": [
"*******-0****-****-****e-********"
],
"locationZoneNames": [
"Charlie"
],
"batteryAlarm": "ok",
"button1LastPressTs": null,
"button1State": "notPushed",
"lastPacketTs": 168605381675600,
"rssi": 27.0,
"rssiLocatorCount": 11
},
{
"tagId": "01******",
"tagName": null,
"color": "#FF0000",
"tagGroupName": "Named Tags",
"locationType": "position",
"locationRadius": 0.4,
"location": [
"67.18",
"34.75",
"1.20"
],
"locationMovementStatus": "moving",
"locationTs": 1234567890123,
"locationCoordSysId": "******-****-****-****-**********",
"locationCoordSysName": "CoordSys001",
"locationZoneIds": [
"92*****f-0**d-4***-9***e-******",
"****e-***4-***c-****d-90******8"
],
"locationZoneNames": [
"Charlie",
"Bravo"
],
"batteryAlarm": "ok",
"button1LastPressTs": null,
"button1State": "notPushed",
"lastPacketTs": 168605381702800,
"rssi": 30.0,
"rssiLocatorCount": 11
}
],
"Code": 0,
"Status": "Ok",
"Message": "Tag data",
"Version": "1.0",
"ResponseTs": 168605381705900
}
Sample Tag Position Response
{
"message": "TagPosition",
"tags": [
{
"position": [
55.41,
18.48,
1.2
],
"id": "b*******a",
"covarianceMatrix": [
0.24,
0.04,
0.04,
0.2
],
"areaName": "office",
"color": "#FF0000",
"smoothedPosition": [
55.41,
18.48,
1.2
],
"name": null,
"smoothedPositionAccuracy": 0.16,
"coordinateSystemName": "C******",
"zones": [
{
"id": "*******-****-****-****-********",
"name": "Sales Area"
},
{
"id": "*******-****-****-****-***********",
"name": "Letitia's desk"
}
],
"positionTS": 1591620430711,
"coordinateSystemId": "*******-****-****-****-**********",
"areaId": "*******-****-****-****-*********",
"positionAccuracy": 0.15
},
{
"position": [
43.4,
18.33,
1.2
],
"id": "a*********h",
"covarianceMatrix": [
0.42,
-0.06,
-0.06,
0.23
],
"areaName": "office",
"color": "#FF0000",
"smoothedPosition": [
43.4,
18.33,
1.2
],
"name": null,
"smoothedPositionAccuracy": 0.2,
"coordinateSystemName": "C********",
"zones": [
{
"id": "*******-****-****-****-********",
"name": "IT Administration"
}
],
"positionTS": 1591620429887,
"coordinateSystemId": "*******-****-****-****-**********",
"areaId": "*******-****-****-****-*********",
"positionAccuracy": 0.2
}
],
"responseTS": 1591620437080,
"status": "Ok",
"command": "http://100.**.2.**:*****/qpe/getTagPosition?version=2",
"code": 0,
"version": "2.1"
}
Integrations Plan
Design Specifications
The Quuppa driver only uses HTTP API Calls to retrieve telemetry that is stored on the Quuppa API. The Data from the API calls is stored in a local cache that periodically updates to the latest telemetry that is retrieved from the Quuppa API. There are 4 different device types that are supported for this driver namely:
- Quuppa - Relays the location information of the tags.
- SocialEvents - Keeps track of the distance between tags.
- Zoning - Relays overall tag data per endpoint, endpoint device name being the TagId of the specific tag.
- ZoneGrouping - Relays tag location and movement status per group name in and RFID type object. Endpoint device name will be associated with the array of Group Names.
Here is a run down of the drivers device configuration
Device Configuration Options
Quuppa Device
{
"Devices": {
"IoTOffice": {
"Enabled": false,
"DeviceType": "Quuppa",
"GatewayId": "**********",
"GroupName": "Office",
"CoordinateSystemId": "********-****-****-****-**********",
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
"Debug": true
}
}
}
SocialEvents Device
{
"Devices": {
"SocialEvents": {
"Enabled": false,
"DeviceType": "SocialEvents",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Office",
"CoordinateSystemId": "******-****-****-****-**********"
}
}
}
Zoning Device
{
"Devices": {
"ZoningEvents": {
"Enabled": true,
"DeviceType": "Zoning",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Workshop",
"CoordinateSystemId": "******-****-****-****-**********",
"ActionDelay": 5000,
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
"Debug": true
}
}
}
ZoneGrouping Device
{
"Devices": {
"TagGroupingDevice": {
"Enabled": true,
"DeviceType": "ZoneGrouping",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Workshop",
"CoordinateSystemId": "******-****-****-****-**********",
"ActionDelay": 5000,
"TagGroupNames": ["Named Tags"],
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
"Debug": true
}
}
}
Device Configuration Definitions
Quuppa Device
Property Name | Description | Type | Default |
---|---|---|---|
QuuppaDevice | The device name for this device. This has to be specified. | string | - |
DeviceType | The value for this device is “Quuppa” | string | - |
Enabled | Whether this device is enabled. If set to False then the device will not be executed. Defaults to false. | bool | false |
GatewayId | The gateway identifier. If this is left blank, then the Gateway ID of the Collector Service will be used. | string | - |
GroupName | The group name of the device. | string | - |
ActionDelay | Time delay between each execution. Set this to zero (0) to use the general time delay defined in Task Scheduler Options. | int | - |
Debug | Sets whether debug logging is captured (Debug logs). | bool | false |
CoordinateSystemId | The coordinate system id to track. | string | - |
MapToImage | Whether the tag information should be mapped to a different image than the standard background image provided by Quuppa. | bool | false |
BackgroundTop | The top most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundLeft | The left most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundRight | The right most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundBottom | The bottom most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
ImagePath | The full path to the display image. This is used when QuuppaOptions.DebugExportImages property value is set to true. | string | - |
ImageWidth | The total width, in pixels, of the display image, including whitespace. | int | - |
ImageHeight | The height, in pixels, of the display image, including whitespace. | int | - |
LeftWhitespaceWidth | The width of the left most whitespace. | int | - |
RightWhitespaceWidth | The width of the right most whitespace. | int | - |
TopWhitespaceWidth | The width of the top most whitespace. | int | - |
BottomWhitespaceWidth | The width of the bottom most whitespace. | int | - |
Social Events Device
Property | Description | Type | Defaults |
---|---|---|---|
SocialEventsDevice | The device name for this device. This has to be specified. | string | - |
Enabled | Gets or sets whether this device is enabled. | bool | false???? |
DeviceType | Gets or sets the type of this device. To use the Social Events device, this has to be set to Social Events for this specific device to work | string | - |
GatewayId | Gets or sets the gateway identifier. | string | Leave this blank or null to use the collector’s service identifier. |
GroupName | Gets or sets the group name, if required. | string | - |
CoordinateSystemId | The identifier that is used to map the acquired data from the Quuppa API to [Required] | string | - |
Zoning Device
Property | Description | Type | Defaults |
---|---|---|---|
ZoningEvents | The device name for this device. This has to be specified | string | - |
Enabled | Gets or sets whether this device is enabled. | bool | false???? |
DeviceType | Gets or sets the type of this device. To use the Zoning device, this has to be set to Zoning for this specific device to work | string | - |
Debug | Gets or sets whether debug information is written to console/log file for this specific device | bool | false |
GatewayId | Gets or sets the gateway identifier. | string | Leave this blank or null to use the collector’s service identifier. |
GroupName | Gets or sets the group name, if required. | string | - |
CoordinateSystemId | The identifier that is used to map the acquired data from the Quuppa API to [Required] | string | - |
MapToImage | Whether the tag information should be mapped to a different image than the standard background image provided by Quuppa. | bool | false |
BackgroundTop | The top most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundLeft | The left most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundRight | The right most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundBottom | The bottom most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
ImagePath | The full path to the display image. This is used when QuuppaOptions.DebugExportImages property value is set to true. | string | - |
ImageWidth | The total width, in pixels, of the display image, including whitespace. | int | - |
ImageHeight | The height, in pixels, of the display image, including whitespace. | int | - |
LeftWhitespaceWidth | The width of the left most whitespace. | int | - |
RightWhitespaceWidth | The width of the right most whitespace. | int | - |
TopWhitespaceWidth | The width of the top most whitespace. | int | - |
BottomWhitespaceWidth | The width of the bottom most whitespace. | int | - |
ZoneGrouping Device
Property | Description | Type | Defaults |
---|---|---|---|
TagGroupingDevice | The device name for this device. This has to be specified | string | - |
Enabled | Gets or sets whether this device is enabled. | bool | false???? |
DeviceType | Gets or sets the type of this device. To use the TagGrouping device, this has to be set to TagGrouping for this specific device to work | string | - |
Debug | Gets or sets whether debug information is written to console/log file for this specific device. | bool | false |
GatewayId | Gets or sets the gateway identifier. | string | Leave this blank or null to use the collector’s service identifier. |
GroupName | Gets or sets the group name, if required. | string | - |
CoordinateSystemId | The identifier that is used to map the acquired data from the Quuppa API to [Required] | string | - |
TagGroupNames | An array of Tag Group Names within the Coordinate system | object: string array | - |
MapToImage | Whether the tag information should be mapped to a different image than the standard background image provided by Quuppa. | bool | false |
BackgroundTop | The top most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundLeft | The left most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundRight | The right most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
BackgroundBottom | The bottom most Y pixel coordinate of where the display image is on the background image. Note: Do not count whitespace in your calculations. | int | - |
ImagePath | The full path to the display image. This is used when QuuppaOptions.DebugExportImages property value is set to true. | string | - |
ImageWidth | The total width, in pixels, of the display image, including whitespace. | int | - |
ImageHeight | The height, in pixels, of the display image, including whitespace. | int | - |
LeftWhitespaceWidth | The width of the left most whitespace. | int | - |
RightWhitespaceWidth | The width of the right most whitespace. | int | - |
TopWhitespaceWidth | The width of the top most whitespace. | int | - |
BottomWhitespaceWidth | The width of the bottom most whitespace. | int | - |
QuuppaOptions (Additional JSON Configuration File)
{
"QuuppaOptions": {
"Servers": {
"IoTnxtOffice": {
"Enabled": true,
"ServerUrl": "http://123.4.5.6:*****/****/",
"UpdateInterval": 1000,
"TagTimeout": 30000,
"CacheItemAgeLimitMins": 10,
"Debug": true
},
"IoTnxtOfficeSecured": {
"Enabled": false,
"ServerUrl": "http://123.4.5.6:*****/****/",
"Authorization": "BasicAuth",
"UserName": "integration",
"Password": "**************",
"UpdateInterval": 1000,
"TagTimeout": 30000,
"CacheItemAgeLimitMins": 10,
"Debug": true
}
},
"AsyncLockTimeout": 10000,
"EnableSocialDistanceEvents": false,
"SocialDistanceMinimum": 2.0,
"SocialDistanceLevel": 2,
"MaxSocialDistanceTimeDifference": 10000,
"SocialDistanceEventTimeSpan": 30000,
"DebugExportImages": false,
"MaxDebugExportImageCount": 10
}
}
Quuppa Options Definitions
Property | Description | Type | Defaults |
---|---|---|---|
QuuppaOptions | Options used by each device instance that has been initialised. Examples of devicetypes(TagGrouping, Quuppa, Zoning and SocialEvents) | string | - |
IoTnxtOffice | The server name for this device. This has to be specified | string | - |
Enabled | Determines whether the server will be enabled or not. If it is set to true it will be enabled, and if set to false the server will not be enabled. | bool | - |
ServerUrl | The URL we are connecting to, to get data for that specific device. | string | - |
UpdateInterval | This is how frequently we update our caches according to the server URL. | int | - |
TagTimeout | This is the time frame from the first time we read if something went wrong, it is 30,000 milliseconds. | ||
So that will be a 30 second timer. | int | - | |
CacheItemAgeLimitMins | This is how long something will remain in the cache. If it exceeds 10 minutes, that specific item in the cache will be cleared. | int | - |
Debug | Sets whether debug logging is captured (Debug logs). | bool | - |
IoTnxt Office Secured Definitions
Property | Description | Type | Defaults |
---|---|---|---|
IoTnxtOfficeSecured | The server name for this device. This has to be specified | string | - |
Enabled | Determines whether the device will be enabled or not. If it is set to true it will be enabled, and if set to false the device will not be enabled. | bool | false |
ServerUrl | The URL we are connecting to, to get data for that specific device. | string | - |
Authorization | If you want a secured server connection, this is were you need to define what authorization you will be using. | string | - |
Username | The username to login and authorize access. | string | - |
Password | The password to login and authorize access. | string | - |
UpdateInterval | This is how frequently we update our caches according to the server URL. | int | - |
TagTimeout | This is the time frame from the first time we read if something went wrong, it is 30,000 milliseconds. | ||
So that will be a 30 second timer. | int | - | |
CacheItemAgeLimitMins | This is how long something will remain in the cache. If it exceeds 10 minutes, that specific item in the cache will be cleared. | int | - |
Debug | Sets whether debug logging is captured (Debug logs). | bool | false |
AsyncLockTimeout | Asynchronous timeout used for various calls. | int | 10 000 |
EnableSocialDistanceEvents | Checks for violations of social distances.This has to be set to true, so this will enable social distance monitoring between the tags. | bool | false |
SocialDistanceMinimum | The minimum allowed social distance, in meters. You can define the lowest parameter of how close two objects can be. So if two tags are closer than two meters, it will log a warning and it will fire an alarm. | int | 2 |
SocialDistanceLevel | The level of strictness of the social distance calculation. (2) Measured-Accuracy, (1) Measured, (0) Measured+Accuracy.This is an indicator determining how important social distancing is. | int | 1 |
MaxSocialDistanceTimeDifference | The maximum time difference, in milliseconds, between two location readings that social distance is considered valid. | int | 3 000 |
SocialDistanceEventTimeSpan | The amount of time the social distance event is highlighted. | int | 20 000 |
DebugExportImages | Checks whether debug images are exported for the locations. | bool | false |
MaxDebugExportImageCount | The maximum debug image count. | int | 10 |
Usage
Steps On How To Deploy And Configure The Driver
The link below demonstrates the steps to follow when a user deploys and configures a V-Raptor driver:
Deployment Manager Application
Device Configuration Example And Walkthrough
Here is an example config, with a walkthrough below it.
{
"Devices": {
"IoTOffice": {
"Enabled": false,
"DeviceType": "Quuppa",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Office",
"CoordinateSystemId": "******-****-****-****-**********",
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
"Debug": true
},
"SocialEvents": {
"Enabled": false,
"DeviceType": "SocialEvents",
"GatewayId": "r******-****-****-****-**********",
"GroupName": "Office",
"CoordinateSystemId": "******-****-****-****-**********"
},
"ZoningEvents": {
"Enabled": true,
"DeviceType": "Zoning",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Workshop",
"CoordinateSystemId": "******-****-****-****-**********",
"ActionDelay": 300000,\
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
},
"TagGroupingDevice": {
"Enabled": true,
"DeviceType": "ZoneGrouping",
"GatewayId": "******-****-****-****-**********",
"GroupName": "Workshop",
"CoordinateSystemId": "******-****-****-****-**********",
"ActionDelay": 300000,
"TagGroupNames": ["Named Tags"],
"ImagePath": "$data$/BackgroundImages/IoT.nxt_Office_1stFloor_Monitored.png",
"ImageWidth": 1920,
"ImageHeight": 1080,
"BackgroundLeft": 574,
"BackgroundTop": 486,
"BackgroundRight": 1398,
"BackgroundBottom": 993,
"LeftWhitespaceWidth": 220,
"RightWhitespaceWidth": 220,
"TopWhitespaceWidth": 75,
"BottomWhitespaceWidth": 75,
}
}
}
QuuppaDevice
- We want this device to be enabled, so we set ‘enabled’ to true.
- We want to make sure that we have the Quuppa device running, so we specify the ‘DeviceType’ as ‘Quuppa’.
- We want this driver to register each meter as its own gateway, so we set GatewayId to ‘Zoning’ meaning we will be expecting a routing key in Commander like this <Options.GatewayId>.<Options.GroupName>:<{DeviceDependent}>|<Options.DeviceType> -. This is where we will be sending the data to.
- We set the GroupName to ‘OFFICE’ (because we want a specific gateway path in Commander).
- CoordinateSystemId, we set this to the coordinate system we are targeting.
- We load an image into the configuration and define the image path. Parameters used for coordinate normalization are set because for it to work on Commander, all the coordinates have to be normalized from zero to one scale.
- Set the coordinate normalization properties which encompasses ImageWidth, ImageHeight, BackgroundLeft, BackgroundTop, BackgroundRight, BackgroundBottom, LeftWhitespaceWidth, RightWhitespaceWidth, TopWhitespaceWidth, BottomWhitespaceWidth.
- We want to see the device logging, so we set ‘Debug’ to true. Note - logging still needs to be turned on via the config ‘Logging.json’.
SocialEvents
- We want this device to be enabled, so we set ‘enabled’ to true.
- We want to make sure that we have the Quuppa device running, so we specify the ‘DeviceType’ as ‘Quuppa’.
- We want this driver to register each meter as its own gateway, so we set GatewayId to ‘Zoning’ meaning we will be expecting a routing key in Commander like this <Options.GatewayId>.<Options.GroupName>:<{DeviceDependent}>|<Options.DeviceType> -. This is where we will be sending the data to.
- We set the GroupName to ‘OFFICE’ (because we want a specific gateway path in Commander).
- CoordinateSystemId, we set this to the coordinate system we are targeting.
ZoningEvents
- We want this device to be enabled, so we set ‘enabled’ to true.
- We want to make sure that we have the Quuppa device running, so we specify the ‘DeviceType’ as ‘Quuppa’.
- We want this driver to register each meter as its own gateway, so we set GatewayId to ‘Zoning’ meaning we will be expecting a routing key in Commander like this <Options.GatewayId>.<Options.GroupName>:<{DeviceDependent}>|<Options.DeviceType> -. This is where we will be sending the data to.
- We set the GroupName to ‘WORKSHOP’ (because we want a specific gateway path in Commander).
- CoordinateSystemId, we set this to the coordinate system we are targeting.
- We want this device to match meter readings every 5min, so we set the ActionDelay to 300000ms.
- We load an image into the configuration and define the image path. Parameters used for coordinate normalization are set because for it to work on Commander, all the coordinates have to be normalized from zero to one scale.
- Set the coordinate normalization properties which encompasses ImageWidth, ImageHeight, BackgroundLeft, BackgroundTop, BackgroundRight, BackgroundBottom, LeftWhitespaceWidth, RightWhitespaceWidth, TopWhitespaceWidth, BottomWhitespaceWidth.
TagGroupingDevice
- We want this device to be enabled, so we set ‘enabled’ to true.
- We want to make sure that we have the Quuppa device running, so we specify the ‘DeviceType’ as ‘Quuppa’.
- We want this driver to register each meter as its own gateway, so we set GatewayId to ‘Zoning’ meaning we will be expecting a routing key in Commander like this <Options.GatewayId>.<Options.GroupName>:<{DeviceDependent}>|<Options.DeviceType> -. This is where we will be sending the data to.
- We set the GroupName to ‘WORKSHOP’ (because we want a specific gateway path in Commander).
- CoordinateSystemId, we set this to the coordinate system we are targeting.
- We want this device to match meter readings every 5min, so we set the ActionDelay to 300000ms.
- TagGroupNames, array of Tag Group Names within the Coordinate system. This will group tags via their group name. Tracking endpoints will be sent based on the Group names defined here.
- We load an image into the configuration and define the image path. Parameters used for coordinate normalization are set because for it to work on Commander, all the coordinates have to be normalized from zero to one scale.
- Set the coordinate normalization properties which encompasses ImageWidth, ImageHeight, BackgroundLeft, BackgroundTop, BackgroundRight, BackgroundBottom, LeftWhitespaceWidth, RightWhitespaceWidth, TopWhitespaceWidth, BottomWhitespaceWidth.
Routing Logic
SocialEvents Device
deviceInfo.SetGatewayId(Options.GatewayId);
deviceInfo.SetDeviceName(Options.DeviceName);
deviceInfo.SetDeviceType(Options.DeviceType);
deviceInfo.SetGroupName(Options.GroupName);
Quuppa Device
deviceInfo.SetGatewayId(Options.GatewayId);
deviceInfo.SetDeviceName(coordinateSystemId);
deviceInfo.SetDeviceType(DeviceType);
deviceInfo.SetGroupName(Options.GroupName);
Zoning Device
deviceInfo.SetGatewayId(Options.GatewayId);
deviceInfo.SetDeviceName(tag.Id);
deviceInfo.SetDeviceType(DeviceType);
deviceInfo.SetGroupName(Options.GroupName);
TagGrouping Device
deviceInfo.SetGatewayId(Options.GatewayId);
deviceInfo.SetDeviceName(groupName);
deviceInfo.SetDeviceType(DeviceType);
deviceInfo.SetGroupName(Options.GroupName);
Each group within the Group Array object will have their own dedicated endpoint which contains a collection of tags that is set up in a RFID format.
External References
Figure 4 - Coordinate Mapping
For more information on Quuppa, visit their website by clicking on this https://www.quuppa.com/.
Release Notes
Version | Description | Release Date |
---|---|---|
4.0.49.1-alpha-2306111701 | Enhancement: Zoning + Tag Grouping | 2023-06-28 (QA approval pending) |