Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Connecting your IoT data streams to any external destination, without restrictions
Unlock the power of your IoT data with KPN Destinations. Whether you want to visualize, enrich, analyze or build complete AI products with your IoT data, our destinations offer flexible connections to any proprietary or cloud platforms of your choice.
With integrated custom apps, pre-built visualisation templates, or popular cloud environments, you're free to choose the platform that best fits your needs. Plus, you can skip the hassle of reformatting data; if desired - we've handled that for you. Start to build, scale, and optimize platforms seamlessly for IoT success, with no platform restrictions.
No KPN Things account? No worry. Get started here.
To create a destination you'll need;
Name - A descriptive name for your Destination.
Description (optional) - Some more information about your Destination.
Destination type - The type of Destination you are adding. KPN Things supports several.
Created Destinations have additional information:
UUID - The technical identifier of your Destination.
Destination status - The operational status of your Destination.
Multiple different Destination types are supported by KPN Things. Each Destination type has its own configuration attributes and specific working, explained on the corresponding More info page.
Missing Destinations?
Destination type
Description
Send data from your Devices to an HTTPS endpoint in SenML format with a method for origin verification.
Let KPN Things connect to your MQTT broker and publish data from your Device to the topics you want.
Let KPN Things manage your Devices, send measurements and location updates to your Cumulocity environment.
Send data from your Devices to an Azure Event Hubs in SenML format.
Let KPN Things manage your Devices and send telemetry data in your Azure IoT Hub.
Send data from your devices to the
ThingsBoard open source IoT platform.
Send data from your devices to the
Datacake platform.
Send data to AWS Lambda to enable AWS's comprehensive set of infrastructure capabilities and services
We currently support five types of destinations:
Destination type
Mgmt
Uplink communication
Downlink communication
❌
✅
❌
❌
✅
🔜
✅
✅
✅
❌
✅
❌
✅
✅
🔜
✅
✅
❌
❌
✅
✅
🔜
✅
🔜
🔜
✅
🔜
Mgmt - Whether KPN Things can manage objects in the connected Destination. Up - Whether KPN Things can send uplink data to the connected Destination. Down - Whether KPN things can send downlink data to the connected Destination.
Status
Description
🟢 Active
The Destination is operational and will forward incoming data.
⚫ Deactivated
The Destination is (temporarily) deactivated and will not send data to the configured endpoint.
⚫ Not yet linked
Your Destination is not connected to a Flow, so no data will be exchanged with the configured endpoint.
The All Destinations page can be reached by clicking on All Destinations in the side menu of the Portal.
On this page you will find:
The number of Destinations you have.
A table with information about all your Destinations:
Their name.
Their Destination type.
In which Projects they are used.
To how many Flows they are linked.
Their Destination status.
A button to add a new Destination.
Clicking on a row in the Destinations table will link you to the Destination detail page for that Destination.
When adding a new Destination, you first have to select the type of Destination you want to add. Each Destination type has its own input form presenting you with all configuration options you have for the Destination.
Check out all available Destination types and click on More info to get more details about that Destination type. All configuration options are explained, as well as the detailed working of each Destination type.
After entering the correct values, click the Add button to add your Destination.
This page offers you with all detailed information about your Destination.
The elements on this page are:
The name of your Destination.
General information about your Destination.
Status information about your Destination:
The Destination status.
The Flows your Destination is linked to.
Button to deactivate your Destination. If your Destination is deactivated, this will be an activation button.
Destination Specification tab showing you detailed information about your Destination configuration.
Flows tab showing you detailed information about the Flows your Destination is linked to.
A button to delete your Destination. This will completely remove your Destination from KPN Things!
The Destination Specification tab shows you detailed information about your Destination (#1 in the screenshot below). Displayed information differs for different Destination types. The tab also offers you an Edit link to edit the configuration of your Destination (#2 in the screenshot below).
Secret values like passwords and access keys are never displayed in the Things Portal and are even not retrievable from our systems. This ensures complete security of these values.
The Flows tab offers you a list of all the Flows your Destination is linked to and the Project this Flow is in. You can click on a Flow to open it, or you can click on Unlink from this Flow to remove the Destination from that Flow. The option to link your Destination to another Flow from here will be added in the near future.
Do you want to whitelist our IP address in your application? This is our outgoing IP address:
It is only possible to connect KPN Things to your MQTT broker using an encrypted connection!
The following parameters are available to connect an MQTT broker:
Parameter
Description
Example value
name
*
The name of the destination
My Server
description
Description of the destination
Endpoint of my server
host
*
The host name of the MQTT broker
test.mosquitto.org
port
*
The port on which the MQTT broker allows encrypted connections
8883
username
*†
The username for KPN Things to connect to the broker
password
*†
The password for KPN Things to connect to the broker
applicationId
*
MQTT Client ID for KPN Things to connect to the broker
kpnthings
topic
*
things/%p/%d/%n
qosLevel
*
The MQTT Quality of Service desired for the connection to your broker.
Options:
AT_MOST_ONCE
AT_LEAST_ONCE
EXACTLY_ONCE
AT_LEAST_ONCE
messageTimeout
*
Timeout for sending a message and handling QoS in milliseconds
10000
retainMessage
*
false
*) required value †) secret value, can only be written
{clientUuid} Your Client UUID
{mqttClientId} MQTT Client ID
{deviceUuid} Device UUID
{senmlBaseName} SenML base name
{destinationUuid} Destination UUID
{messageRequestId} Message request ID
Open an encrypted client connection to your MQTT broker.
Publish all forwarded IoT data in SenML JSON format on topics following the specified topic template.
We do not support self-signed certificates. Your TLS/SSL certificate should be signed by a root certificate authority (CA) that is trusted by the default Java trust store. You can use the SSL Server Test from Qualys to check if your certificate is trusted by the Java trust store:
Your server should preferably use TLSv1.2 or higher, but at least TLSv1.1. Older protocols are not supported because they are not considered safe.
Are you new to MQTT, but still interested in using it? HiveMQ has published some very nice articles about MQTT essentials:
You can find a publicly available Mosquitto MQTT server/broker on https://test.mosquitto.org. This allows you to try to connect KPN Things to an MQTT broker. Do not use this public MQTT broker for production!
Forward your IoT data to a Cumulocity environment
Give your Cumulocity destination name and optionally a description.
Destination name (required) - the administrative name of your Destination.
Technical name: name
Example value: Tenant X
Description - an administrative description of your Destination.
Technical name: description
Example value: Tenant with Materieelbeheer application
Create a Cumulocity environment at https://signup.softwareag.cloud.
URL (required) - base URL of your Cumulocity environment.
Technical name: tenant
Example value: https://example.eu-latest.cumulocity.com
Create an additional user in de Administration of your Cumulocity environment. To do so use the Application Switcher to switch to the Administration application and click on Users. Create a new user with the role admin.
Username (required, secret) - Username of the functional user that KPN Things should use to access your tenant.
Technical name: username
Example value: kpnthings
Password (required, secret) - Password of the functional user that KPN Things should use to acces your tenant.
Technical name: password
Generate a dedicated Things user & renew password automatically - Credentials of Cumulocity accounts expire after some time. Enabling this option will renew the password in time to prevent expiry.
Technical name: credentialManagementEnabled
Boolean value
Bidirectional behavior - Choose whether the destination should process uplink data (data from Device to Application), downlink data (data from Application to Device) or both.
Technical name: bidirectionalBehaviour
Default value: ONLY_UPLINK
Available values:
ONLY_UPLINK
- Only forward uplink data to Cumulocity.
ONLY_DOWNLINK
- Only synchronize Cumulocity operations with Things downlinks.
BIDIRECTIONAL
- Process both uplink and downlink data.
BIDIRECTIONAL_WITH_RETRY
- Process both uplink and downlink data, and make sure downlinks are retried by KPN Things.
Which messages should be sent to this Destination?
Technical name: sendMeasurements
(Boolean value)
Technical name: sendLocationUpdateEvents
(Boolean value)
Extra label for new devices - List of additional custom fragments to add to the device object when it is created in Cumulocity.
Technical name: customFragments
Example value: c8y_CustomApplication
A secret value is treated as a secret in our database and is therefor not returned in the API object response.
This section describes the functionality of the connection to Cumulocity.
When IoT dat is about to be forwarded to Cumulocity, it will first try to find the device Managed Object using the base name from the SenML message. For this it looks for an external identifier of type DEVEUI
and the base name as value. For instance:
If such an external identifier does not exist, a new device Managed Object and the required external identifiers is created. This is called provisioning in runtime.
KPN Things will create a device Managed Object if it did not exist. The device Managed Object will be created with the following information, using the device record that is known in the Data Management platform.
Additionally, the configured custom fragments (and fragments used for application association) are added to the object. In the example below, a device is created that had customFragment exampleFragment configured and application ASSET_TRACKING was configured as well.
Using the main network id an external identifier is created for the newly created device Managed Object.
Additionally, if a barcode is known present in the device object, another external identifier of type BARCODE
is created as well.
The following configurations are required to enable sending measurements:
Bidirectional behavior set to Only uplink or Bidirectional.
One of the following:
sendMeasurements
should be enabled to enable this feature, or
An application should be selected that enables sending measurements.
After the device Managed Object is found or created, a measurement is added to this device of the type kpn_SenMLMeasurement
. A full example can be found below.
More information on SenML can be found on this page.
The following configurations are required to send location update events:
Bidirectional behavior set to Only uplink or Bidirectional.
One of the following:
sendLocationUpdateEvents
should be enabled to enable this feature, or
An application should be selected that enables sending measurements.
If the measurement contains both latitude and longitude, the device Managed Object's c8y_Position
value is updated with the newly calculated location.
Also, it will create a c8y_LocationUpdate
event on the device, according to the Cumulocity sensor library.
The following configurations are required to send location update events:
Bidirectional behavior set to Only downlink or Bidirectional.
An application should be selected that enables operations handling.
The Cumulocity destination will poll your Cumulocity environment for operations. When the destination finds a new operation, recognizable because its status is PENDING, a Downlink is created for the corresponding Device.
To create the Downlink, the Cumulocity external ID is used to map to the correct Device in KPN Things. Additionally, the Cumulocity operation value deviceStatus is fetched, and put in a string value for the SenML downlink command mode.
When the operation has been picked up by KPN Things, we change the status to EXECUTING. When the downlink has finished, we will update the Cumulocity operation status to SUCCESSFUL or FAILED depending on whether the downlink was successful or not.
Forward your device data to your server through an HTTPS request
Connecting an HTTPS destination enables you to forward IoT data from KPN Things to your server through an HTTPS connection.
The following parameters are available to connect an HTTPS destination:
Parameter
Description
Example value
name
*
The name of the destination
My Server
description
Description of the destination
Endpoint of my server
url
*
HTTPS URL of your destination. Should
start with https://, no custom ports
are supported (only default 443), query
parameters are allowed
https://example.com/ thingsdata
httpMethod
*
The HTTP method to use (GET or POST)
POST
additional Headers
Object of static key-value pairs.
Caution! Do not put white space characters in your header name!
{
"header1":"value1",
"header2": "value2"
}
authentication method
None - no authentication
Basic Authentication - Authentication via a user name and password
Bearer token - Authentication using a cryptic string as bearer token
X-API-key - Authentication using an API-key
expected ResponseCode
The HTTP response code to be expected after the HTTPS request is done. When a response code not equal to 2XX is returned, it is assumed that the delivery was not succesful. At most three delivery attempts are done with an increasing timeout before the data is discarded.
200
sharedSecret
*†
Shared secret should be at least 32 characters long and should contain at least: - 1 uppercase character - 1 lowercase character - 1 number - 1 special character (#?!@$%^&(){}:.,/+*;)
Generate your own by hitting 32 random keys
*) required value †) secret value, can only be written
{xx}
is a destination parameter
<xx>
is a variable filled by the system for each request
plugUUID
is the unique identifier of the destination connection that allows you to lookup the shared secret in your own database that should be used to check the Things-Message-Token
token
must be used to verify the authenticity of the request data. It is a SHA-256 hash calculated over the SenML body in the request and a shared secret unique for this destination. Since only KPN Things and you know this secret, the authenticity of the message is verified.
senML
is the device data
It is very important to implement the token check before accepting the sent data in your application.
The HTTPS request contains a Things-Message-Token
header which allows you to verify the origin of the request. The token is a hash, calculated as following:
Where {senMLBody}
is the body of the request, and sharedSecret
is the password set when adding the destination. The shared secret should at least be 30 characters long.
You must generate and fill in your own shared secret when adding the destination. Since the token is stored securely in our system, it is not possible to retrieve the shared secret from the destination configuration after creation. It is only possible to renew the secret.
The body of the HTTPS request will contain the SenML object in JSON formatting. It will contain the device identifier and the measurement data. Learn more on the SenML object here:
KPN Things does not facilitate unsafe connections. For the definition of a safe connection we follow the KPN Security Policy. There are three aspects you need to take into account when configuring TLS/SSL on the endpoint where you want to deliver your IoT Data.
We do not support self-signed certificates. Your HTTPS certificate should be signed by a root certificate authority (CA) that is trusted by the default Java trust store. You can use the SSL Server Test from Qualys to check if your certificate is trusted by the Java trust store:
Your server should use TLSv1.2 or higher. Older protocols are not supported because they are not considered safe.
Your server should support at least one of the cipher suites stated below. The cipher suites in this table are considered safe.
Standard code
Standard + SSLLabs cipher suite name
0x16B9
TLS_CECPQ1_RSA_WITH_AES_256_GCM_SHA384
0x16B7
TLS_CECPQ1_RSA_WITH_CHACHA20_POLY1305_SHA256
0x67
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
0x6b
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
0xc09e
TLS_DHE_RSA_WITH_AES_128_CCM
0xc09f
TLS_DHE_RSA_WITH_AES_256_CCM
0xc0a2
TLS_DHE_RSA_WITH_AES_128_CCM_8
0xc0a3
TLS_DHE_RSA_WITH_AES_256_CCM_8
0x9e
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
0x9f
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
0xbe
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
0xc4
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256
0xccaa
OLD_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256
0xc027
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
0xc028
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
0xc02f
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
0xc030
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
0xc076
TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256
0xc077
TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384
0xcc13
OLD_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
0xcca8
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
0x16BA
TLS_CECPQ1_ECDSA_WITH_AES_256_GCM_SHA384
0x16B8
TLS_CECPQ1_ECDSA_WITH_CHACHA20_POLY1305_SHA256
0xc023
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
0xc024
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
0xc0ac
TLS_ECDHE_ECDSA_WITH_AES_128_CCM
0xc0ad
TLS_ECDHE_ECDSA_WITH_AES_256_CCM
0xc0ae
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8
0xc0af
TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8
0xc02b
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
0xc02c
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
0xc072
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256
0xc073
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384
0xcc14
OLD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
0xcca9
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
0xC086
TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256
0xC087
TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384
0xC07C
TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
0xC07D
TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
0xC08A
TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256
0xC08B
TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384
Variable
Value
url
https://www.example.com/thingsdata
httpMethod
POST
additionalHeaders
{
"Test-header": "Hello world"
}
sharedSecret
C03fajLBWj$nbvOnQlV9N49zVFEobV# This is an example value! Don't use it for your own destination!
Properties
Value
plugUUID
fbc063cb-4dd4-41b3-917a-e2d1ea907f75
If you do not have an HTTPS endpoint in your back pocket, you could use services like webhook.site to setup your first endpoint to receive your IoT data.
When you open the webhook.site website you will get a unique URL that you can use as endpoint for your HTTPS destination:
This page describes how to configure a Destination in KPN Things to send your data to the ThingsBoard cloud platform
Give your ThingsBoard Destination a name and optionally a description.
Destination name (required) - the administrative name of your Destination.
Technical name: name
Example value: Tenant X
Description - an administrative description of your Destination.
Technical name: description
Example value: Tenant with Materieelbeheer application
First you need to create a ThingsBoard Cloud account (Professional Edition) on https://thingsboard.io. Then follow the instructions below to create an integration in your ThingsBoard account. Keep your KPN Things Destination configuration screen open, as you will need to copy information from and to it later.
Log in to your ThingsBoard account and go to Integrations center > Integrations. There, add a new integration (by clicking the "+"-sign) and follow the steps below.
In the first step, enter the following information.
Integration type (required) Select HTTP as the integration type.
Name (required)
Enter a descriptive name, anything you like, such as KPN Things integration
.
Click Next.
Select Create new uplink data converter and enter a descriptive name, such as KPN Things converter
.
Next, replace the example code with the following code:
Click Next.
Skip this step. Yes, by clicking the Skip button ;-).
In this step, you need to copy/paste information back and forth. So pay attention, please.
HTTP endpoint URL Copy the HTTP endpoint URL from ThingsBoard into the KPN Things Destination configuration.
Enable security (Headers filter) In ThingsBoard, switch the toggle Enable security (Headers filter) to on.
Add a set of headers Click Add to reveal a set of input fields.
Configure the Header and Value pair Go back to the KPN Things Destination configuration screen, and click the Generate button next to the Security header fields. This will generate a value for the X-Things-Secret header. Copy/paste both the Header and generated Value to the corresponding fields in ThingsBoard. Then, press Add the save new integration in ThingsBoard.
Lastly, go back to the KPN Things Destination configuration screen and press the Add ThingsBoard destination button to save the new destination in KPN Things.
Now you are finished and good to go!
The Test Endpoint is designed to inspect the messages sent from your Flow.
Choose Test Endpoint as your destination.
Type in your name for your new Test Endpoint and write your description to describe your current Test Endpoint.
- url:
used to send device-data to. Automatically filled in.
- Shared Secret:
Used for encryption & Validation. Automatically filled in.
Link your device to a flow. You'll also have to link your device(s) to your desired flow, before creating your Test Endpoint.
Thats it! Now you should be able to find and view your Test Endpoint within your "Destinations" page. Feel free to make as many as you'd like.
View the messages that were sent to the Test Endpoint.
Be aware of the following constraints.
All messages expire after 5 days.
A maximum of 100 most recent messages will be shown.
Messages: Here you can view the messages that were sent to your Test Endpoint.
Details: Contains the message ID and the timestamp when the message was received.
Headers: The default HTTP headers that are sent to the Test Endpoint. These headers are the same default headers that a HTTPS Destination would receive. Note that for a Test Endpoint these headers can not be customised, for a HTTPS Destination you are able to add custom headers.
Content: Contains the payload that was sent to the Test Endpoint. It matches the output of your decoders that was enabled in the flow. For the majority of cases, this payload will be SenML JSON data. See:
Below instructions help you connecting your Azure IoT Hub to KPN Things.
Don't have an Azure IoT Hub yet? Head on over to the Microsoft documentation on Azure IoT Hub. You can try one for free using the Azure free account!
For now, a Basic tier will be sufficient for a working connection with KPN Things. Later, we will introduce downlink and device twin functionality to the connection and for that the Standard tier is required.
The following parameters are available to connect your Azure IoT Hub:
Parameter
Description
Example value
name
*
The name of the destination
My IoT Hub
description
Description of the destination
IoT Hub with all my devices
hostName
*
Host name of your IoT Hub
hubName.azure-devices.net
sasKeyName
*
The access policy name for KPN Things to use to connect to your IoT Hub
sasKey
*†
The primary key of the access policy for KPN Things to use
*) required value †) secret value, not returned by our API's
You can find the hostname on the overview page of your IoT Hub, as highlighted in the screenshot below:
For the key name and key you need to create a Shared access policy for your IoT Hub. Make sure you enable all permissions for the Policy you create for KPN Things, since all permissions are required:
Registry write
Service connect
Device connect
After creation of your policy, you can find the SAS key name and SAS key in the
KPN Things will register new devices in the IoT hub when IoT data is forwarded for devices that are not yet in the IoT Hub.
KPN Things will forward all IoT data as telemetry in the IoT Hub from devices linked to the destination.
In the future we plan to support downlink communication using Cloud-to-Device communication in the IoT Hub, and we plan to support device twin synchronization between KPN Things and the IoT Hub.
KPN Things: Configure a Google Cloud Run functions destination
Give your Google Cloud Run functions Destination a name and optionally a description.
Destination name (required) - the administrative name of your Destination.
Technical name: name
Example value: Tenant Z
Description - an administrative description of your Destination.
Technical name: description
Example value: Send my data to Google Cloud for further data processing
First you need to create a Google Cloud account on, or use an existing Google Cloud account. Then follow the instructions below to create an integration in your Google Cloud account. Keep your KPN Things Destination configuration screen open, as you will need to copy information from and to it later.
This is an example to integrate directly with a Google Cloud Run functions.
There are other alternatives.
Log in to your Google Cloud account and go to Console. Then select the project of your choice and from there select the Cloud Run Product.
From the Cloud Run menu select the option Write a Function
The following form is presented.
In the first step, enter the following information.
Service name Enter a name that describes the purpose of your function.
Runtime Choose the language to use to write your function. For this example Python 3.10 is chosen.
Authentication
Choose the authentication type. For this example, Allow unauthenticated invocations.
All other setting can be left to default.
Click Create .
Select the Source tab to define your code. The screenshot below contains example code.
Click Save and Redeploy
In this step, you need to copy/paste information from Google Cloud to Things. So pay attention, please.
Go back to the KPN Things Destination configuration screen and fill the remain fields.
HTTP endpoint URL Copy the Function URL from Google Cloud into the KPN Things Destination configuration.
Shared secret With the shared secret you have the possibility to verify that Things has sent the data and not someone else, because with the shared secret a unique Things Message Token is calculated for each message. Within the Google Cloud Run function you can repeat the calculation and check whether the calculated Things-Message-Token is the same as the received Things-Message-Token. Below you can find an example of a calculation and a check in Python.
Finally, go back to the KPN Things Destination configuration screen and press the Add Google Cloud Run functions destination button to save the new destination in KPN Things.
Now you are finished and good to go!
This page describes how to configure a Destination in KPN Things to send your data to the Datacake cloud platform
Give your Datacake destination a name and optionally a description.
Destination name (required) - the administrative name of your Destination.
Technical name: name
Example value: My Datacake destination
Description - an administrative description of your Destination.
Technical name: description
Example value: View my device data in Datacake
Connectivity type (required) - As part of the set up you will need to choose which connectivity type to use while creating your Devices in Datacake. You can use either LoRaWAN or API with KPN Things depending on the choice of the Connectivity type in Datacake.
Now, follow the instructions below to create an integration in your Datacake account. Keep your KPN Things Destination configuration screen open, as you will need to copy information to it later.
Log in to your Datacake account and go to Devices. There, add a new device (by clicking the "Add Device"-button in top right corner) and follow the steps below.
Choose LoRaWAN for LoRa devices that send raw payloads. For M2M devices or LoRa devices that do not send raw payloads choose API. The option LoRaWAN also offers the possibilty to send downlinks and to secure the connection between KPN Things and Datacake. For securing the connection between KPN and Datacake you can use a Shared Secret.
Click Next.
Select a New Product from Template, an Existing Product or create a new Product depending on the device type.
Click Next.
In case of LoRaWan
Select KPN as Network Server and then click Next.
In case API
There is no Network Server Selection.
Add one or more devices together with their details. This step is the same for both options (LoRaWAN/API).
Click Next
Click "Add [Number of devices] devices". This step is the same for both options (LoRaWAN/API).
After that the device(s) should appear in the Device list under Devices.
Select the device from the Device list and go to the Configuration tab.
In case of LoRaWAN
In the LoRaWAN section, click the Change button under Network Server and right next to KPN. From there copy the Uplink URL
In case of API
In the HTTP endpoint URL section copy the URL.
In this step, you need to copy/paste information from Datacake to the Datacake Destination in KPN Things. So pay attention, please.
In case of LoRaWAN
Uplink URL Paste the URL copied from Datacake mentioned under 5.
In case of API
HTTP endpoint URL Take the HTTP endpoint URL from the HTTP Payload Decoder section on the device Configuration tab.
Then, press Add Datacake Endpoint to save the new destination in KPN Things. Do not forget to add the newly created Datacake destination to a flow.
Now you are finished and good to go!
Give your AWS Destination a nice name and optionally a description.
First you need to create an AWS account (AWS Free Tier) on, or use an existing AWS account. Then follow the instructions below to create an integration in your AWS account. Keep your KPN Things Destination configuration screen open, as you will need to copy information from and to it later.
This is an example to integrate directly with an AWS Lambda function.
There are other alternatives, like AWS API gateway combined with an Lambda Authorizer.
Log in to your AWS account and go to Services > Lambda. There, click the Create function button and follow the steps below.
In the first step, enter the following information.
Function name Enter a name that describes the purpose of your function.
Runtime Choose the language to use to write your function.
Architecture
Choose the instruction set architecture you want for your function code.
Permissions and Advanced Settings can be left to default.
Click Create Function.
Select the Code tab to define your code.
In the Configuration tab choose the option Function URL.
Then Click Create function URL and choose your Auth type, in this case NONE.
Click Save. This result in Function URL.
In this step, you need to copy/paste information from AWS to Things. So pay attention, please.
Go back to the KPN Things Destination configuration screen and fill the remain fields.
HTTP endpoint URL Copy the Function URL from AWS into the KPN Things Destination configuration.
Finally, go back to the KPN Things Destination configuration screen and press the Add AWS destination button to save the new Destination in KPN Things.
Now, you are finished and good to go!
Below instructions help you connecting your Azure Event Hubs to KPN Things.
Don't have an Azure Event Hubs yet? Head on over to the Microsoft documentation on Azure Event Hubs:
The following parameters are available to connect an Azure Event Hubs
*) required value †) secret value, write only, not returned by our systems
Open the Overview page of your Event Hubs Namespace in your Azure Portal. You will find the host name of your namespace (#1 in the screenshot) and the Event Hubs Namespace (#2 in the screenshot) as highlighted in the screenshot below.
Can't see the Host name? In the Dutch user interface, it is not visible. Switch to English language to see the host name in the Overview page.
Now, use this value to make the following input values for the Azure Event Hubs destination configuration:
Host name: should be of the form https://X.servicebus.windows.net
, so put https://
before your host name and you're done.
Event Hubs Namespace: should be the name of your namespace.
Continue by clicking on Event Hubs under Entities in the left menu of your Namespace. Select the Event Hub Instance you would like to connect to. This opens the Overview page of your Event Hubs Instance. Here you will find the name of your Event Hubs Instance, also known as Event Space Name, as highlighted in the screenshot below:
SAS Policy name: #1 in the screenshot above highlights the SAS key name of a selected Policy.
SAS Primary key: #2 in the screenshot above highlights the SAS key of a selected Policy.
You can use SQL-like queries to explore your Event Hub data in the Process data feature. In the screenshot below it is shown how raw LoRa payload can be found in the data explorer.
The topic structure describing how KPN Things should publish data. There are several available
Whether messages send to the broker should be .
With the shared secret your destination can verify that Things has sent the data and not someone else, because with the shared secret a unique is calculated for each message.
It is time to create a Datacake account on .
Shared Secret With the shared secret Datacake can verify that Things has sent the data and not someone else, because with the shared secret a unique is calculated for each message. In Datacake this verification can be switch on In the LoRaWAN section by clicking on the Change button under Network Server and right next to KPN (the same starting point as for obtaing the Uplink URL in case of LoRaWAN).
Shared secret With the shared secret you have the possibility to verify that Things has sent the data and not someone else, because with the shared secret a unique is calculated for each message. Within the Lambda function you can repeat the calculation and check whether the calculated Things-Message-Token is the same as the received Things-Message-Token. Below you can find an example of a calculation and a check in Python.
All IoT Data from devices linked to the destination is forwarded to the Event Hub in JSON format. Since the Azure Event Hubs in itself does not allow you to look into the data coming from KPN Things, we give two easy examples of how to debug IoT data landing in your Event Hub.
Using the , you can store incoming data in an Azure Storage Container. In the screenshot below it is shown how raw LoRa payload can be found in the avro
files generated by the capture feature.
Parameter
Description
Example value
name
*
The name of the destination
My Event Hub
description
*
Description of the destination
url
*
URL of your Event Hubs Namespace
https://myhubs. servicebus.windows.net
nameSpaceName
*
The name of your Event Hubs Namespace
myhubs
Event Hubs instance
* (event space name)
The name of your Event Hubs Instance
myeventhub
Policy name (sasKeyName)
*
SAS Policy name for key with claim "Manage"
myeventhubKey
sasKey
*†
Primary key for used SAS Policy
d2llZGl0bGpc2dlaw==