# Kontakt.io

## Eliona app for Kontakt.io - Digital building solutions

*Kontakt.io* manufactures intelligent IoT devices, cloud solutions, and powerful APIs that help turn buildings into indoor spaces useful to people on their daily journey toward achieving their goals, at work or in care, in a safe and sustainable indoor environment.

## Installation

The app *Kontakt.io* can be installed via the App Store in Eliona.

## Assets

*Kontakt.io* automatically creates all necessary asset types and assets that are accessible via the configured endpoints. The following asset types are created:

* *Day*: Any type of BLE smart tag that indicates location.
* *Badge*: A Smart Badge or Asset Tag 2 that indicates location like a tag, but has a temperature sensor and two buttons (not yet implemented).
* *Beacon*: Beacons capture the locations of tags and badges and provide information about air quality.
* *Portal Beam*: Like Beacons, but also counts the number of people in the room.

The following attributes are defined:

<table><thead><tr><th width="224">Attributes</th><th width="157">Description</th><th width="40">Day</th><th>Badge</th><th>Beacon</th><th>Portal Beam</th><th>Filterable</th></tr></thead><tbody><tr><td><code>position</code></td><td>Position</td><td>x</td><td>x</td><td></td><td></td><td></td></tr><tr><td><code>temperature</code></td><td>Temperature</td><td></td><td>x</td><td>x</td><td>x</td><td></td></tr><tr><td><code>air_pressure</code></td><td>Air pressure</td><td></td><td></td><td>x</td><td>x</td><td></td></tr><tr><td><code>humidity</code></td><td>Humidity</td><td></td><td></td><td>x</td><td>x</td><td></td></tr><tr><td><code>light_intensity</code></td><td>Light intensity</td><td></td><td></td><td>x</td><td>x</td><td></td></tr><tr><td><code>air_quality</code></td><td>Air quality</td><td></td><td></td><td>x</td><td>x</td><td></td></tr><tr><td><code>people_count</code></td><td>People count</td><td></td><td></td><td></td><td>x</td><td></td></tr><tr><td><code>firmware</code></td><td>Firmware version</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td><code>model</code></td><td>Model of the device</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td><code>battery_level</code></td><td>Battery level</td><td>x</td><td>x</td><td>x</td><td>x</td><td>x</td></tr><tr><td><code>product</code></td><td>Product name</td><td></td><td></td><td></td><td></td><td>x</td></tr><tr><td><code>name</code></td><td>Name in Kontakt.io</td><td></td><td></td><td></td><td></td><td>x</td></tr></tbody></table>

## Dashboards

*Kontakt.io* provides a dashboard with all automatically created assets. This can be created automatically via the Eliona frontend `Copy Dashboard > Kontakt.io` and then customized as desired.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/l0rZmQHxgYxzzyK6kber/image.png" alt=""><figcaption></figcaption></figure>

## Configuration

{% hint style="info" %}
More information on configuring apps can be found [↗ here](https://doc.eliona.io/collection/dokumentation/einstellungen/apps).
{% endhint %}

The *Kontakt.io* The app is configured by defining one or more API tokens. Each configuration requires the following data:

| Attributes        | Description                                                                                                                                                                                                                                   |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `apiKey`          | API key                                                                                                                                                                                                                                       |
| `enable`          | Flag to enable or disable fetching from this API                                                                                                                                                                                              |
| `refreshInterval` | Interval in seconds for collecting data from API                                                                                                                                                                                              |
| `requestTimeout`  | API query timeout in seconds                                                                                                                                                                                                                  |
| `assetFilter`     | Filter for asset creation, more details can be found in app's README                                                                                                                                                                          |
| `projectIDs`      | List of Eliona project ids for which this device should collect data. For each project id, all smart devices are automatically created as an asset in Eliona. The mapping between Eliona is stored as an asset mapping in the Kontakt.io app. |

The configuration is done using a corresponding JSON structure. The following JSON structure can be used as an example to define an endpoint:

```
{
  "apiKey": "VGhlIGNvbmZpZ3VyYXRpb24gaXMgZG9uZSB2",
  "enable": true,
  "refreshInterval": 60,
  "requestTimeout": 120,
  "assetFilter": [
    [{ "parameter": "Product", "regex": ".*Tag.*" }, { "parameter": "Product", "regex": ".*Beacon.*" }],
    [{ "parameter": "Mac", "regex": "(70:82:0E:12:28:CC|70:56:06:12:.*)" }],
    [{ "parameter": "Name", "regex": ".*Lobby.*" }]
  ],
  "projectIDs": [
    "99"
  ]
}
```

Endpoints can be created in Eliona with this structure under `Apps > Kontakt.io > Settings`. To do this, select the /configs endpoint with the PUT method.

### Floor height settings

Since the system refers from *Kontakt.io* to rooms instead of 3D coordinates of tags, the app must internally convert between the two systems in order to display assets on the map and in the BIM model in Eliona. For this, the app must know the height above the floor of each storey (the Z-coordinate).&#x20;

To make this setting easier, the app retrieves all floors configured in the system *Kontakt.io* and displays them in a widget on the dashboard. Here, the user can set the heights of the floors that the app should use from that moment on.

<figure><img src="https://content.gitbook.com/content/Nyvwhz1kEMXcHf4HLuZ8/blobs/jGqYa3PNUEEpJ5XByzLa/image.png" alt=""><figcaption></figcaption></figure>

Once the heights have been set, the widget can be removed. For later changes, the Asset Management section can be used.
