Kontakt.IO IOT Sensor Integration

Overview:

Kontakt.io are a provider of ‘smart’ BLE tags/sensors.

They provide two main types of device:

  • “Smart Badge A mobile tag, typically used for people tracking. The tag has 2 buttons and an IR sensor able to sense a room number transmitted by Portal Beams in rooms.
  • ‘Portal Beam’ A static typically attached to ceilings, able to report:
  • Counts/locations of IR sensed occupancy data
  • Environmental information (light intensity, air quality, temperature, pressure …)
  • It also has an IR transmitter able to send a room number to smart badges

In addition, they can provide dedicated asset tags and WiFi - BLE ‘gateways’ called Portal Lights.

The BLE devices can all be used with their own BLE gateways or also with BLE gateways on Meraki and Cisco APs.

Regardless of the gateway type used the data arrives in the Kontakt.IO cloud and is then available for processing/forwarding.

The main functions they provide are:

  • Occupancy – de-duplicated counts of devices and/or people in rooms using the IR sensors. They provide functionality to deduplicate counts between multiple Portal Beams and can track down to seat occupancy with suitable setup.
  • Position – location of BLE tags based on trilateration. One extra function they provide is the ability to determine which room a badge is in based on the IR sensor on the badge ‘seeing’ a portal beam and getting a room number. Since this information is available from the Telemetry feed and we do our our trilateration, we don’t need this feed setup.

Data feeds containing this information along with a raw BLE tag telemetry stream can be sent from the Kontakt.io cloud to AWS Kinesis. Our integration sets up and subscribes to this Kinesis feed

Integration

We have integrated the following features, based on the Kinesis data streams:

  • BLE tag presence and trilateration (similar to existing functionality).
  • ‘Smart Tag` button and room number reporting support
  • Portal Beam environmental data reporting.

In addition, we will follow up with IR based room occupancy reporting.

Configuration:

The following needs to be configured:

AWS:

  • Create an AWS Kinesis stream.

  • Create an AWS User with Access Key access and the following permission policy:

    { “Version”: “2012-10-17”, “Statement”: [ { “Sid”: “VisualEditor0”, “Effect”: “Allow”, “Action”: [ “kinesis:DeregisterStreamConsumer”, “kinesis:SubscribeToShard”, “kinesis:DescribeStreamConsumer” ], “Resource”: “arn:aws:kinesis:us-west-2:xxx:stream/test-stream/consumer/*” }, { “Sid”: “VisualEditor1”, “Effect”: “Allow”, “Action”: [ “kinesis:DeregisterStreamConsumer”, “kinesis:SubscribeToShard”, “kinesis:DescribeStreamConsumer”, “kinesis:PutRecord”, “kinesis:DescribeStreamSummary”, “kinesis:SplitShard”, “kinesis:MergeShards”, “kinesis:PutRecords”, “kinesis:GetShardIterator”, “kinesis:GetRecords”, “kinesis:DescribeStream”, “kinesis:ListStreamConsumers”, “kinesis:RegisterStreamConsumer”, “kinesis:ListTagsForStream” ], “Resource”: “arn:aws:kinesis:us-west-2:xxx:stream/test-stream” }, { “Sid”: “VisualEditor2”, “Effect”: “Allow”, “Action”: “kinesis:ListShards”, “Resource”: “arn:aws:kinesis:us-west-2:xxx:stream/test-stream” } ] }

Note that the Resource ARN needs to specified for both Consumers and the stream itself.

  • The BLE and IOT stream processing jobs need to be running on KloudInsights

Configure the integration in Configuration -> Event Processing -> IOT/Rules

You will need the AWS information, as well as your Kontakt.IO API key. When configurated the integration will set up the Kinesis channel in Kontakt.IO and configure it to send data.

Setup

The final step is to configure the badges, sensors etc in Kloudinsights:

Note that you can download lists of Kontakt.IO devices, smart badges and locations to help with this task:

  1. Upload BLE Tag information in the ‘Devices’ screen – you can assign user names, emails etc.
  2. Add the Portal Beams as environment sensors in Configuration -> Locations. Note that use the ‘name’ of the beam as the name of the EnvSensor.
  3. Add the gateways as ‘APs’, using there MAC addresses.
  4. For each mapped zone, add the ‘roomNumber’ from the location.csv as an external identifier.