Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 135 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

KPN Things Portal

GETTING STARTED

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

GENERAL FUNCTIONS

Loading...

Loading...

THE PORTAL EXPLAINED

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

BUILDING BLOCKS

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Quickstart

Build your first IoT Solution in KPN Things

Our KPN Things platform is your environment to start working on IoT Solutions and manage in a single environment. This guide will help you get started. Before we dive in, make sure you have a subscription and you're able to sign in.

Account types

There are two types of accounts. For both types the authentication is managed in our GRIP platform developed by KPN. This provides you with a secure and easy access to your KPN applications. With the GRIP portal you can manage your subscriptions and perform user management.

KPN Things Freemium

Once you have registered you have a developer account. With this account you get a Freemium project. Here you can test LoRa and M2M connectivity for a limited number of devices for free.

Follow our step-by-step guide to further set up the environment.

Of course we offer solutions for both small and large applications within the account types below. We do recommend to start testing our Freemium subscription first to get a good idea of ​​the possibilities.


KPN Things Explorer

You can easily upgrade this registration to a paid subscription later. This is our low threshold Explorer solution and suitable for even a couple of devices.

KPN Things Modular

An account will be created for you and you will receive an email to create a password. This is out dynamic solutions based on standard building blocks suitable for high-volumes.

KPN Things or Tailored

Accounts will be created for you and you will receive an email to create a password. This is our customized connectivity focussed solutions suitable for high-volumes.

Want to learn more about our propositions

KPN Things is available in four distinct propositions.

Registration and setup

Let's get started

Create your Freemium KPN Things Portal account

Freemium

Experience the core functionalities

Explorer

Expand your connectivity and grow your solution

Modular

Build a solution using standard building blocks

Tailored

For customized connectivity focussed solutions

Cover
Cover
Cover
Cover
Cover

Introduction

Get a grip on your IoT solutions, so you can focus on your customers

KPN Things offers flexible building blocks with which you can easily build complete IoT solutions. You can build a solution for virtually any use case. Do you want to know how full a waste container is, or where it is physically located? You can connect your Solution with our KPN Things platform.

Building blocks are available for each part of the chain that can easily be used together.

Thanks to standard connections, you can also use your own Device or Data platform. And with the KPN Things Portal, you have full control over your solutions.

KPN Things Portal Introduction

Learn why we built Things Portal and how it will benefit your IoT business

Quick reference instructional videos

For a kickstart, watch our instructional videos. They say more than a thousand words!

Look for the icon in the menu for more Quick reference videos.

This page explains about Getting started by creating an account and logging in for the first time.

Flexible Building Blocks

KPN Things offers you a flexible package of building blocks that you put together yourself. This allows you to set up and manage all your IoT solutions quickly and easily. You manage these building blocks in our KPN Things Portal.

Device Management

With KPN Things Device Management you have the insights and control over all your devices. ​

  • Manage all your devices in one overview - From sensors to complex IP gateways and routers

  • Device Twin - Insight in the status of every device

  • Bulk actions - Manage solutions in bulk to control solution of any size​

  • Firmware over the air - Update your devices remotely

Connectivity Management

Manage all your LoRa, LTE-M and M2M connectivity in a single platform.

  • All your connectivity in one view - Manage LoRa, LTE-M and M2M connectivity in one view

  • Manage connectivity for your device - Provide your devices with a connection

  • Extensive network information - Have insights in your solutions all the time

  • HTTP and MQTT protocols for M2M devices - You decide how to connect your devices

Destinations

A seamless integration of IoT data with any platform for maximum value.

  • Platform Independence - Easily connect any data platform to the KPN Things environment, regardless of which platform you use or want to use

  • Easy-to-Use Tools - We provide simple tools and extensive documentation to help customers create links and modify data.

  • Extensive Functionalities - Access to a wide range of functionalities and additional services, allowing customers to use a platform that directly suits their specific use case

Destination Management

Customer and User Management

Provide your customers and users with a easy access to IoT solutions.

  • Customer Management ​​- Manage IoT solutions of your customers

  • Data Segregation - We provide in secure separation of data between your customers

  • Customer Insight Overview - Have an overview of the different IoT solutions per customer

  • Self Service - Provide your customers access to the Things Portal to manage their own solutions

  • User Management - ​​Decide which users have access and to what functionality

Curious if our KPN Things fits your needs?

Then click on the link below to go the the Getting started page and build your first solution.

You don't have a device yet? No problem!

You can start testing using our free Device Simulator app.

Registration and setup

Let's get started

Follow the steps to create your Freemium account.

1

Choose to register

Open and click on Register for free.

2

Enter your account details

  1. Please enter a valid E-mail you like to create your account on

  2. Please enter your First Name. No special characters allowed

  3. Please enter your Last Name. No special characters allowed

  4. Please enter your Company Name. The company name cannot contain a hyphen character (-) or a question mark (?)

  5. Please enter a valid Phone Number. Make sure the country code is included. A phone number is not mandatory

  6. Please check the box to agree with the general

  7. Please check the box when you would like to stay informed. This is not mandatory

  8. Click on Register to create your account

If you intend to upgrade your account later, it is advised to enter the company name correctly and use your business email address. This way you have an account that can be upgraded later with the same data.

3

Create a password

After registration you receive an activation E-mail. This may take some time. Click the Set your password now link in the email and create a password.

You will recieve a confirmation that the password change is succesful.

4

Log in to KPN Things

As soon as you created your password you will be forwarded to the KPN Things portal.

When visiting the KPN Things Portal in the future, you can access the portal via .

In some cases you land in the KPN Developer Portal or in the MijnKPN Zakelijk portal. In this case you can go to the KPN Things Portal by clicking on the KPN Things icon.

5

Ready to start

You are now ready to set up your solution and go to the next step.

We would like to advice you to start testing using our free Device Simulator app. This way you know for sure that you have configured the portal correctly.

You know how to start and want to use an actual device? Perhaps one of the explanation pages about some of the most used test devices will be useful to you.

Devices

Analyse and manage your devices

The Devices Landing Page in the KPN Things platform provides an overview and management interface for all your registered devices.

Device Management

  • Search and Filter: At the top, there’s a search bar that allows you to quickly find specific devices by name or other attributes. You can also apply filters to narrow down the devices based on type, status, or other criteria.

  • Add a New Device: You can manually add a new device by clicking on the "Add new Device" button. This will guide you through the process of registering a new device with details such as its type, unique ID, and configurations.

  • Bulk Management Options:

    • Bulk by CSV File: This is a key feature that allows you to upload multiple devices at once using a CSV file. You can use this feature to save time when you need to add or manage large numbers of devices at once.

    • Firmware Management: This option lets you add new firmware version on your devices. Keeping firmware updated is important for security and functionality improvements.

https://portal.kpnthings.com/
Terms and Conditions
https://portal.kpnthings.com
Device simulator app
Connect devices

Tutorials

Our quick and easy explinations of various topics

We are happy to help you on your way as best as possible. Nothing is more fun than seeing a visible result in your account quick. Follow our tutorials to get of to a good start.

Things Manager

Connectivity

Gateways

An IoT Gateway is a device that connects sensors, IoT modules, and smart devices to the cloud. Gateways serve as a wireless access portal to give IoT devices access to the Internet. This way not all devices have to be connected by M2M or LoRa, but can work using options like Bluetooth (Low Energy) solutions. Making your solution more power efficient and it is easier to make a conclusive business case.

Quickstart

SIM cards

1. Check contents of the delivery

First, let us check if you received everything correctly. There should be two KPN Things SIM cards in the package.

2. Check KPN Things Portal

Then, the SIM cards should be visible in your KPN Things Portal on the All Connectivity page.

If you don't see your SIM cards, please contact us on [email protected] and we will check if everything is correctly configured.

3. Obtain a Device

You now have a KPN Things SIM card in your possession, a SIM card that can be put in a programmable device to grant it direct access to KPN Things through a secure channel.

This SIM card supports connection to the following networks of KPN:

  • LTE-M

  • 2G

  • 3G

  • 4G

  • 5G

Don't you have a programmable M2M Device yet? You should get one! We have some tips for you:

  1. We have the most elaborate documentation on getting the SODAQ SARA AFF R412M to work with KPN Things, so getting such a device will provide you the best getting started guide that we have.

  2. Other SODAQ SARA devices, like the SFF R412M or devices with a different modem should also work with our developer kit guide. You should only take into account some different settings.

    • For instance for SARA SFF devices, you should use Board type SODAQ SFF.

  3. Our Device SDK also contains example code for the Arduino MKR GSM 1400, laying the basics for all Arduino based M2M devices.

  4. If you want to use non-Arduino based devices, you would need to write your own code to interface with KPN Things. This M2M interface is explained in the Things M2M documentation.

All videos

A list of all reference videos in one overview

KPN Things Portal Introduction

Learn why we built Things Portal and how it will benefit your IoT Business

User interface

This video explains how the User Interface and main navigation works.

Tables

This video explains how Tables work.

Bulk by multiselect

This video explains how Bulk by multiselect works in the User Interface.

Bulk by file

This video explains how Bulk by file works in the User Interface.

Configure a flow

Learn how to forward the data from your device to your application

Now your Device is linked to the Flow!

With a Flow you configure the way your IoT data should flow through KPN Things, from device to destination. Learn more about flows.

1. Your first Flow

We have already created a first empty flow for you named My first flow. You can create new flows using the Add flow button on the top right.

2. Link Device to Flow

Click on Add Devices in the Flow overview page.

Now you see all Devices you can add to this Flow. Click on your Device to link it to the Flow.

Now your Device is linked to the Flow!

3. Activate a Decoder

Open your Project, open your Flow, and then click Data Processing.

Click on the Device type for which you want to activate a decoder (#1 in the screenshot below). At this moment you probably have only one type of device linked to the Flow, so open that one. All available decoders are now shown (#2 in the screenshot below).

Here you can toggle on and off what (decoded) data you want to receive in your application (like indicated with #3 in the screenshot below). If you want to know more about the decoder, click on the link in the description.

Note that the "Add new Decoder" button and "Edit" button are only visibleif this is your own device type. Own Device Types and Decoders can be created using the Things Creator app.

Downlink communication

When data is sent to the device

All downlink communication is requested on and managed by the Actuator API. Optionally a Destination can request and manage downlink communication as well. See Destination types to learn which destinations can support downlink communication.

After a downlink is requested on the Actuator API it is encoded. Meaning the downlink is translated to a message the device will understand. After encoding the downlink is send over the selected network to your device.

The network (and the device) will report feedback about the delivery of the downlink to the Actuator API. This information can be retrieved by the application, or the Things Connector fetches this information into your system.

Actuator API

Using the KPN Things Portal, you can request downlinks, and check their progress.

Since December 2020 it is also possible to directly call the Actuator API. Head on over to the API access documentation for more information!

Encoder

Using our encoders the downlink request is translated to a device specific message. All available encoders are listed on the Supported devices page.

Network support

Currently the following networks are supported for downlink communication:

  • LoRa downlink

  • HTTP response downlink for M2M devices

  • HTTP response downlink for Internet-connected devices

Downlink via Destinations

Some Destination types also support sending downlinks.

Contact info

All methods to get in touch with us

The Contact info page provides you with all methods to contact us for questions and in case of an incident.

  1. Click on Contact info in the menu to see all options to get in touch with us

  2. We will always be there to help you, contact us if you have any questions

  3. Support methods avaible for Modular and Tailored subscriptions

Best method in case of a high priority issue for Modular and Tailored subscriptions is to first create a support ticket and then call us to discuss the impact and help us to start the investigation as soon as possible.

The options shown differ based on the subscription type.

Contact info

Send instruction to LoRa DevicePage

Learn how to send an instruction (downlink) to your LoRa Device

Note that for this tutorial you need to use a LoRa device.

1. Request downlink

Go to the All Devices page and click on the device you want to send a downlink to.

Open the Send Instruction tab. There you will find the input fields to send a downlink to your LoRa device:

  • FPort: is the LoRa application port on which to send the data. If you don't use application ports on your device, you can just use 1.

  • Payload: is the data you want to send to your device, written in hexadecimal characters. You could use for instance 010203.

Click Submit to request the downlink to be sent to the device.

2. Check status of downlink

After requesting the downlink, under Status Downlink your downlink will have appeared. Maybe you first see your downlink with the PENDING status, meaning it is still being processed, but if you hit the refresh button (#2 in the screenshot) you should see it switching to EXECUTING.

Queuing At most one downlink can be in EXECUTING at a time. When you submit more downlinks, they will stay in the PENDING state and they will be processed "first in first out". You can have at most 5 downlinks in PENDING. As long as a downlink is in PENDING mode, you can cancel it. If you do so, it will not be send anymore and the status will change to CANCELLED.

Learn more about .LoRa Downlinks sent through KPN Things are always Confirmed downlinks. That way we trigger an Acknowledgement (ACK) from the device in the next uplink, and with that information we can determine whether a downlink was received or not.

Click on the refresh button (#1 in the screenshot) to refresh your Data History table. There should now be an uplink record following your downlink record that contains an ACK (#2 in the screenshot).

  • If the uplink containing the ACK was not received by the network, you will see your downlink is still in EXECUTING. When a next uplink is received we conclude the downlink as FAILED, since we do not know for sure whether the downlink has been received. You could state that the quality of service for downlinks through KPN Things is "at least once".

If you switch back to the Send Instruction tab, you should see that the status of your requested downlink has switched to DELIVERED. That means the acknowledgement has been received by the network.

You can also send downlinks by API calls

Are you interested in sending downlinks to your Devices through API calls? That is also possible! Head on over to our to learn how.

Optional: send your data to Azure SQL

Management data model

Explaining the data model of the platform.

  • Green bordered blocks are objects provided to you.

  • Green filled blocks are objects you can create and manage.

  • Grey bordered blocks are objects globally managed by the system.

Customer

If you have an account on KPN Things Data Management, it belongs to a . All main objects in the KPN Things Data Management belong to a Customer: Projects, Devices, Destination and Network subscriptions.

A Network subscription contains information for network types for a specific client. .

Project

Each Project defines a solution you buy or build in KPN Things. Learn more about .

Flow

With a Flow you link one or more devices to one or more plugs. So, if data is received from a device in a device group, its data will be forwarded to the plugs that are in the same device group.

A project has one or multiple activated decoders and encoders. These decoders prescribe which decoders should be used when data is received by a device that is in a device group that belongs to this project. Learn more about .

Device

A Device represents a single physical device that can send data to the platform. When creating a device you tell the system the device specification it belongs to.

A Device specification has one or multiple supported network types. For all our supported device types, go to.

For a device, you can create a Network info for each supported network type of the given device specification.

Destination

A Destination allows you to forward the data from your devices to an external system. For detailed information go to .

Support

All help and resources in one place

The support page provides access to all service related items. Here you can submit a request for information of report a service disruption.

The options shown differ based on the subscription type.

  1. These support items are available for everyone

  2. Support tooling avaible for Modular and Tailored subscriptions

  3. We will always be there to help you, contact us if you have any questions

Contact Support

When support is needed, click on the Contact Support tile. This opens the General inquiries form.

1

About you

Provide your name and email address so we can reach you.

2

Subject

Choose the subject so that your question will be directed to someone who knows the subject.

General Inquiry

Any general question, you can ask us anything about the product.

Technical Inquiry

Having trouble setting up the environment, or have a deep technical question? Please ask us and our support team will help you getting up to speed

Sales Inquiry

Do you have any questions about prices or upgrading a subscription? We will help you find the right solution.

Suggestion

The product is built with the user in mind! Do you have any suggestions that will help us further improve the platform? Let us know.

3

Your Question

Please describe your question. Be as specific as possible.

4

Done. Send it out.

Have you finished filling out the form? Then press Done. Send it out. We will contact you as soon as possible.

Bulk operations

Editing devices in large numbers

Next to the device list, you will see options for bulk actions, like activating or deactivating your M2M devices, or editing device settings in batches. These actions can be initiated by selecting multiple devices from the list or by uploading a CSV file that contains the necessary device information.

Exporting to CSV

You can easily download the Devices - Data result set by clicking the Download icon just below the Search icon.

This will generate CSV file, containing all devices in the current selection. The CSV file will contain the measurements accompanied with the timestamp of that specific measurement.

Click on the Bulk by CSV file button.

This step opens the process for uploading multiple devices at once via a CSV file. This saves time since you don’t need to add each device individually.

You are asked to upload a CSV file with the device data. Ensure that the structure of the file matches the template exactly, which you can download. Use a comma (,) as the CSV separator.

After uploading the CSV file, it will be validated.

This screen gives you feedback on the validation. All devices with valid data are displayed, and devices with errors won’t be processed. The system checks fields such as IMEI, ICCID, and other required fields.

After validation, choose the target project and flow where the new devices should be added. You can also specify the device details, such as the device type.

Here, you define the project and flow in which the new devices will be processed. You can also choose the type of devices being added, for example, M2M devices or another type.

Click on Add new M2M Devices to start adding the devices.

The system will now begin adding the devices. You can monitor the process by following the progress in the Bulk reports where you can see if all devices were successfully created.

Quick reference videos

Learn more about the general functionality

User interface

This video explains how the User Interface and main navigation works.

Tables

This video explains how Tables work.

Bulk by multiselect

This video explains how Bulk by multiselect works in the User Interface.

Bulk by file

This video explains how Bulk by file works in the User Interface.

Look for the icon in the menu for more Quick reference videos.

Documents

All documents and manuals in one overview

The documents page provides you with documentation and manuals about our services.

  1. Click on Knowledge Base in the menu for an overview of the available documentation

  2. The highlighted documents contain important information and are shown in tiles

  3. All other documentations about a topic are listed below the tiles

  4. Every header indicates another topic, scroll down to check for more subjects

  5. Use the search field to look for specific topics

  6. This online KPN Things User Guide can be accessed through this link

Scroll down on the Documents page to check for all documentation grouped by topic.

Accounts and projects

Each company has a . You can create multiple within this Customer Account.

describe your commercial plan and available features. One Customer Account can have multiple projects.

Manage your customers

Upon request we can create a 'Reseller account' account for you, so that you can manage IoT solutions for your customers. Learn more about

Uplink communication

When data is sent from device to KPN Things

KPN Things Data Management is a data processing platform that enables you to connect all your KPN Things devices to all supported destinations through one standard way of data processing. This principle is visualized in the diagram below:

Device support

Read more on device support:

Network support

KPN Things Data Management supports multiple forms of connectivity to receive data from devices. When you have a KPN Things device it is already configured to work with KPN Things Data Management.

Read more on connectivity support here:

Processing

Decode

During the optional decoding phase the device specific data protocol is transformed to the universal language of . This is called decoding. Decoding for KPN Things devices and custom devices that use the KPN Things client libraries is taken care of automatically. Therefor there is automatic compatibility with the enrichment phase.

Enrich

In future releases KPN will introduce data enrichment functionality in KPN Things Data Management.

Destination support

After processing your data will be forwarded to one or more Destinations you have configured.

Release notes

We are proud to inform you about all the new features of our platforms

The Release Notes page provides you with all new features and items we fixed or improved.

  1. Click on the Release Notes links on the News page

  1. All releases come with a version number as reference in case you have questions

  2. The items of changes and fixes in the according release are stated below every version number

  3. This is the date the article is published

  4. Use the search field to look for specific topics

  5. In case Cisco Control Center is used you have the option to select for Release notes Cisco to see the information related to the platform

Scroll down on the Release Notes page to check for a comprehensive list of earlier releases.

Bulk reports

In the KPN Things Portal it is possible to perform certain actions in bulk, meaning a single actions is performed on multiple objects at the same time. The following operations are currently supported as bulk action:

  • Add Devices to a Flow in the .

  • Add Devices to a Flow in the .

  • Remove Devices from a Flow in the .

All Bulk reports page

All historical bulk operations can be found on the Bulk Report page, directly accessible through the side menu in the KPN Things Portal. This page shows you all executed bulk operations and their results.

By clicking on a specific Bulk report you open its details.

Bulk report detail page

The Bulk report detail page shows you every operation of the bulk action and whether the result was successful or not. This allows you to review past bulk operations and maybe fix some things if necessary.

Further reading

If you are interested in automating an administrative operation in the KPN Things Portal, you could also look in to , allowing you to write your own scripts to perform certain actions in your KPN Things account.

Connect a HTTPs destination

Learn how to connect your application through HTTPS

You can use to forward your device data to any supported platform or destination. The tool Webhook.site is used for this tutorial. Although we have good experience with this tool, KPN is not responsible for the proper working of the tool.

1. Create test HTTPS endpoint

Go to . Webhook.site is a service with which you can easily inspect incoming HTTP requests. When vising the site it will automatically create a unique HTTPS endpoint for you. Use the Copy to clipboard button that is highlighted in the screenshot below to copy the URL of your new endpoint.

2. Create your first Destination

Go to the Flows > My first flow and click Link destination

Choose Create a new Destination.

Select HTTPS endpoint as destination type.

3. Fill in your Destination Information

After selecting HTTPS Endpoint, fill in the following information:

  • Destination name: you can think of a good recognisable name for your first destination, like My First Destination.

  • URL: this should be the URL you just copied from webhook.site.

  • Shared secret: this is a kind of password that an application should use to verify that KPN Things sent the data to the endpoint. It should be at least 32 characters long and should contain at least an uppercase character, lowercase character, digit, and special character.

4. Test connection with test message

Send a test message, e.g. by using the . You should see incoming information on your webhook.

Congratulations! 🎉

You successfully set up your first IoT solution!

To continue learning you can continue with:

Invoices

Find a copy of your invoices

The Invoices page provides you with a copy of your invoices. This is a click out to MijnKPN Zakelijk portal to allow you to download invoices as Adobe PDF files.

Invoices do provide Modular and Tailored subscriptions with the option of a invoice history overview.

For Freemium and Explorer subscriptions we would like to refer you to Contact Support as described on the Support page via the link below in case an invoice must be provided again.

To open the link and check invoices you need the permission as shown below. Do you not have these rights? Then ask an administrator within your organization to assign this to your account in MijnKPN Zakelijk.

Need your invoices now?

Click the tile below to open MijnKPN Zakelijk right away.

Invoices

Invoices can be accessed via the following options.

  1. Click on Invoices in the menu

  2. Click on the Invoices tile

All items with the click out icon below will be opened in a new tab in another application. Don't worry, we use Single Sign On so you can continue working without logging in.

Device data graph

Can't find a tab called "Device graph"?

It shows up automatically if keeping Device data history has been turned on in your Customer settings. You can also or create a ticket via 'mijnkpnzakelijk' if you have any questions.

How to read the graph

If data history is enabled for your account and device type, you can find a graph of the configured metrics on the Data graph tab of your devices details page. If available, two metrics can be selected to show 2 graphs simultaneously.

The "Zoom" button can be used to focus more on the range of the metric values. The "Table View" button gives access to the underlying data of the graph:

The displayed data can be filtered, sorted, and exported according to your needs, just like all other data tables in KPN Things.

The data-graph is configured for most device types to show battery related characteristics, like batteryVoltage and batteryLevel.

Typical Battery Voltage levels behavior

In the current portfolio KPN uses 2 types non rechargeable batteries, 3.0 Volt and 3.6 Volt. There is 1 type rechargeable battery, the 3.7 Volt.

Non rechargeable batteries 3.0V and 3.6V Both the 3.0 and 3.6 type battery will be around the voltage of 3.0V or 3.6 Volt for a long time during their lifespan.

The course has a stable behaviour during the discharge process.

Slight fluctuations in voltage are caused by changes in the internal impedance of the battery which arise when the battery is in rest and becomes active when transmitting data and the power consumption by sensor readings. The ambient temperature is also a factor of importance in these fluctuations.

In the final phase of the battery life, the fluctuations to lower values will be more severe because the battery has more difficulty recovering from the passive to active state when the internal impedance of the battery is increasing.

In the final phase also the stable character will disappear and once the decline has started, it will proceed relatively faster.

How long a device will be able to work on a battery at the end of its lifespan depends on the number and current use of messages and sensor readings initiated by the device per day.

And here too, the ambient temperature is an important factor. Rechargeable LiPo The rechargeable battery has a voltage range from 3.7 Volts to fully charged around 4.2 Volts.

During consumption, the voltage will decrease and with this rechargeable type the degree of discharge is also influenced by the load and the ambient temperature.

A rechargeable battery has a slightly greater drop in voltage in the first phase of the discharge process and more as the battery reaches the end of its lifespan. Between those two phases the drop will be gradual.

If the battery reaches a voltage below 3.6 Volts, it is advisable to charge the battery to ensure proper functioning of the device.

Support tickets

Create a support ticket to request for information, changes or report an issue

The Support tickets page provides you with an interface to our IoT Service Desk. This is a click out to ServiceNow to allow you to raise and edit tickets.

Support Tickets do provide Modular and Tailored subscriptions with an interface to our IoT Service Desk.

For Freemium and Explorer subscriptions we would like to refer you to Contact Support as described on the Support page via the link below.

If you have non-urgent technical questions and want to contact a specialist directly, this method can also be used by Modular and Tailored users.

To open the link and create a ticket you need the permission as shown below. Do you not have these rights? Then ask an administrator within your organization to assign this to your account in MijnKPN Zakelijk.

Need support now?

Click the method that matches your subscription below to contact us right away.

Like to read the Contact Support manual first? Click on the Support link below.

Support tickets

Support tickets can be accessed via the following options.

  1. Click on Support Tickets in the menu

  2. Click on the Support Tickets tile

All items with the click out icon below will be opened in a new tab in another application. Don't worry, we use Single Sign On so you can continue working without logging in.

News

We keep you updated about our platform and connectivity and planned maintenance

The news page provides you with all relevant information.

  1. Click on News in the menu to see all news items under All News

  2. Click on the title of a news item to open and read the full article

  3. Use the search field to look for specific topics

  4. This is the date the article is published, in case of maintenance check for the execution date in the full article

Scroll down on the News page to check for a comprehensive list of older articles.

Customer account
Learn more about connectivity types
Projects
Flows
Devices
Destinations
Support Home
General inquiries form
Documents
Release Notes link
Release Notes
contact support
News
Cover

Download your invoice

Go to the Invoices module in MijnKPN Zakelijk and open or download your copy

Location data

One of the main use cases in the Internet of Things is tracking of assets. Therefore KPN Things has location data at the core of its design, especially if you take into account the wide variety of tracking hardware we sell.

We consider two different types of determining the location of your Device:

  • Localization: really determining the absolute location of your Device on the world.

  • Detection: detecting the presence of your Device with an anchor in the world which has a known location. With this you can safely say your Device is close to the anchor.

Localization

Using multiple measurements in a single domain to try to approximate the location of the device.

The following measurement values are outputted by KPN Things:

  • latitude

  • longitude

  • radius (if available)

  • source

GPS

The device determines location using GPS. An implementation works for a given device and decoder.

  • Device: Should have a GPS module and send GPS location.

  • Decoder: A decoder for each device type that sends GPS data (unless a Things protocol is used)

LoRa Geolocation

The LoRa network determines the approximate location of the device using three or more fine timestamps calculated by the gateways. An implementation works for all LoRa devices.

  • Network: Should be KPN LoRa with a geo-enabled connectivity plan

  • Decoder: LoRa Geolocation decoder should be enabled.

Wifi localization

There should be WiFi infrastructure, dense enough for a device to pick up multiple access points. A device should scan for available WiFi access points and send their MAC-address and received signal strength to Things DM. Things DM should then decode the payload whereafter an external service can be called to resolve the measurements to a latitude and longitude.

  • Device: Device should be able to scan for WiFi access points

  • Decoder: A decoder for each device type that scans for WiFi access points (unless a Things protocol is used)

  • Processing: A WiFi Localization processor should translate incoming WiFi MAC+RSSI measurements to a latitude, longitude and radius using an external service.

Detection

Trying to detect another identifiable object with a known location and using the location of that object as approximate location of the device.

  • detectedBeacon

  • source

LoRa On Premises Gateway detection

The LoRa network forwards the identifier of the best receiving gateway. Using the user-administrated location of this gateway the general location of the device is determined.

  • Network: Should be KPN LoRa.

  • Decoder: Metadata embedded in the DevEUI_uplink message from Thingpark should be accepted as information to be processed in Things DM.

  • Processing: One LoRa Metadata decoder for location detection using LoRa Gateway ID

Bluetooth beaconing

There should be managed infrastructure of Bluetooth beacons that transmit their identifier in a known manner. The locations of these beacons should be administrated in an (out-of-scope) application. There should be devices being able to detect the beacon and send the beacon identifier to Things.

  • Device: There should be a beacon device transmitting a Bluetooth beacon. There should be another device picking up the beacon and sending its identifier to Things.

  • Decoder: A decoder for each device type that sends a bluetooth beacon ID (unless a Things protocol is used)

  • Processing: trancelate beacon to coordinates.

Things Creator

In the Things Creator, it is possible to define your own device type including decoder scripts. This guide describes how this is done.

Guide: Adding a New Device Type and Creating a New Decoder

Step 1: Adding a New Device Type

Open the Things Creator Application: Log in to the KPN Things application with your credentials and using the top-level menu, navigate to Things Creator. If you don't see this menu option, you're not authorized to access the Things Creator. Access is provided via the roles in KPN Grip. In order to gain access, send a request to the administrator of your Grip tenant.

Device Type Overview

Within the Things Creator application navigate to Device-Type Management: Click on the new main menu item "All Device Types". View the overview of all available device types.

Create New Device Type

Click on the "Add new Device Type" button. Fill in the required information for the new device type, such as name, description, and any specific properties. Click "Add Device Type" to add the new device type.

Edit or Delete Device Type

If needed, you can edit or delete your own device types through the device type overview. Select the device type from the list and in the device type detail page, click Edit or Delete.

After creating your own device-type, this device-type can be selected in the Things Manager when adding new devices to your project.

Step 2: Creating a New Decoder

Decoder Overview

Navigate to Decoder Management: Click on the menu item "All Decoders". View the overview of all available decoders.

Create New Decoder

Click on the "Add new Decoder" button. Select the device type for which you want to create the decoder. Note that you can only add a decoder for one of your own device types. Be sure to create your own device type first. Fill in the required information for the new decoder, such as name and description. Click "Add Decoder" to add the new decoder.

You can add as many decoders as you like for your device-type.

For more information on creating your own decoders, please refer to this page.

Edit or Delete Decoder

If needed, you can edit or delete your decoder through the decoder overview. Select the decoder from the list and in the decoder detail page, click Edit or Delete.

Create and Test Decoder Script

After creating a decoder, the decoder script must be created. In the decoder detail page, click the "Create" button in the Script section. Write and test the script using the designated editors. Click "Save" to save the script.

The decoder scripts can be tested using the provided sample payloads, or you can create your own test payload. The Click "Run script with test payload" to test your decoder script. The output and log can be used to validate your script.

For more information on creating your own decoder scripts, please refer to this page.

Edit or Delete Decoder Script

If needed, you can edit or delete your own decoder scripts through the decoder detail page. Click "Edit" to edit the script and in the edit script dialogue: Click "Delete" to the delete the script. Click "Save" to store any changes to your script.

Step 3: Activating the Decoder in Flow

You have successfully created your own device type and one or more devices of this type have been added to your project. Then the decoder of your choice must be activated in your flow. This is done in the Things Manager application.

Activate Decoder

Select the flow in which you want to activate the decoder and click "Data Processing". In the Data Processing overview, select the device type for wich the decoder shall be activated and toggle the decoder of your choice. Alternatively, you can click the "Add new Decoder" to create a new decoder in the Things Creator application.

SenML
Supported devices and KPN Devices
LoRa connectivity configuration
Decoders and encoders
Destinations
Cover

Contact a specialist

Ask for support when you have a Freemium or Explorer subscription

Cover

Contact our Support Desk

Raise a ticket when you have a Modular of Tailored subscription

Support Tickets
Support
downlink statuses
API access
Customer Account
users
Projects
Customer management
Each Customer Account has at least one User and at least one Project
Link Devices to Flow page
All Devices page
Devices in Flow page
KPN Things API access
KPN Things Destinations
https://webhook.site
Device simulator app
Devices overview
Upload bulk file
Bulk file validation
Bulk upload target location
Bulk upload execution

Technical overview

The KPN Things Platform is the bridge between IoT Devices and IoT Applications. It offers a unified way of connecting Devices at the one side, and applications at the other side, making Devices and applications completely interchangeable in every IoT solution that uses KPN Things.

Solid line = IoT data. Dashed line = configuration/metadata

Device integration

Devices can communicate with the platform using one of our networks, LoRa or M2M (2G/3G/4G/LTE-M), or a Device using another network can get its data to and from KPN Things over the Internet.

Communication from your Device is called uplink communication. When data or instructions are sent to your Device, it is called downlink communication. The communication within KPN Things Platform uses the SenML data protocol. Devices using other languages can be translated from and to SenML using decoders and encoders.

Application integration

KPN Things will connect to your application through a dedicated connection layer. To connect your application to KPN Things you can use one of the available Destination types. We support connecting plain HTTPS endpoints to KPN Things, but if you are developing in Microsoft Azure, you can connect directly to the Azure Event Hub.

The Destination types that support 'management' connect on a platform level and can also manage objects in the application. The Cumulocity destination for instance will create Device objects in the Cumulocity tenant for each Device that KPN Things sends data of.

KPN Things Portal

The KPN Things Portal is the web application through which you can manage and monitor almost all parts of the KPN Things solutions. You can manage each part of the KPN Things solution, from Device to Destination, to bring your IoT data from the real world to the digital world. You are also able to use KPN Things API's directly to manage your IoT solutions.

The KPN Things Portal is the visual interface with which you configure your solutions on the KPN Things Data Management platform.

*) Customer management is only available when the add-on is purchased.

IoT solution in KPN Things Portal

To manage your IoT solution you use Flows and in a Flow you link Devices, configure Data Processing and set up Destinations together. See how these components relate to each other in the Management Data model. Since network configuration, or Connectivity, is part of the Device in KPN Things, a Flow expresses the complete way how IoT data should be received, processed and forwarded, from the Device to the Destination and vice versa.

Create a simple IoT web applicationPage

Showing your data in an application

Note that this sample IoT web application is for testing purposes only and not a secure solution for processing data

With this tutorial you will create a simple web application showing a map showing your tracked LoRa data. This runs an in-memory data store, so on restart the store will be reset and all recorded data will be lost. The application runs on Next.JS

As an optional step the IoT web application can be deployed to Azure Web App.

1. Install the IoT web application

  1. Get all the files needed for this tutorial at https://github.com/kpn-iot/c3y and save these in a local folder

  2. Go to the folder 'c3y' and install: npm i

  3. Build: npm run build

  4. Start server in production mode: npm start

  5. (optional) Seed with dummy data: ./postDummyData.sh

2. Redirect your webhook to localhost

Enable XHR Redirect in your webhook (tested in Firefox & Chrome, does NOT work in Safari):

  • Target: http://localhost:3000/api/lora

  • Content Type: application/json

  • HTTP Method: POST

3. Test connection with test message

  1. Send a location message using the device simulator.

  2. Go to http://localhost:3000/ and click UPDATE.

You should see the location update with the location you have sent via the device simulator.

4. (optional) Deploy as Azure web application

  1. Install azcli: brew install azure-cli ((https://learn.microsoft.com/en-us/cli/azure/install-azure-cli)

  2. Log into Azure, where ??? is the tenant ID from Azure Active Directory: az login --tenant ???

  3. Deploy: az webapp up --sku B1 --location westeurope (takes about 5 minutes)

  4. After deployment the URL is logged

  5. Modify the URL in the HTTPS destination created in Connect a HTTPS destination to the URL returned by Azure CLI:[generated URL]/api/lora

  6. Inspect logs: az webapp log tail

  7. Open [generated URL] in the browser to see the web app

Customer management

💎 Add-on feature This feature is only available when purchased the Customer Management add-on. Please contact [email protected] if your are interested!

With Customer Management, you get the possibility to manage your own customers using separate customer environment in KPN Things. It is an extra administrative layer in the KPN Things Portal.

If you have Customer Management enabled in your KPN Things license, you will have an additional link in your side menu: All Customers (as indicated in the screenshot below). Click on it to open your customer list.

All Customers page

After clicking All Customers in the side menu, you will get an overview of all your customers.

In the screenshot the following elements are highlighted:

  1. The number of Customers in your current view and your total number of Customers.

  2. The company name of your Customer.

  3. The name of the primary contact of your Customer.

  4. The number of Projects your Customer has.

  5. The number of Devices your Customer has.

  6. The number of Destinations your Customer has.

  7. A quick link to the All Devices page of your Customer.

  8. Clicking on a row in the table will direct you to the Customer details page of the selected Customer.

  9. A search bar to search for a specific Customer name.

Switching to Customer environment

After opening one of your Customers, your submenu will change. The top part will stay the same and will provide you a way back to your own Customer environment (#1 in the screenshot below). The bottom part of the side menu will now show you navigation for the environment of your Customer (#2 in the screenshot below), allowing you to open and/or manage the objects in the environment of your Customer.

Add new Customer

Adding new Customers will be added later. For now, if you want to add a new Customer, you should contact our service desk.

Customer overview

The Customer overview page provides you with a quick overview of the environment of your customer.

On this page you find:

  1. A summary of the properties of your Customer.

  2. A link to the Customer details.

  3. The number of Projects of your Customer and a link to those Projects.

  4. The number of Devices of your Customer and a link to those Devices.

  5. The number of Destinations of your Customer and a link to those Destinations.

  6. Quick links to add new objects to your Customer (buttons are disabled if you do not have rights)

Customer details

After switching to the Customer environment, you see the Customer details page. This page gives you a quick overview of the Customer details, like name and email address.

Cost overview and contract

The cost overview and contract described here are not available yet, but will be coming soon!

Users with an Explorer or Modular contract can view their contract and costs per billing cycle in the KPN Things Portal. To view the costs and contract, enable access by assigning the Finance Read-only role to your users in GRIP. See Roles and Access Levels on the Customer accounts & users page.

Starting point

To see an overview of the costs per billing cycle, click on your Customer name in the menu on the left. The Account card should show an item called Costs overview if at least one of your projects has an Explorer or Modular contract.

Costs overview

Click on the item Costs overview to navigate to the Costs Overview page. This page shows the costs that will end up on your invoices in a table and a chart. The costs are split per type; one time costs such as hardware, recurring costs, and usage. The costs are shown with any applicable discounts subtracted.

Costs details

Click on a row in the Costs table or on one of the bars in the chart to navigate to the Costs Details page of that billing cycle.

Under Base details, some information about the billing cycle is shown. The items and discounts are shown under Items and Discounts. The costs for the current month are a forecast of the next invoice and will be updated periodically during the billing cycle. Keep in mind that the actual invoice may contain additional costs and/or discounts not visible on this page.

The buttons Previous and Next above the card on the right allow you to navigate to the previous or next billing cycle.

Contract

Each project can have a contract linked by an operator of KPN. Navigating to the Project Overview page of that project shows the Project card with an item with the name of the contract.

Contract details

Click on the contract line to navigate to the Contract Details. Under Base details, some general information about the contract is shown.

Under Implementation, it is shown to which project the contract is linked. The items and discounts are shown per charge type, which can be one time, recurring, or usage. The items are subsequently grouped per product family. The regular price of each item is shown in the column Unit price in each row with a bold name. Optional tiered discounts is shown below each row to which it applies. The actual discount depends on the quantity, whose range is shown in the columns From and To. These columns are visible only if the contract has at least one item which has tiered discounts.

Multi Factor Authentication

Add an extra layer of security to your KPN Services account

For all your services you use our GRIP authentication solution. By default we require a username and password combination. But of course it is possible to choose two-factor (2FA) or multi-factor (MFA) authentication.

These settings can be changed by an admin user in the MijnKPN portal.

  1. Choose for Identity in the menu

  2. Select Directories in the submenu

  3. Select GRIP

  4. Select Authentication in the tabs

You are now in the Authentication menu of your GRIP environment.

The changes you make here will affect authentication for all users. Make sure that all users have their mobile number filled in in the user information before you enable Multi Factor Authentication.

Authentication menu

Standard setting

Scroll down in the Authentication menu for the Authentication Level settings.

  1. The Required authentication Level score determines the level you need to reach before you can successfully log in

  2. In this example (standard settings) the points for Credentials (username/password) match the points (20) needed to successfully log in without further authentication methods

Standard Authentication Level

Multi Factor setting

Scroll down in the Authentication menu for the Authentication Level settings.

  1. The Required authentication Level score must be a higher number then for Credentials (username/password) alone

  2. In this example (standard settings) the points for Credentials (username/password) don't match the points (25) needed to successfully log in, and another authentication method is needed

  3. Provide points higher than 0 to enable the SMS authentication method, add 5 points to match the required level of 25 in combination with the credentials that provide for 20 points

  4. Provide points higher than 0 to enable the Email authentication method, add 5 points to match the required level of 25 in combination with the credentials that provide for 20 points

The settings below are a best practice to correctly setup multi factor authentication. In this case the combination of either SMS or Email together with the point of the credentials create the level of points needed to successfully login.

Multi Factor Authentication Level

It is also possible to add Ubiqu Authentication as an authentication method. This does require to install a mobile app to be able to login with a password numerical code.

Ubiqu Authentication is available in the Google and Apple App store.

Multi Factor login

The login interface for all users has been updated to the view shown below. Users can select their preferred option to log in successfully.

Multi Factor login

Service reports

Is our service up to standards

The Service reports page provides in an overview of the availability of our service per month.

  1. Click on SLA Reports in the menu for an overview of the availability of our services

  2. Click on the calendar icon to choose another month to see report history

  3. Click on the info icon for a brief explanation of the key performance indicator (KPI)

  4. Click on a specific service for more report details on performance history

  5. Shows the service level of a specific service for the selected month

Do you have a Modular or Tailored subscription? See your Service Level Agreement for the agreed availability.

Service Reports

Report details

The report details show more report details on performance history.

  1. Choose a from date and to date to present the graphs for a certain period

  2. The KPI Value is the measurement of an availability for the specific month

  3. The KPI Norm is the standard we strive for and use as minimum availability standard

  4. Click SLA Report overview to go back to the Service reports page

Report details

Routers

If you have a proposition that supports routers and you have a routers subscription, then you can view the status of your routers by clicking on Routers in the menu.

Routers page

The router page shows a list of your wireless routers. The data shown, is retrieved from the Router Management Platform (RMS). The actual router management is done in the RMS, which can be reached using the break-out buttons in the list.

Routers List

Elements on the page are:

  • The name of the router

  • The name of the KPN Things project, this router belongs to

  • The router model name

  • The router status (Online, Offline, Pending)

  • The ICCID of the (primary) SIM-card that is inserted in the router

  • The IMEI of the the router

  • The signal strength that is measured by the router (in dBm)

  • The version of the routers firmware

  • Information on credits for this router:

    • Credit Type

    • Credit Expiry Date

LoPy5

This is an old development board which is no longer available for purchase and should not be used for new designs.

The LoPy4 is a quadruple bearer MicroPython enabled development board (LoRa, Sigfox, WiFi, Bluetooth) perfect enterprise grade IoT platform for your connected Things. With the latest Espressif chipset the LoPy4 offers a perfect combination of power, friendliness and flexibility.

1. Setup your LoPy4 device

Use the from the Pycom documentation to get started with your LoPy4. Make sure you setup both the and . You should be able to when continuing this getting started.

2. Determine device identifiers

The LoPy4 is a LoRa device, and to register a LoRa-device to a network you need three values: DevEUI, AppEUI and AppKey. These values must be registered in KPN Things and in the device. For more information on these three values you can read in the LoRa documentation.

3. Register your LoPy4 to KPN Things

Open the KPN Things Portal

Open the . Go to the All Devices page and click on Add new Device.

Fill in your device information

  1. Select the Own LoRa device (preset connectivity) device type

  2. Enter a name for your LoPy4

  3. Click Add Device to continue

Provide Network Information

Fill in the three values you determined in the previous step . Then click Add Network Info to save the network information and then Finish to continue.

Check your newly created Device

You are now on the Device Detail Page. In the LoRa tab you will see the network status. This can temporarily be Pending creation, but if you refresh the page it should switch to Active. This means your device is correctly registered to the network.

If the network status sticks to Pending creation, you could try to delete the Device and register the device again.

If the Network Status ended up in Failed, something has gone wrong. Most likely the DevEUI is already registered through another application like Thingpark or the LoRa Developer Portal. Please make sure you remove the device registration from the other application and re-add the device in the Things Portal. For more information consult our .

5. Program your device

Use the example from Pycom to get your device connected with our LoRa network and have it send data to KPN Things.

Check incoming data in the Portal

Now your LoPy4 has joined and is sending data, you could visit the LoRa data tab on your Device Detail Page in the Portal. You should see your Join request and Join accept appear like in the screenshot below and at this point you will see more data as well.

Read more information about what you see on the tab.

Setup data flow in KPN Things

You now successfully connected your LoPy5 device to KPN Things! To further setup your data flow in KPN Things, you can go to the next step:

Real-time status

Check the operational status of our platforms in case of issues

The Real-time status page provides you with the current operational status of our platforms.

  1. Click on Incidents in the menu for an overview of the status of our platforms

  2. If Overall status is OPERATIONAL all underlaying items are functional

  3. All major incidents are shown in the overview with one of the statuses below


Investigating

Under investigation but no cause has yet been found

Identified

We found the cause, we are going to apply a fix

Monitoring

We applied a fix and monitor if the platform remains stable

Resolved

Everything is working fine again

Closed

All operational actions are done, we have taken up the learnings to improve our services


  1. This is the date and time of the last update of the incident

  2. The information on this page is also available on in case the Things Portal itself is inaccessible and also more detailed updates on the incident are available

Scroll down on the Real-time status page to check what subsystem is impacted.

Subsytem details

Below the KPN Things Incidents overview more details are available to show which service has been affected.


Cisco Control Center API

There is a disruption to the API, please use Cisco Control Center as a workaround when possible

Cisco Control Center Portal

There is a disruption at the Cisco Control Center portal, please use Things Portal as a workaround when possible

KPN Things API

There is a disruption to the API, please use KPN Things Portal as a workaround when possible

KPN Things Engine

There is a disruption of the KPN Things backend that results in not receiving data for customers that use Flows

There is no workaround available for Freemium, Explorer and Modular subscriptions. In this case M2M data will be lost. LoRa data will be buffered and forwarded after the incident is resolved.

KPN Things Portal

There is a disruption to the user interface of Things Portal, please use the KPN Things API when possible or wait with making changes until the incident is resolved

LoRa Connectivity

There is a disruption of the whole or a large part of the LoRa network

There is no workaround available for LoRa network interuptions. Depending on the type of disruption, it may be possible that data will still be delivered after the incident is resolved.

M2M Connectivity

There is a disruption of the whole or a large part of the M2M networks of KPN in the Netherlands

M2M Roaming Connectivity

There is a disruption in the roaming domain or with a roaming partner.

There is no workaround. We are aware of the impact of disruptions in the domain of our roaming partners for you as a user. We report this as an incident to our partner to solve the issue.

RSS feed

The RSS feed (Really Simple Syndication) makes it possible to automatically receive status updates. You will need an RSS-feed reader or plugin in applications like Slack or Mattermost to be able to recieve the updates.

The RSS feed for status updates is located at the following URL:

KPN LocationTag III (without GPS)

Also known as StreamLineTM-2000/P1A3.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii

  • Device Specification UUID: 3df8f443-5b48-43f6-b2bf-2f0ea2ee68a8

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

+ Location by LoRa On Premises Gateway reception

  • UUID: eaf38fe3-e136-436e-9f47-10c8375d871f

  • Description: Add location data to messages that are received by known .

  • Exchange: decoder.lora.lrr.exchange

Expected SenML outputs

Unknown

+ LoRa Geolocation data

  • UUID: d4c55333-bb8d-4002-91f8-8e4e428207c0

  • Description: Add data to messages where location could be calculated.

  • Exchange: decoder.location.data.kpn.actility.exchange

Expected SenML outputs

Unknown

Lora location data

Add data to messages where it could be calculated and data received by known :

See for more information.

‹ Encoded device send interval

  • Protocol: LoRa downlink

  • Description: Change the send interval of your Device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: interval

    • Value: 2h (translates into → 1500b402201c1500b802201c16)

Generic M2M device (with Internet connection)

Connect your own M2M Device that communicates over the Internet. Useful when only Device management data is sent to KPN Things. Part of the Device Management + Connectivity only proposition.

  • Supported network type(s): MQTT,INTERNET,KPNM2M

  • Device Specification ID: own-m2m-with-internet

  • Device Specification UUID: cf872c9e-9343-47db-b972-35dc4df340c8

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

› Decoded ThingsML and raw SenML data

  • UUID: c876bac7-c664-4297-a954-2666eb6aae54

  • Description: One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

  • Exchange: decoder.thingsml.json.exchange

Expected SenML outputs

Unknown

› Decoded ThingsML and raw SenML data (v2)

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

Example SenML

This is completely dependent on the SenML or ThingsML input and could output almost any SenML. The decoded ThingsML below is just illustrative of what is possible.

= SenML data encoding

  • Protocol: HTTP response

  • Description: Send SenML data to your device.

  • Multiple commands in one downlink: No

  • No input mapping

Device Simulator (Mobile Phone app)

A device specification for the Things Device phone App.

  • Supported network type(s): INTERNET

  • Device Specification ID: own-phone-qr

  • Device Specification UUID: 3f77934a-2310-4504-89d7-08f40a25c2b8

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

› Decoded ThingsML and raw SenML data

  • UUID: 55e10f0f-23e6-40c3-a1f0-1e468f9cca1c

  • Description: One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

  • Exchange: decoder.thingsml.json.exchange

Expected SenML outputs

Unknown

› Decoded ThingsML and raw SenML data (v2)

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

This decoder also decodes data.

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

Example SenML

This is completely dependent on the SenML or ThingsML input and could output almost any SenML. The decoded ThingsML below is just illustrative of what is possible.

= SenML data encoding

  • Protocol: HTTP response

  • Description: Send SenML data to your device.

  • Multiple commands in one downlink: No

  • No input mapping

LoRa connectivity configuration

Change your connectivity profile

The LoRa Connectivity configuration page gives you the opportunity to choose the communication profile that best suits your application.

The Devices overview provide you with a list of all devices als the connectivity used.

  1. Click on Devices to show the device overview on the Things Manager tab

  2. Search for a device Name of DevEUI to find the device and click the icon to open the Device and Connectivity details

  3. Or click on the icon to open the Device and Connectivity directly in your device overview list

  1. Click on the Connectivy Plan name to go to the LoRa Connectivity configuration section

  2. Or open the LoRa tab and scroll down to the LoRa Connectivity configuration section

  1. Click Edit LoRa Connectivity configuration

  2. The page show an overview of the current connecivity settings for this device

  3. Want to learn more about the different settings how they work then click the link to go to the about LoRa connectivity configuration

Edit configuration

The connectivity plan can be updated here, by selecting the Connectivity plan selection box a new dialog opens In this dialog all available connectivity plans are shown, it shows per connectivity plan if it includes geolocation.

1

Configure Connectivity plan

Click on the Connectivity plan selector

2

Select Connectivity plan

Select the preferred connectivity plan

3

Change the profile and motion indicator

The device profile and motion indicator of a LoRa device can also be updated

If the device profile is changed the motion indicator is automatically updated, but it can be changed if required afterwards.

4

Save the settings

Select Save to apply the change. The connectivity plan of the LoRa device is now updated.

Of course you can also click Cancel to keep your current setting.

LoRa connectivity configuration

Change your connectivity profile

The LoRa Connectivity configuration page gives you the opportunity to choose the connectivity profile that best suits your application.

The Devices overview provide you with a list of all devices als the connectivity used.

  1. Click on Devices to show the device overview on the Things Manager tab

  2. Search for a device Name of DevEUI to find the device and click the icon to open the Device and Connectivity details

  3. Or click on the icon to open the Device and Connectivity directly in your device overview list

  1. Click on the Connectivy Plan name to go to the LoRa Connectivity configuration section

  2. Or open the LoRa tab and scroll down to the LoRa Connectivity configuration section

  1. Click Edit LoRa Connectivity configuration

  2. The page show an overview of the current connecivity settings for this device

  3. Want to learn more about the different settings how they work then click the link to go to the about LoRa connectivity configuration

Edit configuration

The connectivity plan can be updated here, by selecting the Connectivity plan selection box a new dialog opens In this dialog all available connectivity plans are shown, it shows per connectivity plan if it includes geolocation.

1

Configure Connectivity plan

Click on the Connectivity plan selector

2

Select Connectivity plan

Select the preferred connectivity plan

3

Change the profile and motion indicator

The device profile and motion indicator of a LoRa device can also be updated

If the device profile is changed the motion indicator is automatically updated, but it can be changed if required afterwards.

4

Save the settings

Select Save to apply the change. The connectivity plan of the LoRa device is now updated.

Of course you can also click Cancel to keep your current setting.

status.kpnthings.com
https://kpnthings.statuspage.io/history.rss
documentation
Devices overview
Configuration section
LoRa Connectivity configuration
documentation
Devices overview
Configuration section
LoRa Connectivity configuration

Sensors

Things devices

Interested in buying some of these KPN Things devices? Head on over to https://www.kpn.com/zakelijk/internet-of-things/hardware.htm for more information!

In KPN Things the Device type is used to express the connectivity and data capabilities of a Device, like whether it is a LoRa or an M2M device, and its compatibility to Data Processing components such as decoders and encoders.

KPN Things supports the devices as shown in the subpages of this page.

KPN Things Devices versus Supported Devices

We have two categories of Device types, namely KPN Things Devices, when you buy a Device from us, and Supported Devices, when you bring your own Device to KPN Things. Each categorie has its own set of Device Management features in the Portal.

KPN Things Devices

Supported Devices

Bring or Buy

Buy

Bring yourself

Add to / remove from Portal

❌

✅

Edit name and description

✅

✅

Activate / deactivate in Portal

✅

✅

Send / receive raw payload

❌

✅

Send commands

✅

🟡 *

Device Twin - Reported state

✅

✅

Device Twin - Clear measurements

❌

✅

Device Twin - Desired state

✅

🟡 *

Device Twin - Metadata

❌

✅

Legenda ✅ - Available for this device type. 🟡* - Configurable for your own device, coming soon. ❌ - Not available for this device type.

Value

How to get it

DevEUI

Use this code snippet from the Pycom documentation to retrieve the pre-programmed EUI from your LoPy4. You can use that one as DevEUI.

AppEUI

You can use this general purpose AppEUI: 0059AC00000FFFFF

AppKey

Every device should have its own unique AppKey, since it is the root security key of your device. You can generate a unique AppKey here: https://www.loratools.nl/#/keys.

getting started
hardware
software
program the module
Device Identification
KPN Things Portal
Determine device identifiers
FAQ
LoRaWAN with OTAA
LoRa Data History

+ Location by LoRa On Premises Gateway reception

eaf38fe3-e136-436e-9f47-10c8375d871f

Add location data to messages that are received by known LoRa On Premise Gateways.

+ LoRa Geolocation data

d4c55333-bb8d-4002-91f8-8e4e428207c0

Add LoRa Geolocation data to messages where location could be calculated.

LoRa location data

de36e554-393f-58b5-8b89-d35ee4aa04a4

Add LoRa Geolocation data to messages where it could be calculated and data received by known LoRa On Premise Gateways

‹ Encoded device send interval

2bdc6ff0-814c-41cd-8292-61500cb54875

Change the send interval of your Device.

LoRa On Premise Gateways
LoRa Geolocation
LoRa Geolocation
LoRa On Premise Gateways
Geolocation and Local Gateway
KPN LocationTag III (without GPS)

› Decoded ThingsML and raw SenML data

c876bac7-c664-4297-a954-2666eb6aae54

One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

› Decoded ThingsML and raw SenML data (v2)

45b27e02-8136-540b-a4e1-509d7a2c2aa2

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

= SenML data

cc35ab44-01d3-4086-885a-a30cb37c0a12

Send SenML data to your device.

[
    {
        "bn": "urn:dev:DEVEUI:fe782a953c642aeb:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]
Generic M2M device (with Internet connection)

› Decoded ThingsML and raw SenML data

55e10f0f-23e6-40c3-a1f0-1e468f9cca1c

One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

› Decoded ThingsML and raw SenML data (v2)

9bbb7980-b08b-5902-8d10-1fe68f2c64f7

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

= SenML data

e83cf205-3ef5-44c3-979a-fa7dd3e132c8

Send SenML data to your device.

[
    {
        "bn": "urn:dev:DEVEUI:fe782a953c642aeb:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Device Simulator (Mobile Phone app)

Smartrak

The Smartrak M2M GPS tracker is a device produced by Streamline and used for demo purposes. When you push the button the device will send its location to KPN Things.

Smartrak M2M tracker

Check contents of the test device box

The first step is to check if everything is present in the box:

Contents:

  • Battery (1)

  • Logic board (2)

  • Bottom part of the casing (3)

  • Top part of the casing (4)

  • KPN M2M SIM card (5)

  • Wireless Charger (not shown)

Box contents

1. Insert SIM and assemble device

Assemble the device

Step 1: Insert the SIM-card and write down the IMEI (1), we need that later.

Step 2: Connect the battery.

Step 3: Connect the vibration motor. This can be a bit of challenge, but you can do this. The connector has to be pushed on the terminal from above instead of sliding

Step 3: Connect the vibration motor

Step 4: Connect the bottom part. This is the wireless charging circuit.

Step 4: Connect the wireless charging circuit

Step 5: Put everything together.

Step 5: Stack the components as shown

Step 6: Rotate the two parts as shown. The on/off button has to be on the side of the vibration motor.

Rotate the two parts a shown.

Step 7: Click two parts of the casing together.

Step 7: Click two parts together, and done! 🥳

Charge the device

  1. Plug in your QI charging device.

  2. Place the device on the QI charging device and allow it to charge for a few hours.

  3. You should hear a beep when the device starts charging.

2. Configure the device in the KPN Things Portal

Open the KPN Things Portal

Open the KPN Things Portal, and log in with the credentials you received in the mail. Go to the All Devices page and click on Add new Device.

Fill in your device information

  1. Select the Streamline M2M device device type

  2. Enter a name for your test device

  3. Click Add Device to continue

Provide Network Information

Now enter the Streamline M2M specific information of your Device.​‌

  1. IMEI of your Device. This value is printed on the logic board. If you followed the assembly instructions in step 1, you have written this value down.

2. ICCID of your SIM card. This value is printed on your SIM card. Select the correct SIM card from the drop down.‌

3. Click Add Network Info to save the network information and then Finish to continue.‌

If you want, you can learn more about M2M in KPN Things.

Check incoming data in the Portal

Push the button on the device and it will send its location to KPN Things! After the push the LEDs start blinking:

  1. Lightning icon: GPS location is being searched

  2. Battery icon: Device is turned on / charging

  3. Waving person icon: indicates the button is pressed

The first time after connecting the battery it can take up to 5 minutes to receive a message. If the LEDs do not start blinking try to push and hold the on / off button for 10 seconds. The battery LED in the middle should start blinking. If still nothing happens, try to charge the device for at least 2 hours.

You should now visit the Device Detail Page in the Portal of this Device. In the connectivity block, you should see that the last message time indicates that KPN Things just received a message from your Device!

Continue to the next step:

Device simulator app

Our KPN Things Device simulator app for iOS or Android allows you to test KPN Things with your own mobile phone as a device. If you do not yet have a suitable device, you can use the app to still build a working data flow.

Features

  • Mobile as a device - Easily add the app as a Device in your KPN Things account.

  • Choose sensors - The app allows you to choose which phone metrics to use as Device data

  • Choos your interval - Send the data once or at a regular interval

Device simulator app features

Requirements

You will need asmartphone (iOS or Android) and a computer. Each step of this article ses the smartphone or computer icon to tell you on what apparatus you should be taking those steps.

Add your phone

Follow the steps to add your mobile as a device.

1

Download the app

Download the app on your mobile phone. The app is available on both iOS and Android. Go to the app store and download the app via the links below or search in the app store for KPN Things Device simulator.

2

Register your app in KPN Things

On your computer go to the KPN Things portal.

  1. Click on All Devices to show the device overview on the Things Manager tab

  2. Click on Add new Device to add your mobile phone

  1. Click on Device Simulator

  2. Give your device a recognizable name

  3. You can add a description, this is useful when you have multiple devices and want to provide context. This is not a mandatory field.

  4. Click Add Device to finish this step

  1. Now you should see the DvnUUID and Shared secret. Those are the credentials for you Device simulator app. This information is added in the next step by scanning the QR code with the app.

This is the only time the Shared Secret will be visible, so save the info in a secure place.

3

Scan the QR code with the ap

Open the KPN Things Device simulator app on your mobile phone and click the Scan QR-code button. Point your camera to the QR-code in the Portal to import the credentials into your Device simulator app.

4

Finalize setup

On your computer now first click Add Network Info and then Finish to finalize the registration. you will now be redirected to the Device page, which we will look at in a later step.

5

Send your first measurement

On your smartphone now select which measurements you want to be send.

  1. Click the corresponding checkboxes by selecting or deselecting to choose measurements

  2. Click Send data now to send your first measurement

6

Check the incoming message

In KPN Things portal refresh the page. You now see a value next to Last message, indicating that the measurement is recieved from your Device simulator app.

7

Ready to build your data flow

You are now ready to setup your first data Flow in KPN Things.

Or connect your own test devices with out other device templates.

Connect devices

Connect your device to KPN Things

Choose one of the below device types to continue setting up your IoT solution.

Sim card

You can request KPN M2M sim cards at https://portal.kpnthings.com. Register for free and find the link in the M2M is now available notification to order your SIM cards.

Continue configuring your SIM cards.

Device simulator app

We recommend starting with connecting the KPN Things device simulator app. You can use this app to simulate a device and send messages whenever your want.

Continue with the Device simulator app.

Supported devices & KPN devices

KPN Things supports commonly used IoT devices out of the box. If you want to get started with one of these devices, continue with Supported devices & KPN devices.

Developer devices

Start experimenting and discover the wide range of possibilities with these developer devices.​

Old developer devices

These development boards are no longer available for purchase and should not be used for new designs.​

Other devices

To connect other devices head over to the Device SDK.

Continue to the next step:

Device SDK

Since KPN Things is a data platform, it prescribes with which data format your Device should communicate with KPN Things. The KPN Things Device SDK helps you to quickly connect your Device to KPN Things.

Device SDK on your Device to set up communication with KPN Things.

You can find the Device SDK library on Github: https://kpn-iot.github.io/thingsml-c-library/

The Device SDK is mainly based on the ThingsML data format. ThingsML is an extension of SenML created by KPN. For SenML we have also developed a library which is available for C, Python, and MicroPython. Visit the SenML library documentation.

The Device SDK is available in the following languages:

  • Things Device SDK in C++

  • Things Device SDK in Python

  • Things Device SDK in MicroPython

Supported devices

Specifically, the Device SDK has been tested on the following Devices:

Supported devices

Specifically, the Device SDK has been tested on the following Devices:

Language

LoRaWAN

M2M

Internet

C++

Below are old devices, do not use for new designs

  • (Arduino)

  • (Mbed OS)

Below are old devices, do not use for new designs

  • (Arduino)

  • PC (via )

Python

  • Raspberry 3

  • PC

Micro

Python

This is an old device, do not use for new designs

This is an old device, do not use for new designs

Generic Device (Internet connected)

Generic Device (Internet connected)

Connect your (virtual) Internet-connected device to KPN Things.

  • Supported network type(s): INTERNET

  • Device Specification ID: own-internet

  • Device Specification UUID: b2c5c303-4f74-4b58-95f5-b80455fdafbc

Decoders
decoderSpecificationUUID
Description

› Decoded ThingsML and raw SenML data

16799a1c-9dea-4fc9-83b1-03d4562aba69

One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

› Decoded ThingsML and raw SenML data (v2)

4a8f1ec7-df52-5a57-a281-422e000d3b1d

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

Encoders
encoderSpecificationUUID
Description

= SenML data

86805e45-c394-4ebc-a2e1-a47079a57999

Send SenML data to your device.

› Decoded ThingsML and raw SenML data

  • UUID: 16799a1c-9dea-4fc9-83b1-03d4562aba69

  • Description: One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

  • Exchange: decoder.thingsml.json.exchange

Expected SenML outputs

Unknown

› Decoded ThingsML and raw SenML data (v2)

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

Example SenML

This is completely dependent on the SenML or ThingsML input and could output almost any SenML. The decoded ThingsML below is just illustrative of what is possible.

[
    {
        "bn": "urn:dev:DEVEUI:fe782a953c642aeb:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]

= SenML data encoding

  • Protocol: HTTP response

  • Description: Send SenML data to your device.

  • Multiple commands in one downlink: No

  • No input mapping

Supported devices and KPN Devices

For more information about the devices that are supported in Things portal head over to . Would you like to add your own device, head over to the .

1. Add new Device

Head to the Devices in the left menu. Click the Add new device button in the left top corner. This is the place where you register new Devices and add them to KPN Things and our networks.

If you have more than one Project, you will have to select to which Project you would like to add your Device.

2. Select your Device type

Depending on your , available Device types may vary.

You can select an existing device-type offered by KPN Things, or create a new device type using the .

3. Fill in Device Information

  • Name: Typically can be a Device ID or the name of a physical asset which the device is linked to.

  • Barcode (optional): Barcode or serial number used to identify a device.

  • Description (optional): Any additional device information.

When done, click Add Device to continue.

4. Provide or get Network information

This step will look differently, depending on the type of network information.

Generated LoRa network information (programmable device)

If you selected Own LoRa device (programmable) device type in the previous step, the Portal will give you the OTAA join information (DevEUI, AppEUI and AppKey). Make sure to copy-paste or write down the provided identifiers. For security reasons the secret values will not be retrievable through the Portal after closing this page.

Click Finish to continue.

Provided LoRa network information (device with preset connectivity)

If you selected Own LoRa device (preset connectivity) or a supported device type, you should provide the LoRa network information for your device in this step.

Click Add network info to save the network information and then Finish to continue.

M2M network information

  1. IMEI of your Device.

  2. ICCID of your SIM-card - select the correct SIM card from the drop down. If you have an Early access SIM, you choose the option "Add early access SIM" and enter the ICCID of the SIM manually in the newly appeared input field (see A in the screenshot below).

  3. Shared secret

After entering the values, click Add network info to save the information, or click Finish without adding Network to continue without adding network information to your Device object.

Internet network information

  1. DvnUUID - the unique number to identify incoming data from your Device. Your Device UUID is prefilled, but you can enter any UUID you like.

  2. Shared secret

5. Check incoming data in the Portal

You can visit the LoRa data or M2M data tab on your Device Detail Page in the Portal. You should see messages here as soon as the device has activity on the network.

You're ready for the next step:

Send your data to Azure SQL

Get your KPN Things device data in a Azure SQL database. This QuickStart will help you set up a KPN Things flow towards an Azure Eventhub. The Azure Eventhub is used to ingest data in to the Azure platform. An Azure Streamanalytics job will process incoming data. The data will be stored in an Azure SQL database. For this QuickStart you’ll need a KPN Things account with an active device (or download the ) and an active Azure subscription.

In this QuickStart you’ll learn how to:

  • Create and configure the necessary Azure resources

    • Create and configure Azure Eventhub

    • Create an Azure SQL database with appropriate data tables

    • Create and configure a Stream Analytics job

  • Setup a KPN Things Flow with

Prerequisites

  • KPN Things Account with active device

    • If you don’t have an KPN Things account create a .

  • Azure subscription

    • If you don't have an Azure subscription, create a .

Step 1: Setting up the Azure environment

In this section you’ll be guided through the creation and configuration of an Azure event hub, a stream analytics job and an Azure SQL database. It’s advised to create a new resource group in which to bundle these newly created resources.

Creating and configuring Azure event hub

The Azure EventHub is used for the ingestion of data. Don't have an Azure Event Hub yet? Head on over to the Microsoft documentation to learn to create an Azure Event Hub:

From this point, when following the link, you’ve created everything to ingest data to Azure. You have created a resource group, an Event Hubs namespace, and an event hub.

Create an Azure SQL database with appropriate data tables

Now we have prepared the input data by creating the Event Hub. We can now proceed to the creation of the Azure SQL database for the data output. Don't have an Azure SQL database yet? Head on over to the Microsoft documentation to learn how to create an Azure SQL database:

At creation, remember to select the resource group created earlier. This way all resources for this quick start will be grouped together. Furthermore, make sure to write down the ‘Server admin login’ and ‘Password’. Under additional settings don’t select sample as we want to create our own data table later on.

Query the database

When the creation of the database is complete we can create the necessary table. Go to the query editor in the Azure portal as described in the documentation link:

In the query window run the query underneath to create a new data table in the database:

When completed a new data table called eventhub will be created. Additionally, two indexes will be created to enable quick searches on ‘bn’ and ‘bt’. These columns will hold the KPN Things device identifier and measurement timestamp. The newly created data table will be visible in the left view under tables.

At this point you’ve created the data input and the data output by leveraging an Event Hub and an Azure SQL database. In the next step we’ll set up the data stream from input to output by using Azure Streamanalytics.

Create and configure a Stream Analytics job

Now we have prepared the input data by creating the Event Hub and the data output by creating an Azure SQL data store. Now let’s set up Streamanalytics to tie it all together.

The following Microsoft quickstart will guide you through the creation of an streamanalytics job. The entire article describes the usage of an iothub for input data and blob storage for output. Remember in this quickstart we will be using Eventhub for input and Azure SQL database as output.

At ‘Configure job input’ select Event Hub and point to the Eventhub created earlier. Use ‘eventhubinput’ as alias.

At ‘Configure job output’ select SQL database and point to the Azure SQL database created earlier. Set the database table to ‘eventhub’ to match the table created during the previous step. Use ‘sqloutput’ as alias.

At ‘Define the transformation query’ select Query and update with the query underneath. Make sure you are using the input and output aliases as created under input and output

Now Save your input and start the Stream Analytics job.

At this point you’ve created a data ingestion point (Event Hub) a streaming data processor (Stream analytics job) and data storage (Azure SQL database) . In the next step we’ll connect KPN Things to Azure!

Step 2: Setup a KPN Things Flow with Azure Event Hub destination

Let’s put things together! Now everything is set up in Azure all we need to do is setup a data flow in KPN Things. This Flow will send device data towards an Azure Event Hub destination.

  • Go to KPN Things and add a flow and give it a name and description

  • Link new or existing device(s)

  • Now go back to the flow and set up the data processing by enabling the decoders for the selected device

  • Add a destination for the flow. Select ‘Create new Destination’. Fill in all necessary details related to the Azure event hub created in Step 1. Don’t know where to find all the required parameters? Follow

When all parameters are set the destination should be active. You should now have a working KPN Things Flow towards Azure Event hub.

Congratulations!

You’ve created your first flow towards Azure. All Data produced by the devices in the flow will now be sent to Azure, get processed by the Stream Analytics Job and will be stored in the Azure SQL database.

Trackers

Things devices

Interested in buying some of these KPN Things devices? Head on over to for more information!

In KPN Things the Device type is used to express the connectivity and data capabilities of a Device, like whether it is a LoRa or an M2M device, and its compatibility to Data Processing components such as decoders and encoders.

KPN Things supports the devices as shown in the subpages of this page.

KPN Things Devices versus Supported Devices

We have two categories of Device types, namely KPN Things Devices, when you buy a Device from us, and Supported Devices, when you bring your own Device to KPN Things. Each categorie has its own set of Device Management features in the Portal.

Legenda ✅ - Available for this device type. 🟡* - Configurable for your own device, coming soon. ❌ - Not available for this device type.

Projects

Project types

The Project type determines what you can and may do in KPN Things Portal. Some KPN Things Projects provide you with more features in the Portal than others.

Depending on the subscription of your Project, one or more of the following restrictions can apply:

You can find applicable restrictions on the of a Project.

Project attributes

A project has the following attributes:

  • UUID - the technical identifier of your project.

  • Name - the name you give to your project.

  • Description (optional) - further explanation of your project.

  • Creation date - the moment your project was created.

  • Subscription - the type of project you have, determined by what product you bought.

Freemium project

The Freemium Project gives you free limited access to the KPN Things Portal:

  • One Project in KPN Things Portal.

  • Access to our to get you started with programming your Device.

  • Integrated KPN LoRa functionality:

    • Free registration of up to 3 devices to KPN's nationwide LoRaWAN network.

    • Free use of .

    • Insight in LoRaWAN network communication.

  • Additionally, you can order KPN Things SIM cards to connect M2M devices to KPN Things:

    • Connect up to 2 M2M devices to KPN Things for free.

    • Data communication over HTTP (MQTT will be available in the future).

    • Access to our LTE-M, 2G, 3G, 4G, and 5G networks.

    • European roaming included.

  • Optional payload decoding for supported device types.

  • Forward your data to up to 3 different .

  • KPN Things access is subject to your .

Your Projects

You can find your Projects by clicking on your Customer name in the left menu. If you are a free user, you will get one project named My first project.

Do you want to upgrade one of your Projects? Click on Upgrade.

Project overview

When clicking a project you go to the Project overview page. It gives you an overview of a selected Project:

  • You can see the name, description and type of subscription of the selected project.

  • Link to the .

  • You can also see which , and are part of this project.

Project details

On this page you will find technical details of your project. At the project details page, you can edit the name and description of your project yourself.

Connectivity

KPN Things Data Management support multiple types of connectivity

What is Connectivity in KPN Things?

Connectivity management is part of Device management in KPN Things, just like Connectivity is part of your Device in real life.

But what if connectivity is not yet linked to a Device? For instance, you want to view all KPN Things SIM cards you have that are not yet put into a Device. For that and other overviews of your (unlinked) Connectivity we created the .

KPN Things comes with two types of integrated networks:

  • Our country wide LoRa-network

  • Our cellular M2M network (2G/3G/4G/LTE-M) with non-steered global roaming.

Devices that are not connected to our integrated networks can still connect to KPN Things over the internet.

Since LoRa connectivity can only exist as part of a LoRa Device, the Connectivity detail page for a LoRa device is identical to the .

All Connectivity page

You can only see 'Connectivity' in the menu when at least one SIM card or LoRa connectivity is assigned to your account.

This page gives you an overview of all Connectivity items you have.

The following elements can be found on this page:

  1. The number of connectivity items you have.

  2. An overview of your connectivity items, displaying the following information:

    1. Type - Type of connectivity.

    2. ICCID / DevEUI - Unique connectivity identifier.

    3. Connection - Whether the connection is active or not.

    4. Activated on - (only for M2M) When the connectivity was first activated.

    5. Device - The Device name of the Device the connectivity item is linked to.

    6. Bundle/Rate plan - (only for M2M) The set of applied rules for your SIM card, i.e. whether you may roam and how much data you can use.

    7. APN - (only for M2M) the APN(s) your SIM card may connect with.

    8. Clicking on a row will open the of the selected connectivity item.

  3. A search bar to search in Type, Identifier and Connection.

Add new Connectivity

It is not yet possible to order more SIMs through the Things Portal. If you want to add more SIM cards to your account, please contact us:

  • For Developer accounts: through

  • For MijnKPN Zakelijk accounts: through the .

Connectivity detail page

On the Connectivity detail page of an unlinked Things M2M Connectivity item - a SIM card - you can see the following:

  1. Information of the SIM card:

    • The ICCID of the SIM card.

    • The MSISDN of the SIM card.

    • The connectivity status - Active or Deactivated.

    • The moment the SIM card has been activated for the last time.

    • The rate plan of the SIM card.

  2. Button to .

Once your Connectivity is linked to a Device, the Connectivity detail page will be unified with the . i.e. They will be identical.

Link SIM card to Device

After clicking Link Device on the Connectivity detail page, you will be given a list of Device that do not have a SIM card linked to it.

On this page you can search for the Device you are looking for using the search bar (#1 in the screenshot above). By clicking Link in the row of the desired Device (#2 in the screenshot above), you will link the SIM card to that Device.

Next, if the selected Device does not have M2M device information yet, you will be prompted to enter the IMEI and shared secret for the Device (#1 in the screenshot). If you want, you can let the Portal generate a new shared secret for your Device with the Generate button (#2 in the screenshot). After entering the values, click Save to continue (#3 in the screenshot). Learn more about .

After linking your SIM card to a Device, you will land on the .

KPN Things LoRa

of KPN Things LoRa devices.

KPN Things M2M connectivity

of KPN Things M2M devices.

Internet connected

of IP capable devices or systems.

Generic M2M device

Connect your own M2M device to KPN Things.

  • Supported network type(s): KPNM2M

  • Device Specification ID: own-m2m

  • Device Specification UUID: 7748b913-3901-4cbd-be66-96d366e85539

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

› Decoded ThingsML and raw SenML data

One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

› Decoded ThingsML and raw SenML data (v2)

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

Example SenML

This is completely dependent on the SenML or ThingsML input and could output almost any SenML. The decoded ThingsML below is just illustrative of what is possible.

= SenML data encoding

  • Protocol: HTTP response

  • Description: Send SenML data to your device.

  • Multiple commands in one downlink: No

  • No input mapping

KPN Things Devices

Supported Devices

Bring or Buy

Buy

Bring yourself

Add to / remove from Portal

❌

✅

Edit name and description

✅

✅

Activate / deactivate in Portal

✅

✅

Send / receive raw payload

❌

✅

Send commands

✅

🟡 *

Device Twin - Reported state

✅

✅

Device Twin - Clear measurements

❌

✅

Device Twin - Desired state

✅

🟡 *

Device Twin - Metadata

❌

✅

https://www.kpn.com/zakelijk/internet-of-things/hardware.htm
Arduino MKR WAN 1300/1310
Marvin LoRaWAN developer board
STM32 Nucleo-L152RE
Sodaq on
Arduino MKR NB 1500
Arduino MKR GSM 1400
Sodaq Sara AFF
Bazel
mbed LPC1768
Esp32
GPy
WiPy

Data

Flows
Connect devices
Configure a flow

​​​

Arduino MKR NB 1500

a LTE-M device

​

Arduino MKR WAN 1300/1310

a An Arduino device for LoRa

SODAQ R412M

a LTE-M device

Smartrak GPS Tracker

a M2M location tracker

Marvin dev board

a Arduino device for LoRa

LoPy4

Micropython development board with LoRa​

CREATE TABLE [dbo].[eventhub](
  [Id] [int] IDENTITY(1,1) NOT NULL,
  [EventProcessedUtcTime] [datetime] NULL, 
  [bn] nvarchar NULL, 
  [bt] [float] NULL, 
  [EventEnqueuedUtcTime] [datetime] NULL, 
  [n] nvarchar NULL, 
  [u] nvarchar NULL, 
  [v] [numeric](18, 2) NULL, 
  [vs] nvarchar NULL, 
  [PartitionId] datetime2 NULL, 
  PRIMARY KEY CLUSTERED
  ( 
    [Id] ASC 
  )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] 
GO

CREATE INDEX eventhubbn 
ON eventhub (bn) 
GO

CREATE INDEX eventhubbt 
ON eventhub (bt) 
GO
--Saving the measurements to SQL
SELECT
    CASE
      WHEN bn IS NULL THEN  LAG(bn) OVER (PARTITION BY EventEnqueuedUtcTime LIMIT DURATION(second, 1)WHEN bn IS NOT NULL)
      ELSE bn
    END as bn,
    CASE
      WHEN bt IS NULL THEN  LAG(bt) OVER (PARTITION BY EventEnqueuedUtcTime LIMIT DURATION(second, 1)WHEN bt IS NOT NULL)
      ELSE bt
    END as bt,
    EventProcessedUtcTime,
    EventEnqueuedUtcTime,
    n,
    u,
    v,
    vs,
    PartitionId
INTO
    [sqloutput]  
FROM 
    [eventhubinput]
device simulator app
Azure Eventhub destination
free developer account
free account
the instructions here.

Limit

Description

End date

The moment your project will expire. Make sure to extend your Project before this date to prevent loss of data.

Device limit

The maximum number of unique devices allowed in your Project. Devices that are linked to multiple Flows in the Project only count as one.

Flow limit

The maximum number of Flows allowed in your Project.

Destination limit

The maximum number of Destinations allowed in your Project. Destinations that are linked to multiple Flows.

will count for the number of links they have in this Project.

Allowed Device types

The device types that are available in your project. Learn more about device types.

Allowed Network types

The type of networks that are available in this Project.

Project detail page
Device SDK
LoRa Geolocation
Destinations
Terms of Use
Project details
Flows
Devices
Destinations

› Decoded ThingsML and raw SenML data

755d9cc5-e5cf-4a42-88dc-bb17458c58fe

One decoder to forward raw SenML data and decoded ThingsML data sent by the device.

› Decoded ThingsML and raw SenML data (v2)

52a80810-0225-5831-9596-c07d8a746f10

Decoder that forwards raw SenML data and decoded ThingsML data sent by the device.

= SenML data

58e00104-d1ce-4a8f-acc0-8fe860b9ba88

Send SenML data to your device.

[
    {
        "bn": "urn:dev:DEVEUI:fe782a953c642aeb:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]
Understanding and Interpreting SenML Data
Generic M2M device
IoT devices
Things Creator section
Project subscription
Things Creator app
Generated LoRa network information (programmable device)
Provided LoRa network information (device with preset connectivity)
M2M network information
Internet network information
All Connectivity page
Device detail page
Connectivity detail page
[email protected]
IoT service portal
link SIM card to a Device
Device detail page
Connecting M2M Devices
Device detail page
Allows the connection
Allows the connection
Allows the connection

Customer accounts and users

Customer account types

There are 2 types of accounts: a KPN Developer account and a MijnKPN Zakelijk account.

Both types of account are part of our GRIP platform. Grip is developed by KPN to provide secure and easy access to your (KPN) applications. Through the GRIP Portal you can manage your KPN application subscriptions and you can perform user management. The exact functionality you have in the GRIP Portal depends on the subscriptions you have for different KPN products. Learn more about GRIP.

KPN Developer account

If you have registered for free for the KPN Things Portal, you have acquired a KPN Developer account. With this free account you also get a Freemium Project.

MijnKPN Zakelijk account

Are you interested to use KPN Things with your company? Or do you already have a MijnKPN Zakelijk account and do you want to add KPN Things to the products you are purchasing from KPN? Please contact our sales support through [email protected] for more information. Learn more about MijnKPN Zakelijk.

Delete account

Do you wish to delete your account? Please send an email to [email protected] with the request to be deleted from the KPN Things Portal.

Please attach a screenshot of your Profile page so we have the right information to remove your credentials from our system.

Customer Account details

The Customer Details page can be reached through the account menu drop down (in the top right of the Portal interface).

Opening your Customer Details

This page shows you the details of the subscription you or your company has on KPN Things.

On this page you see the general details of your KPN Things account:

  1. The customer details we have on you.

  2. The unique Customer ID of your account. Useful when contacting support.

  3. The GRIP tenant ID of your account, useful when starting to use Things API access.

Users

You can add new users and manage your users in the GRIP Portal, which is accessible through the link: https://grip-on-it.com/.

Add a User in GRIP

Log into the GRIP Portal as administrator.

  • If you have a KPN Developer account, you will be administrator in the GRIP Portal.

  • If you have a MijnKPN Zakelijk account, you should ask your local administrator for access.

Learn more about the account you use to access KPN Things.

2.1. Go to User management

To be able to create API Keys, you need to be an administrator in the GRIP Portal.

Then, open the Admin panel using the role drop down (#1 in the screenshot), click on Identity in the side menu (#2 in the screenshot) and click on Users (#3 in the screenshot). This brings you to the User management page. Now, click Add to add a new User (#4 in the screenshot).

2.2. Create new User

In the following pop-up, fill in the details of the new User. Then click Add to create your new User.

2.3. Give new User access to KPN Things

You need to give your newly created User access to the KPN Things service before you can use it. For this, click on Services and roles (#1 in the screenshot), and click on Add a service (#2 in the screenshot).

A modal will open. Click on the checkbox next to KPN Things (#1 in the screenshot), then select the desired role(s) and access level(s) (#2 in the screenshot) for your new User and hit Add (#3 in the screenshot).

Then, click Save to finally give your User access to KPN Things.

Roles and Access Levels

When adding new User or API key for KPN Things, one or more Roles must be selected to grant the User or API Key a set of permissions. The below list shows the available roles for KPN Things and describes what levels of access each of the roles gives to the user in KPN Things.

Role
Description
Access

Things Manager Admin

Full management access to the Things Manager

To Add/Update/Remove all objects, like devices, flows, destinations etc.

Things Manager Editor

Partial management access to the Things Manager

To Add/Update objects like devices, flows, etc., but not to Remove those objects

Things Manager Read-only

Read-only access to the Things Manager

To View all objects, but not to Add/Update or Remove any of those objects

Things Support

Access to the support pages in the Things Portal

To View all support pages and documentation

Finance Read-only

Access to costs and contract in the Things Portal

To View the predicted costs of the current month and items and discounts on your contract

Things Creator Admin

Full management access to the Things Creator

To Add/Update/Remove your own device types, decoders and scripts.

Things Creator Read-Only

Read-only access to the Things Creator

To View your own device types, decoders and scripts.

Viloc

Viloc Tag
  • Supported network type(s): KPNLORA

  • Device Specification ID: supported-viloc

  • Device Specification UUID: 5cc004e1-3950-4d62-a9ea-34fcc6a1de0c

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

d2f7c6ec-7b47-45e6-adaf-a0ffc2cfd28a

Add data to messages where location could be calculated.

= Raw LoRa payload

881d92e7-d3f1-4f3b-983d-daf451efad3c

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

f88a69e3-fa7f-513a-a3a3-cf1f1e3617b2

Forward the raw LoRa payload and port number without decoding.

Encoders
encoderSpecificationUUID
Description

= Raw LoRa payload

da915967-082c-4a1c-9c95-0361ddb20ec9

Send raw LoRa payload to your device.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

payload

string

port

number

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

= Raw LoRa payload

  • UUID: 881d92e7-d3f1-4f3b-983d-daf451efad3c

  • Description: Forward the raw LoRa payload and port number without decoding.

  • Exchange: decoder.lora.passthrough.exchange

Expected SenML outputs

Unknown

Marvin development board

This is an old development board which is no longer available for purchase and should not be used for new designs.

Marvin is the fastest start with LoRa and the Internet of Things. It’s the perfect introduction to IoT for your organization, and is also used in education. Marvin uses its LoRa connectivity to connect to the internet from anywhere in the world where there is LoRa coverage.

1. Setup your Marvin

This part of the getting started is based on the .

Setup your Arduino environment

  • Download the and follow the installer. We'll use it later on to program the Marvin.

  • Connect your Marvin to your computer.

Test your Marvin device

We will now test whether the Marvin device is working by letting a LED blink.

  • Download and open it in the Arduino IDE, or copy-paste the code into an empty Arduino IDE sketch.

  • From the Tools menu, under Board, select Arduino Leonardo

  • Also from the Tools menu, under Port, make sure the correct COM port is selected. If you have multiple options, select the one stating Arduino Leonardo. If non of your ports is labelled that way, disconnect your Marvin, reopen the menu, check which COM port disappeared, reconnect the Marvin and choose the previously identified COM port.

  • From the Sketch menu, click Upload to send the software to the Marvin. If all went well it will say Uploading complete in the bottom of the Arduino IDE and the second LED on the Marvin board will blink!

Test the LoRa module on the Marvin

The LoRa connectivity on your Marvin device is managed by the Microchip RN2483 module. With the following steps we check whether this module works correctly.

  • Download and open it in the Arduino IDE, or copy-paste the code into an empty Arduino IDE sketch. With this program we can communicate directly with the LoRa module.

  • Upload the sketch to your Marvin.

  • Meanwhile, from the Tools menu, open the Serial Monitor

  • In the Serial Monitor, set the baud rate to 57600 baud (same as detailed in the sketch) and select Both NL & CR (#1 in the screenshot below).

Now you can directly speak to the LoRa module and get a response! #2 in the screenshot above shows you where to enter commands you want to send, and #3 highlights where answers from the module will be shown.

  • If you for instance send sys get ver, the module will return its firmware version back. This will be 1.0.1 with some historic date.

  • Now execute the command sys get hweui to retrieve the DevEUI that is stored in the module. Store the value in a text file. You'll need it when adding the device to KPN Things.

Possible other commands can be find in the module or in .

2. Register your Marvin to KPN Things

Open the KPN Things Portal

Open the . Go to the All Devices page and click on Add new Device.

Fill in your device information

  1. Select the Own LoRa device (preset connectivity) device type

  2. Enter a name for your Marvin device

  3. Click Add Device to continue

Provide Network Information

  1. DevEUI: the value you retrieved from the LoRa module in the step .

  2. AppEUI: you can use the following value: 0059AC00000FFFFF

  3. AppKey: Every device should have its own unique AppKey, since it is the root security key of your device. You can generate a unique AppKey here:

Store these three values somewhere, because you will be needing them to program your device later on.

4. Click Add Network Info to save the network information and then Finish to continue.

Check your newly created Device

You are now on the Device Detail Page. In the LoRa tab you will see the network status. This can temporarily be Pending creation, but if you refresh the page it should switch to Active. This means your device is correctly registered to the network.

If the network status sticks to Pending creation, you could try to delete the Device and and provision again (Restart at step ).

If the Network Status ended up in Failed, something has gone wrong. Most likely the DevEUI is already registered through another application like Thingpark or the LoRa Developer Portal. Please make sure you remove the device registration from the other application and re-add the device in the Things Portal. For more information consult our .

3. Program your device to send a LoRa message

Download the ThingsML library

  • From the Tools menu in your Arduino IDE click on Manage Libraries...

  • Now, in the Library Manager, search for ThingsML and click Install. When the installation is finished, click Close.

Make a sketch

From the File menu, click on Examples.

  • Now find ThingsML, then select marvin, and within that choose marvin_example, as such:

  • A sketch will open. Now update the values for the variables DevEUI, AppEUI, and AppKey in the code with the values you entered earlier in the Portal.

Run the sketch

  • Upload the sketch to your Marvin and open the Serial Monitor. You will see a lot of commands being send to the LoRa module to configure it and to join the network. At some point you will see the following:

This means your Marvin is trying to join the network. After some seconds the following line will appear

This means the device has joined our network!

If you see denied instead of accepted , move closer to your window or walk out into the garden to improve reception from the LoRa network. Then disconnect and reconnect the Marvin to your computer. You probably need some more coverage to be able to join the network.

After joining, your Marvin will send a message every 30 seconds containing an empty temperature measurement in ThingsML format. Read more about .

4. Check incoming data in the Portal

Now your Marvin has joined and is sending data, you could visit the LoRa Data tab on your Device Detail Page in the Portal. You should see your Join request and Join accept appear like in the screenshot below and at this point you will see more data as well. Learn more about .

Setup data flow in KPN Things

You now successfully connected your Marvin device to KPN Things! To further setup your data flow in KPN Things, you can go to the next step:

Arduino MKR NB 1500

Arduino MKR NB 1500 is the fastest start with LTE-M and the Internet of Things. It’s the perfect introduction to IoT for your organization, and is also used in education. Arduino MKR NB 1500 uses its LTE-M connectivity to connect to the internet from anywhere in the world where there is LTE-M coverage.

When ordering the Arduino MKR WAN 1300/1310 make sure that an antenna is included in the order since it's not delivered with the board

Before you can start you need a KPN simcard. You can order 2 free cards via

On this page you will find the window below to order a simcard.

1. Setup your Arduino MKR NB 1500

To connect the Arduino MKR NB 1500 to the computer you must use a USB cable.

Setup your Arduino environment

  • Download the and follow the installer. We'll use it later on to program the Arduino MKR NB 1500.

  • Connect your Arduino MKR NB 1500 to your computer.

  • From the Tools menu, under Board, under Arduino SAMD boards (32-bits ARM Cortex M0+), select Arduino MKR NB 1500.

  • If the board is not available go to Tool menu, under Board select Board Manager and search for the Arduino SAMD boards (32-bits ARM Cortex M0+). Click install to install the board.

  • Also from the Tools menu, under Port, make sure the correct COM port is selected. If you have multiple options, select the one stating Arduino MKR NB 1500. If non of your ports is labelled that way, disconnect your Arduino MKR NB 1500, reopen the menu, check which COM port disappeared, reconnect the Arduino MKR NB 1500 and choose the previously identified COM port.

Test your Arduino MKR NB 1500 device

We will now test whether the Arduino MKR NB 1500 device is working by letting a LED blink.

  • In the Arduino IDE go to File, under Examples, under 01. Basics, select Blink.

  • From the Sketch menu, click Upload or select the big arrow on de left of the Arduio IDE to send the software to the Arduino MKR NB 1500. If all went well it will say Uploading complete in the bottom of the Arduino IDE and the LED on the Arduino MKR NB 1500 board will blink!

Test the LTE-M module on the Arduino MKR NB 1500

The LTE-M connectivity on your Arduino MKR NB 1500 device is managed by the uBlox SARA-R410M-02B module. With the following steps we check whether this module works correctly.

  • In the Arduino IDE select from the sketch menu, under Include Library select Manage Libraries or click on the library icon on the left side of the IDE. Search for MKRNB and select the 1.6.0 version.

  • After the library is downloaded go to File, under Examples, under MKRNB select Tools and select TestModem.

  • Upload the sketch to the Arduio MKR NB 1500.

  • Meanwhile, from the Tools menu, open the Serial Monitor. Here we will find the unique IMEI. Store the value in a text file. You'll need it when adding the device to KPN Things.

2. Register your Arduino MKR NB 1500 to KPN Things

Add device

Open the . Go to the All Devices page and click on Add new Device.

  1. Select the Own M2M device device type

  2. Enter a name for your Arduino MKR NB 1500 device

  3. Click Add Device to continue

Provide network information

  1. IMEI: the value you retrieved from the Ublox module in the step Test the LTE-M module on the Arduino MKR NB 1500

  2. ICCID: you must use the ICCID form the simcard you ordered via KPNThings:

  3. Shared secret: Every device should have its own unique shared secret You can generate a unique secret by pressing Generate:

Store these three values somewhere, because you will be needing them to program your device later on.

Check your newly created Device

You are now on the Device Detail Page. On this page you can see the network status. If everything is done the status should be Activated. This means your device is correctly registered to the network.

Create a flow

To receive data in the KPNThings portal you must create a flow. Click on Flows and then on Link to another Flow.

Select My first Flow.

Enable the ThingsML decoder

The flow is now created and you must add a decoder to the flow to decode the payloads from the device.

Click on My first flow.

Click on Data Processing

Enable the switch Decoded ThingsML and raw SenML data (v2).

The decoder is now enabled and device data send by the Arduino MKR NB 1500 will be decoded and visible in the Device twin.

Add a destination

The decoded data can be send to a destination. For testing you can use the KPN Test Endpoint destination.

Click on Destination on the left side on the screen, next click on Add new Destination in the upper right side of the screen.

Select the Test Endpoint destination. Give it a name and click on Create Test Endpoint. The endpoint is created and there is a button and link to view the destination. Later the endpoint can always be accessed via the destination menu option on the left side of the main screen.

Program your device to send a message

Install the ThingsML and TemperatureZero library

· From the Sketch menu in your Arduino IDE click on Include Library, Manage Libraries... or click on the library icon on the left side of the IDE.

Now, in the Library Manager, search for ThingsML and click Install.

Search for TemperatureZero and click install. When the installation is finished, click on the Library manager icon to close the left window.

Upload a sketch

From the File menu, click on Examples.

Now find ThingsML, then select Arduino, MKR_NB_1500, and within that choose mkr_nb_1500_uplink_example.

A sketch will open. Now update the values for the variables IMEI, and shared secret in the code with the values you get earlier from the device and the KPNThings.

Run the sketch

Upload the sketch to your Arduino MKR NB 1500 and open the Serial Monitor. You will see the AT commands and some other information. Check incoming data in the Portal.

Now your Arduino MKR NB 1500 is sending data, you could visit the Device twin tab on your Device Detail Page in the Portal. You should see the measured temperature.

If the Test endpoint was setup the data from de device is also visible there.

Frequently asked

See if your question has already been asked

General questions

The Portal does not look very nice in my browser

For security reasons our platform uses the latest browser technologies for the KPN Things Portal. This means that the Portal will not work optimally in not-up-to-date browsers and underdeveloped browsers. Please use an up-to-date version of Google Chrome or Mozilla Firefox for the best user experience.

Registration and logging in

I get the error "Registration failed" when registering for a new KPN Developer account

When you get this error, first check whether you already have registered a KPN Developer account with the email address you are using. Do this by trying to login. If you reach a page where you can enter your password, you do already have an account. You can use the forgot password link to reset your password in case you forgot.

I have forgotten my password

To reset your password, execute the following steps:

  1. Go to

  2. Click Login

  3. Enter your Email address and click Doorgaan

  4. Click Wachtwoord vergeten

  5. Enter your Email address again in the field for Gebruikersnaam and click Doorgaan

  6. Choose E-mail naar ****@*****

  7. Check your email for the authentication code, enter it in the field for Code in and click Doorgaan

  8. Enter a new password and click Doorgaan

    1. It should be between 10 and 100 characters

    2. It should contain at least three of the following types of characters: capital letter, small letter, number, and special character

  9. Your password has now been reset

Device administration

I get the error "The network identifier already exists for this network type" when adding a device.

When adding a device you can get the error "The network identifier already exists for this network type". This means the network identifier, DevEUI for LoRa or IMEI for M2M, you are using to register your device is already known in our systems.

You should delete the device record from the device table page using the three dot menu on the right side of the column.

When you are sure you did not register the same device earlier, please contact our support through our and state the network identifier with which you got the problems. If you are trying to register a device that was also registered in the LoRa Developer Portal, please state the account name in your question to our support as well. We could transfer your keys from the LoRa Developer Portal to the Things Portal.

I get the error "Device could not be created: The maximum amount of devices for this product has been reached"

This means you try to add more devices to your account than is allowed by your subscription. You could try to remove another device from your registrations or you can contact our commercial support on to get more information on upgrading your subscription.

After adding my LoRa device, the Network status of my LoRa Network Details says "FAILED"

This means your LoRa device could not be registered to our LoRa network. Probably the DevEUI is already in use in another application on our network like Thingpark or the LoRa Developer Portal. If you want to register your device in the Things Portal, first remove the device registration from the other application. Then you can re-add the devices in the Things Portal.

After (re-)registering the device in the Things Portal, you should rejoin your Device to the network.

I get this error when I am trying to register my LoRa Developer Portal DevEUI's

Since the DevEUI's you are trying to register are still registered in the LoRa Developer Portal, they cannot be registered in the Things Portal. DevEUI's can only be registered once in our network.

Please send an email to stating your account name (email address) and the DevEUI's you want to be able to move. We will remove them from the LoRa Developer Portal and our network and we will answer you when we did it. From then on you can register your device in the Things Portal.

What should I do when I lost the AppEUI or AppKey of my registered device?

If you have a device with pre-programmed identifiers and key that you cannot change, you should contact your supplier to get the information.

If you registered a device and got the identifiers from KPN Things, then there is no way to reset your AppEUI or AppKey for your device at the moment. You should delete your device from your account and add it again, get new identifiers and program the device with the new identifiers.

In time you will be able to view the AppEUI in the Portal and you will be able to generate a new AppKey for your device without having to delete and re-add it.

Device communication

My LoRa device won't join the network

Head on over to the part of our documentation to find the solution to this problem.

I do not receive any data from my device in my application

The data from your device travels the following path to your application:

Device → Network → Processing (Decoder, etc.) → Destination (your endpoint or application)

You can check the following configuration items in the Portal to verify whether the path is correctly set up:

Device's connection to the Network

  • Does your device have (the correct) connectivity information configured?

    → Visit the device detail page and go to the Connectivity tab. You can check the information and if necessary add connectivity information.

  • Is the connectivity indeed activated?

    → Visit, on the device detail page, the Connectivity tab and verify that Network Status is set to ACTIVE. If not, read .

  • Can you see data coming in from your device in the Data History?

    → Visit, on the device detail page, the Data History tab to verify incoming data. If you do not see your device joining, you could get more info in . Else you should use your device documentation to get it to send data.

Destination's configuration

  • Is your destination configuration correct? E.g. the URL, etc.

    → Visit, on the destination detail page, the Destination Specification tab to check your destination configuration.

    →We are working on giving you more insight into the logs of a destination, stay tuned!

  • Is your destination status Active?

    → Visit the destination detail page. The Processing status in the top right card should say Active. If this is not the case, click the Activate button in the top right of the card to activate the destination again.

Flow's configuration

  • Is your Device linked to the Flow?

    →Visit, on the Device detail page, the to check to which Flows your Device is linked. If the correct Flow is missing, go to Devices in Flow page, click Add Device, click Link an existing Device, and select your Device from the list.

  • Is your Destination linked to the Flow?

    → Visit, on the Destination detail page, the to check to which Flows your Destination is linked. If the Flow is missing, go to Destinations in Flow page, click Add Destination, click Link an existing Device, select your Destination from the drop down and click Add Destination.

Decoder activation

  • Is the correct decoder activated?

    → Go to the of your Flow. Click on the Device type of your Device. Verify that one or more Decoders are enabled (The device type can be found in the main card of the ).

    → If no correct Decoder is activated, click on the toggle of the desired Decoder(s) to enable it.

Other technisch in depth documentation

- Documentation on the FoTa tool

- In depth documentation on KPN's LoRa network

- Technical documentation on Remote SIM provisioning

My question is not answered in the FAQ, how do I get an answer now?

Do you have a question that is not answered here? In that case you can ask your question via our !

Arduino MKR WAN 1300/1310

Arduino MKR WAN 1300/1310 is the fastest start with LoRa and the Internet of Things. It’s the perfect introduction to IoT for your organization, and is also used in education. Arduino MKR WAN 1300/1310 uses its LoRa connectivity to connect to the internet from anywhere in the world where there is LoRa coverage.

When ordering the Arduino MKR WAN 1300/1310 make sure that an antenna is included in the order since it's not delivered with the board

1. Setup your Arduino MKR WAN 13X0

To connect the Arduino MKR WAN 13X0 to the computer you must use a USB cable.

Setup your Arduino environment

  • Download the and follow the installer. We'll use it later on to program the Arduino MKR WAN 13X0.

  • Connect your Arduino MKR WAN 13X0 to your computer.

  • From the Tools menu, under Board, under Arduino SAMD boards (32-bits ARM Cortex M0+), select Arduino MKR WAN 1300 or 1310.

  • If the board is not available go to Tool menu, under Board select Board Manager and search for the Arduino SAMD boards (32-bits ARM Cortex M0+). Click install to install the board.

  • Also from the Tools menu, under Port, make sure the correct COM port is selected. If you have multiple options, select the one stating Arduino MKR WAN 13X0. If nonee of your ports is labelled that way, disconnect your Arduino MKR WAN 13X0, reopen the menu, check which COM port disappeared, reconnect the Arduino MKR WAN 13X0 and choose the previously identified COM port.

Test your Arduino MKR WAN 13X0 device

We will now test whether the Arduino MKR WAN 13X0 device is working by letting a LED blink.

  • In the Arduino IDE go to File, under Examples, under 01. Basics, select Blink

  • From the Sketch menu, click Upload or select the big arrow on the left of the Arduio IDE to send the software to the Arduino MKR WAN 13X0. If all went well it will say Uploading complete in the bottom of the Arduino IDE and the LED on the Arduino MKR WAN 13X0 board will blink!

Test the LoRa module on the Arduino MKR WAN 13X0

The LoRa connectivity on your Arduino MKR WAN 13X0 device is managed by the Murata CMWX1ZZABZ module. With the following steps we check whether this module works correctly.

  • In the Arduino IDE select from the sketch menu, under Include Library select Manage Libraries. Search for MKRWAN and select the 1.1.0 version.

  • After the library is downloaded go to File, under Examples, under MKRWAN select FirstConfiguration.

  • Upload the sketch to the Arduio MKR WAN 13X0

  • Meanwhile, from the Tools menu, open the Serial Monitor. Here we will find the unique Device EUI. Store the value in a text file. You'll need it when adding the device to KPN Things.

  • If your device has not the latest firmware version you can load the MKRWANFWUpdate_standalone.ino sketch via File, under Examples, MKRWAN to update the device firmware.

2. Register your Arduino MKR WAN 13X0 to KPN Things

Add device

Open the . Go to the All Devices page and click on Add new Device.

  1. Select the Own LoRa device (preset connectivity) device type

  2. Enter a name for your Arduino MKR WAN 13X0 device

  3. Click Add Device to continue

Provide network information

  1. DevEUI: the value you retrieved from the LoRa module in the step

  2. AppEUI: you can use the following value: 0059AC00000FFFFF

  3. AppKey: Every device should have its own unique AppKey, since it is the root security key of your device. You can generate a unique AppKey here:

  4. Click Add Network Info to save the network information and then Finish to continue.

Store these three values somewhere, because you will be needing them to program your device later on.

Check your newly created Device

You are now on the Device Detail Page. In the LoRa tab you will see the network status. This can temporarily be Pending creation, but if you refresh the page it should switch to Active. This means your device is correctly registered to the network.

If the network status sticks to Pending creation, you could try to delete the Device and and provision again (Restart at step )

If the Network Status ended up in Failed, something has gone wrong. Most likely the DevEUI is already registered through another application or account. Please make sure you remove the device registration from the other application or account and re-add the device in the Things Portal.

3. Program your device to send a LoRa message

Download the ThingsML library

  • From the Sketch menu in your Arduino IDE click on Include Library, Manage Libraries...

  • Now, in the Library Manager, search for ThingsML and click Install. When the installation is finished, click on the Library manager icon to close the left window.

Make a sketch

From the File menu, click on Examples.

  • Now find ThingsML, then select Arduino, MKR_WAN_1300, and within that choose Arduino_mkr_wan_1300_example.

  • A sketch will open. Now update the values for the variables AppEUI, and AppKey in the code with the values you entered earlier in the Portal. The DevEUI is automatically filled in on the background.

Run the sketch

Upload the sketch to your Arduino MKR WAN 13X0 and open the Serial Monitor. You will see your module version and if your device is successfully connected and joined the network. At some point you will see the following:

If you see something else instead of connected , move closer to your window or walk out into the garden to improve reception from the LoRa network. Then disconnect and reconnect the Arduino MKR WAN 13X0 to your computer. You probably need some more coverage to be able to join the network.

After joining, your Arduino MKR WAN 13X0 will send a message every 300 seconds containing a fixed temperature “measurement” in ThingsML format. Read more about .

4. Check incoming data in the Portal

Now your Arduino MKR WAN 13X0 has joined and is sending data, you could visit the LoRa Data tab on your Device Detail Page in the Portal. You should see your Join request and Join accept appear like in the screenshot below and at this point you will see more data as well.

You now successfully connected your Arduino MKR WAN 1

> mac join otaa
< ok
< accepted
Getting Started by the IoT Academy
Arduino IDE
blinky.ino
MarvinMultiSerial.ino
data sheet
one of the many
examples
by others
KPN Things Portal
Test the LoRa module on the Marvin
https://www.loratools.nl/#/keys
Register your Marvin to KPN Things
FAQ
ThingsML
LoRa data history
Your module version is: ARD-078 1.2.3
Your device EUI is: a8610a………….
Connected!
Sending message...
Message sent correctly!
Sending message...
Message sent correctly!
Arduino IDE
KPN Things Portal
https://www.loratools.nl/#/keys
ThingsML
Test your Arduino MKR WAN 13X0 device
Add device
LoRa Geolocation
https://portal.kpnthings.com/home
Arduino IDE
KPN Things Portal
https://portal.kpnthings.com
contact form
[email protected]
[email protected]
What to expect on first use of the LoRa data history
this FAQ
this FAQ
Flows tab
Flows tab
Data Processing page
Device detail page
Firmware over the air
LoRa network
Remote SIM provisioning
contact form

Connecting M2M devices

Before you can register your M2M devices to KPN Things, you need to be in possession of KPN Things SIM cards. You can visit the All Connectivity page in the KPN Things Portal to see the SIM cards available in your account.

M2M Device registration

When registering an M2M device to KPN Things, some information needs to be provided:

  • IMEI - The IMEI number that uniquely identifies your device. This value is used for authenticating the device when IoT data is received by the system.

  • Shared Secret - The pre-shared password used for authorizing ingestion of IoT data from the device by the system. This value is not required for all types of M2M devices.

Additionally, Things needs to know the ICCID of the SIM card that is inserted in the Device. The ICCID that uniquely identifies the SIM card. This is used for connectivity management and sending SMS to the device if configured.

Additional information

  • MSISDN - MSISDN is a number uniquely identifying your M2M subscription in the mobile network. It is also known as phone number, or 06-nummer in Dutch. Although M2M SIM cards often have a 079-nummer.

  • Rateplan - The commercial bundle of your SIM card.

Why use Things M2M?

KPN Things M2M connectivity is only available for devices with a KPN Things SIM card. Devices with a SIM card from a different provider can be connected to KPN Things through the Internet connection.

When using Things M2M connectivity to connect to KPN Things, we control the communication path between your device and the data processing in KPN Things. We know this path is secure, so SSL is not required anymore to provide data security. Then you don't need to implement SSL on your device anymore, saving power and bandwidth. An HTTPS request uses up to 10 times more bandwidth then a plain HTTP request.

Why KPN Things M2M instead of traditional M2M connectivity:

  • Example code for Devices.

  • No upfront costs due to private M2M infrastructure.

  • Data processing on the KPN Things platform.

  • Out of the box compatibility with all our different supported destinations.

  • Quicker time to market.

Network connection

When you have a KPN Things SIM card, you need to use the following information to connect to KPN Things:

  • APN (depends on SIM type):

APN

SIM type

kpnthings.iot

  • Regular KPN Things SIM

  • SIM through Comarch

kpnthings2.m2m

  • KPN Things + (plus) SIM

  • Early access SIM

  • SIM through Jasper

  • IP: 10.151.236.157

There is no DNS available.

HTTP data communication

The request = uplink data

POST /ingestion/m2m/senml/v1 HTTP/1.1
Host: m.m
Things-Message-Token: <messageToken>
Content-Type: application/json
Content-Length: <nrBytes>

[{"bn":"urn:dev:IMEI:<imei>:","bt":<timestamp>},<measurements>]

Body

The body of the HTTP request should be a valid SenML pack. For more information see the SenML documentation.

Base time

The base time bt in the SenML body is optional, because not all devices keep track of the absolute time. If Things Data Management receives a message without base time, the moment that the message is received will be filled in as base time.

Things Message token

For device authentication we introduce a pre-shared secret for each device. This secret is used by the device to generate message tokens that are SHA256-hashes which are send in the Things-Message-Token header of the request. This token can be used by Things to validate the source of the message. At the same time it prevents tampering with the measurement values.

The secret should be at least 30 characters long and no more then 100, is case sensitive and can contain all ASCII characters: ^[0-9a-zA-Z]{30,100}$

The pre-shared secret is used directly for message token calculation. There is no challenge protocol or no session keys, because we rely on the secure channel for complete integrity.

The message token is calculated as following:

messageToken = sha256({requestBody}{sharedSecret})

The requestBody used for the hash should be identical as the body send in the HTTP request. Preferably strip this body from all white space characters before putting it in the hash and the HTTP request.

This authentication method requires a SHA256-function to be executed on the device, this is order magnitude 1 * 10^-7 J (0,1 microjoule), which is reasonable to add to the device.

The response = downlink data

When you send data to KPN Things using a HTTP request, the HTTP response is used to transmit a possible downlink message to your device. Only if a downlink message is in status Executing it will be send, and only one downlink message is send at a time.

A downlink message will be structured as SenML in JSON format. Learn more about downlink communication.

Response code

Using the HTTP response code you can debug some common problems:

Code

Description

202

🟢 The message was received and accepted for further processing.

400

🔴 The received message was not correctly structured.

Check whether all required headers are present and whether the request body is correctly formatted.

401

🔴 The Things Message Token could not be verified.

Check the shared secret and the hashing method in your device.

404

🔴 The provided device identifier was not recognized. Check whether the identifier is correct and known in the Things Portal.

SMS data communication (downlink only)

SMS downlink communication is only available for Things M2M+ SIM cards

When the device receives an SMS, the sender will be 5277.

SMS's are send using a retry back-off schema if the receiving Device is not connected to the network. The schema is as following:

  • First 5 minutes: every minute

  • Next hour: every 10 minutes

  • Next 12 hours: every hour

  • Next 36 hours: every 4 hours

After a total of 48 hours (two days) the network will discard the SMS from the queues due to inactivity. The Actuator API will report the SMS as FAILED.

When designing the on-off power cycles of your M2M device, make sure you take into account to back-off schema in order to not miss the retries of SMS's.

Devices with M2M connectivity have some specific tabs on the Device detail page to display M2M specific information.

MQTT

Read all about the use and possibilities of MQTT ingestion on the next page.

M2M data history

Coming soon

Firmware over the air

The documentation for sending firmware updates to your M2M device can be found at KPN FotA.

KPN FSK Basestation

FSK Gateway

FSK Gatewayreports attach and detach events.

  • Supported network type(s): KPNM2M,KPNSTREAMLINEM2M

  • Device Specification ID: kpn-fsk-gateway

  • Device Specification UUID: 36c2a679-9ad5-473a-b2b4-2280c8806216

Decoders
decoderSpecificationUUID
Description

› Decoded payload for fsk gateway

d1a91443-1362-476e-9037-ef2dcdd7a7c2

Decoder for Streamline FSK Gateway.

› Decoded payload for fsk gateway (v2)

eb19583e-5d96-5107-af90-14ed7d1544cf

Decoder for Streamline FSK Gateway.

› Decoded payload for fsk gateway

Decoder for Streamline FSK Gateway.

Expected SenML records

name
type
unit

Altitude

number

m

AltitudeMargin

number

m

DvLat

number

lat

DvLon

number

lon

Event

string

Event:Device:DEVEUI

string

Event:Device:Serialnumber

string

FirmwareVersion

string

Version

GpsTime

number

s

LatLonMargin

number

Margin

› Decoded payload for fsk gateway (v2)

Decoder for Streamline FSK Gateway.

The following SenML records can be present, amongst others:

name
type
unit
example
description

FirmwareVersion

string

GpsTime

number

s

1698912211.2

DvLat

number

lat

Latitude

DvLon

number

lon

Longitude

Event

string

"attach"

LatLonMargin

number

m

Altitude

number

m

AltitudeMargin

number

m

Event:Device:Serialnumber

string

Event:Device:DEVEUI

string

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
  {
    "bn": "urn:dev:IMEI:999999999000090:",
    "bt": 1664818024.4,
    "n": "Event",
    "vs": "attach"
  },
  {
    "n": "Event:Device:DEVEUI",
    "vs": "7CC6C43000024935"
  },
  {
    "n": "Event:Device:Serialnumber",
    "vs": "0B00300002493501"
  },
  {
    "n": "GpsTime",
    "u": "s",
    "v": 1698912211.2
  }
]

KPN FillTag I

KPN FillTag I

First FillTag device for Waste Control application, also known as Streamline Waste device.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-filltag-i

  • Device Specification UUID: 5064c9de-36c8-4a69-8edd-636c6df94332

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

4c0bf70f-cde5-4f5a-aac2-8480a875ec86

Add data to messages where location could be calculated.

› Decoded payload for Waste Control application

0a56df75-1b4d-407b-b534-a20cf22cd13e

Decoder for Streamline LoRa message type 0xD282.

› Decoded payload for Waste Control application (v2)

41fdc428-12cb-52b0-9e0c-e160b97bdcd5

Decodes fields from a Streamline LoRa payload, specifically for waste control application.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

› Decoded payload for Waste Control application

Decoder for Streamline LoRa message type 0xD282.

Expected SenML records

name
type
unit

batteryLevelLow

boolean

/

batteryLevelLow_beacon

boolean

/

count_LidOpen

number

detectedBeacon

string

distance

number

m

distanceMeasurementIsValid

boolean

/

lidOpenedSincePreviousTransmission

boolean

/

temperature

number

Cel

Decoded payload for Waste Control application

Decodes fields from a Streamline LoRa payload, specifically for waste control application.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryLevelLow

boolean

true

batteryLevelLow_beacon

boolean

false

the battery level low indication of the detected beacon

count_LidOpen

number

1

number of times the bin lid has been opened

detectedBeacon

string

"a1e2093368d4e7b8"

DevEUI of the last detected beacon

distance

number

m

0.684

distance to the detected object from the fill sensor

distanceMeasurementIsValid

boolean

true

lidOpenedSincePreviousTransmission

boolean

true

temperature

number

Cel

18.875

timeOrigin

string

NETWORK

the source of time information for measurements

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:4227c7e44ee76d1e:",
        "bt": 1693136532.83,
        "n": "detectedBeacon",
        "vs": "a1e2093368d4e7b8"
    },
    {
        "n": "count_LidOpen",
        "v": 1
    },
    {
        "n": "batteryLevelLow",
        "vb": true
    },
    {
        "n": "batteryLevelLow_beacon",
        "vb": false
    },
    {
        "n": "distance",
        "u": "m",
        "v": 0.684
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 18.875
    },
    {
        "n": "lidOpenedSincePreviousTransmission",
        "vb": true
    },
    {
        "n": "distanceMeasurementIsValid",
        "vb": true
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

KPN LocationTag II v3

KPN LocationTag II v3

Also known as Streamline Security Tag with WiFi. Tag for localization with NFC, FSK and WiFi. Tag can use WiFi scanning for localization in missing mode.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-ii-v3

  • Device Specification UUID: dbc8bf09-86d2-4cce-a716-b9ceffeb5933

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

e9c65560-4ffc-4c2e-821d-02be8a125de2

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

85a827c0-cd00-4da1-a216-17978e95fe9c

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking with WiFi scan results

137dc4c3-b2d2-4c8c-8067-6725b9bd155f

Decoder for Streamline LoRa short and long payloads containing a.o. Wifi scan results and battery voltage. Long payloads also contain a.o. firmware

› Decoded payload for Asset Tracking with WiFi scan results (v2)

f8dfcd77-3bbe-5e44-86c9-5b01707020a2

Decodes fields from a Streamline LoRa payload for asset tracking with WiFi scan results.

Encoders
encoderSpecificationUUID
Description

‹ Encoded device commands

2f241044-8476-4c4c-a516-77c8dd709590

Set the device mode.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

› Decoded payload for Asset Tracking with WiFi scan results

Decoder for Streamline LoRa short and long payloads containing a.o. Wifi scan results and battery voltage. Long payloads also contain a.o. firmware

Expected SenML records

name
type
unit

batteryVoltage

number

V

mode

string

enum

› Decoded payload for Asset Tracking with WiFi scan results (v2)

Decodes fields from a Streamline LoRa payload for asset tracking with WiFi scan results.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

dataType

string

mac:<some-mac-address>:wifiSignalStrength

number

dBW

Value of WiFi scan results

mode

string

"missing"

Can be active, inactive or missing

timeOrigin

string

"NETWORK"

The source of time information for measurements

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "mode",
        "vs": "missing"
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 2.81
    },
    {
        "n": "dataType",
        "vs": "wifiScan"
    },
    {
        "n": "mac:0876ff941c76:wifiSignalStrength",
        "u": "dBW",
        "v": -115
    },
    {
        "n": "mac:b4f26727b684:wifiSignalStrength",
        "u": "dBW",
        "v": -116
    },
    {
        "n": "mac:b6f21727b684:wifiSignalStrength",
        "u": "dBW",
        "v": -116
    },
    {
        "n": "mac:7297416de37f:wifiSignalStrength",
        "u": "dBW",
        "v": -104
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

‹ Encoded device commands

  • Protocol: LoRa downlink

  • Description: Set the device mode.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: mode

    • Value: Presales (translates into → 150098078051010080510115013F01001501FB018016)

    • Value: Active (translates into → 15009807201C0000201C0015013F01001501FB014016)

    • Value: Missing (translates into → 15009807F0000000F0000015013907000000000000001501FB01C1150402010115040E010015042C02050516)

    • Value: Inactive (translates into → 14009808FFFFFFFFFFFFFFFF110000000001000000)

https://apps.apple.com/us/app/kpn-things-device-simulator/id1591616919apps.apple.com

Streamline M2M

For all streamline M2M devices.

  • Supported network type(s): KPNSTREAMLINEM2M

  • Device Specification ID: supported-streamline-m2m

  • Device Specification UUID: 1ee3544d-1f5e-4d70-aba7-b50e80bad402

Decoders
decoderSpecificationUUID
Description

› Decoded Streamline M2M data

Decoder for selection of Streamline M2M data.

Expected SenML records

name
type
unit

› Decoded Streamline M2M data (v2)

Decoder for selection of Streamline M2M data.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

KPN Things Device simulator - Apps on Google PlayGooglePlay

› Decoded Streamline M2M data

cf36febd-ba2e-4d1b-bbda-da4b6dbf2ca3

Decoder for selection of Streamline M2M data.

› Decoded Streamline M2M data (v2)

b5becc8a-ff52-5d2d-85ee-42b03a852bc4

Decoder for selection of Streamline M2M data.

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

altitude

number

m

altitudeMargin

number

m

batteryVoltage

number

V

firmwareVersion

string

string

gpsTime

number

s

gsmNetworkId

string

string

heading

number

rad

latitude

number

lat

longitude

number

lon

phoneNumber

string

string

radius

number

m

temperature

number

Cel

velocity

number

m/s

batteryVoltage

number

V

3.59

firmwareVersion

string

"474"

gpsTime

number

s

1664810842.4

heading

number

rad

0.7148868616168774

latitude

number

lat

51.90717

longitude

number

lon

4.48940

radius

number

m

velocity

number

m/s

[
    {
        "bn": "urn:dev:IMEI:999999999000090:",
        "bt": 1664810824.4,
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.62
    },
    {
        "n": "firmwareVersion",
        "vs": "474"
    },
    {
        "n": "gpsTime",
        "u": "s",
        "v": 1664810842.4
    },
    {
        "n": "heading",
        "u": "rad",
        "v": 0.7148868616168774
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "radius",
        "u": "m",
        "v": 0
    },
    {
        "n": "velocity",
        "u": "m/s",
        "v": 0
    }
]
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Streamline M2M
LoRa Geolocation
LoRa Geolocation
LoRa On Premise Gateways

Shop

Order your devices and simcards

he KPN Webshop for IoT products has been combined with the KPN Webshop for other business market products. When multiple products are purchased, they will be displayed in this single environment.

You can only start if you have a MijnKPN account with the correct permissions to access the KPN Webshop.

No account yet?

Then ask your administrator to create an account. If case you don't know who is the administrator for your organization is, please contact us.

You have recieved an account?

Let's get started!

Like to see the Quick reference video first. It says more than a 1,000 words.

There are two ways to log in to the KPN IoT Webshop. This can be done via the MijnKPN or directly from the KPN Things Portal.

Log in with MijnKPN

1

Open MijnKPN

Open MijnKPN via https://mijnkpnzakelijk.kpn.com

2

Open the KPN Hardwareshop

Click on the KPN Hardwareshop icon

3

Log in with Grip

The KPN IoT Webshop is a separate module, click on Log in with Grip to log in with your Single Sign On account

4

You are now in the webshop

You are now in the KPN Webshop where you can choose the desired product group

Log in with KPN Things Portal

1

Open the shop tab

Open the KPN Things Portal via https://portal.kpnthings.com/shop or click on the Shop tab in the KPN Things Portal

In the shop tab, the available product groups are shown based on the IoT solutions used

2

Select product group

To go directly to the desired product group select

Fewer items may be visible on your shop. More items will be only shown when an additional connectivity type is activated in the portal.

3

You are now in the webshop

You are now in the KPN Webshop directly in the product group you selected in the KPN Things Portal

Search and select

Search for an item

Do you know the name of the item? Then you can search directly via the button.

If you want to view the products per product group, click on.

  1. The desired product group

  2. The desired type of product

  3. View the specifications for a product

Search and Select

Add an item to the shopping cart

If you have checked the desired items and would like to order them, click on.

  1. The or buttons to select the desired quantity

  2. Add to shopping cart

Add to cart

Multiple articles in a single order

Once you have added an item, it can be ordered via Continue to order. You can also include multiple items in one order and choose Continue shopping. It is also possible to add a non-KPN IoT product such as a mobile phone or accessory to the Shopping Cart. Please note that this will be processed as a separate delivery. These items are shipped separately and are not charged via the KPN IoT invoice.

Order or continue shopping

Order simcards

When ordering SIM cards, it is possible to immediately choose additional options to ensure that they are delivered with the desired settings in Cisco Control Center.

Of course it is possible to change this afterwards in the KPN Things Portal or Cisco Control Center.

If more than one Account ID is in use, it is possible to indicate which account you want, cick on.

1. Select the Account ID

Select Account-ID

If you want to immediately select the desired communication plan and rate plan, click on.

  1. default rate plan no

  2. fill in the desired comm plan name

  3. fill in the desired rate plan name

  4. click on continue ordering

Select comm plan and rate plan

Place an order

Check your order

If you have chosen to place the order, check the Shopping Cart for the desired quantities and products. If the order is correct, click Continue ordering.

Shopping Cart

Shipping details

Based on the company details the company address is available. This information cannot be changed. In the next step you can choose to deliver the order to this address. If you want to have the order delivered somewhere else, you can choose a different address.

Shipping details

Contact details

Because you are the one who places the order, we will inform you about the status. You do not have to adjust the information. If someone else is our Contact Person for this order, then please adjust the information here.

Contact details

Delivery adress

Choose here to use the company address as the delivery address. Or enter a different address.

  1. Use the company address as the delivery address

  2. Select a previously entered different address

  3. Manually enter a different address

  4. Save the entered address as a new address to select from the list later

Delivery address

Reference details and confirmation

Reference details can be added for your own use, please fill in the following information.

  1. Add an internal Purchase Order

  2. Enter a Reference text

Reference details

Requested delivery data and payment method

If there is a desired delivery date, please indicate it here.

The payment method cannot be changed. By default, the costs are included on the upcoming invoice as one-off costs.

Requested delivery date

We do our best to meet the requested delivery date. If the date is not feasible, we will contact you.

Your order has been placed

You're done! Your order is now being processed.

Thanks for ordering

Confirmation and order status

Click on View my order. You will then receive an overview of all the order information.

Order details

Track your order status

You will receive a confirmation with the order number by e-mail. This is your reference if you have any questions about the order. You can track the status of your order in the KPN IoT Webshop. Click on the Track and Trace link in the email to open your order to follow its status.

Order e-mail

Do you have any questions about the status of your order?

Is any information incorrect or is the desired delivery date very important? Please contact us stating your order number and your question. We will always provide personal support.

Current prices and forecasting

Current prices via quotation

It may be indicated in the ordering process for items that daily prices apply. These items are subject to price fluctuations of the components used. We immediately request a quote from the supplier for the ordered products.

After you have placed an order, you will first see it in the quotation overview.

Quotation overview

When we receive the current prices we will contact you to determine whether the order can be processed. The order may always be adjusted or cancelled at that time.

Indicating order expectations

If you expect to place order in large numbers in the coming period, you can provide a forecast. Deviating from the expectations later is permitted. But informing our suppliers in advance helps in anticipating planning and purchasing.

Would you like to provide a forecast? Then click on forecast in the menu.

Forcast menu

Now provide a forecast of quantities for the products you expect to order.

1. Select a period for which you expect to place the order

2. Enter the quantities per product in the month in which you expect to place the order

If there is no input field for a month in question, it is no longer possible to provide a forecast for it. In case an order is placed for that month, the products are shipped according to the standard delivery times that apply to the product.

SIM Card Forecasts

A reliable and up-to-date forecast helps us to deliver your order as quickly as possible.

If you have new information, please adjust the forecast.

1. Click Configure Forecast to adjust the previous forecast

In this way you help us to prepare upcoming orders and ensure that our suppliers can respond to them on time.

Configure forcast

Make a list of favorite items

Only the items for which your price is included in the contract can be ordered directly. You may want to include these in a favorite list for quick access.

Search an item

If you have checked the desired items and would like to order them, click on.

  1. The search icon

  2. Type a part of the product name

  3. Click on Look to open the item

Search favorite

Add an item to your favorite list

If you found the desired item and would like to order them, click on.

  1. The heart shaped favorite icon

Add favorite

Order or remove a favorite

If you want to view your selected items, open Favorite from the menu.

Open list

To order or remove an item from your favorite list, click on.

  1. The In cart button to order the item

  2. The heart shaped favorite icon to remove the item from your list

Order or remove a favorite

Create a single database - Azure SQL Databasedocsmsft
Quickstart - Create a Stream Analytics job by using the Azure portaldocsmsft
Step 3: Connect the vibration motor
Single Sign On with Grip
Grip
Azure Quickstart - Create an event hub using the Azure portal - Azure Event Hubsdocsmsft
Create a single database - Azure SQL Databasedocsmsft
Logo
Logo

KPN LocationTag I

KPN LocationTag I

Also known as Viloc Tag.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-i

  • Device Specification UUID: 00338b9a-25f8-43e5-ba36-7555bc00ad83

Decoders
decoderSpecificationUUID
Description

› Decoded payload

84e9d55d-28b3-43c2-9b2d-80ebce35222f

Decoder outputting sabotage flag and temperature reading.

+ Location by LoRa On Premises Gateway reception

8ae50706-4ad1-4823-90c8-4db166180846

Add location data to messages that are received by known .

+ LoRa Geolocation data

c2f529b3-a1e2-417e-a1f8-2269f4245af1

Add data to messages where location could be calculated.

› Decoded payload v2

fa85c8cb-0f64-58c5-beea-69c94c55fc0e

Decoder for Viloc payloads.

Encoders
encoderSpecificationUUID
Description

‹ Encoded device modes or send interval

15575b9a-4a5f-4445-9417-4b7a56080f20

Send device modes for Asset Recovery: Active (5h interval), Missing (5min interval), or change send interval.

› Decoded payload

  • UUID: 84e9d55d-28b3-43c2-9b2d-80ebce35222f

  • Description: Decoder outputting sabotage flag and temperature reading.

  • Exchange: decoder.lora.viloc.exchange

Expected SenML outputs

name
type/unit
description
example

temperature

Cel

21.0

sabotaged

boolean

indicates if the device has been sabotaged

false

batteryLevelLow

boolean

indicates if the battery voltage has been below the threshold

false

Example Message

Note: batteryLevelLow is sent only once per day

[
	{
		"bn": "urn:dev:DEVEUI:B12363D23123C123:",
		"bt": 1678778493
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 21.0
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "batteryLevelLow",
		"vb": false
	}
]

+ Location by LoRa On Premises Gateway reception

  • UUID: 8ae50706-4ad1-4823-90c8-4db166180846

  • Description: Add location data to messages that are received by known LoRa On Premise Gateways.

  • Exchange: decoder.lora.lrr.exchange

Expected SenML outputs

See below. Output is comparable to LoRa Geolocation data.

+ LoRa Geolocation data

  • UUID: c2f529b3-a1e2-417e-a1f8-2269f4245af1

  • Description: Add LoRa Geolocation data to messages where location could be calculated.

  • Exchange: decoder.location.data.kpn.actility.exchange

Expected SenML outputs

name
type/unit
example
description

locOrigin

string

KPNLORA

indicates the origin of the location data

latitude

numeric

51.79

longitude

numeric

4.68

radius

m

319

together with latitude and longitude this defines the area where the device is expected to be located

locAccuracy

%

locPrecision

%

locTime

timestamp

1637165561

unix timestamp (in s) of the localization

Example SenML-message

This location info can be merged with the payload of the device

[
  {
    "bn": "urn:dev:DEVEUI:A41163C212345678:",
    "bt": 1637165561
  },
  {
    "n": "locOrigin",
    "vs": "KPNLORA"
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 51.794884
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.687986
  },
  {
    "n": "radius",
    "u": "m",
    "v": 319.730194
  },
  {
    "n": "locAccuracy",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locPrecision",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locTime",
    "vs": "1637165561192"
  }
]

› Decoded payload v2

Decoder for Viloc payloads.

This decoder also decodes Geolocation and Local Gateway data.

name
type
description
example

sabotaged

boolean

indicates if the device has been sabotaged

false

temperature

number

the temperature measured by the device

14

batteryLevelLow

boolean

indicates if the battery voltage has been below the threshold

false

Example SenML-message

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

The batteryLevelLow field in the example below is optional and will not be present in every uplink.

[
    {
        "bn": "6E5E267F2E6FB3BF",
        "bt": 1693136532.0,
        "n": "sabotaged",
        "vb": false
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29
    },
    {
        "n": "batteryLevelLow",
        "vb": true
    }
]

› Encoded payload

= Raw LoRa payload

  • Protocol: LoRa downlink

  • Description: Send raw LoRa payload to your device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: payloadHex (raw input)

‹ Encoded device modes or send interval

  • Protocol: LoRa downlink

  • Description: Send device modes for Asset Recovery: Active (5h interval), Missing (5min interval), or change send interval.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: mode

    • Value: Active (translates into → 010000646400D100C700DADA, 02D180AA00C40784038405840484060A14)

    • Value: Missing (translates into → 010000646400E1008600DADA, 02E180AA00C0077B0380057B047B060A147B0214091F0C1F0E010088)

  • Name: interval

    • Value: 1h (translates into → 010000646400E1008600DADA, 02E180AA00C0077B0380057B047B060A147B0214091F0C1F0E010088)

    • Value: 2h (translates into → 010000646400CD00CD00DADA, 02CD80AA00C20781038105810481060A14)

    • Value: 5h (translates into → 010000646400D100C700DADA, 02D180AA00C40784038405840484060A14)

    • Value: 11h (translates into → 010000646400D3005600DADA, 02D380AA00C4078A038A058A048A061914)

KPN FillTag II

KPN FillTag II

FillTag device for Waste Control applications, also known as Syren II-L Waste device.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-filltag-ii

  • Device Specification UUID: c2a13e2e-6aba-4932-9499-97ae3e825de9

Decoders
decoderSpecificationUUID
Description

Syren II-L hex based decoder (v2)

590af144-3a1b-5742-b06d-0d187ea954a2

Decoder for Syren II-L payloads.

› Syren II-L hex based decoder

d1d4fafd-315c-439a-a6ea-fcfb33bff701

Syren II-L hex based decoder

Syren II-L hex based decoder (v2)

Decoder for Syren II-L payloads.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

distance

number

m

2.33

interval

number

s

14400

measurementInterval

number

s

900

Based on numberOfMeasurements, additional distance records with n times the measurementInterval negative t might be present

numberOfMeasurements

number

12

The n amount of distance measurements

productId

number

12802

rfu

number

0

serialNumber

number

18173

temperature

number

Cel

16

type

number

1

version

number

49

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "serialNumber",
        "v": 18173
    },
    {
        "n": "productId",
        "v": 12802
    },
    {
        "n": "type",
        "v": 1
    },
    {
        "n": "version",
        "v": 49
    },
    {
        "n": "measurementInterval",
        "u": "s",
        "v": 900
    },
    {
        "n": "interval",
        "u": "s",
        "v": 14400
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 16
    },
    {
        "n": "rfu",
        "v": 0
    },
    {
        "n": "numberOfMeasurements",
        "v": 12
    },
    {
        "n": "distance",
        "u": "m",
        "v": 0.61
    },
    {
        "n": "distance",
        "t": -900,
        "u": "m",
        "v": 0.61
    },
    {
        "n": "distance",
        "t": -1800,
        "u": "m",
        "v": 0.62
    },
    {
        "n": "distance",
        "t": -2700,
        "u": "m",
        "v": 2.33
    },
    {
        "n": "distance",
        "t": -3600,
        "u": "m",
        "v": 2.33
    },
    {
        "n": "distance",
        "t": -4500,
        "u": "m",
        "v": 1.42
    },
    {
        "n": "distance",
        "t": -5400,
        "u": "m",
        "v": 1.43
    },
    {
        "n": "distance",
        "t": -6300,
        "u": "m",
        "v": 1.44
    },
    {
        "n": "distance",
        "t": -7200,
        "u": "m",
        "v": 1.42
    },
    {
        "n": "distance",
        "t": -8100,
        "u": "m",
        "v": 1.43
    },
    {
        "n": "distance",
        "t": -9000,
        "u": "m",
        "v": 1.42
    },
    {
        "n": "distance",
        "t": -9900,
        "u": "m",
        "v": 1.43
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Syren II-L hex based decoder

Syren II-L hex based decoder

Expected SenML records

name
type
unit

codeIncident

number

distance

number

m

interval

number

s

measurementInterval

number

s

numberOfMeasurements

number

productId

number

rfu

number

serialNumber

number

temperature

number

Cel

type

number

version

number

KPN Global Tracker Wired

A wired 2G/LTE-M Tracking device with GPS.

  • Supported network type(s): KPNSTREAMLINEM2M

  • Device Specification ID: kpn-global-tracker-wired

  • Device Specification UUID: 7c81c9a6-02e3-46f2-ac68-a300927b5535

Decoders
decoderSpecificationUUID
Description

Decoded M2M Data for GlobalTracker Wired

Decoder for M2M KPN Global Tracker Wired devices.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

Detail level 1 (SV_CountersUser)

Detail level 2 (SV_Network)

Detail level 3 (SV_Position)

Logo
Logo

Decoded M2M Data for GlobalTracker Wired

58a31b2d-05f1-5e4b-a531-18d4f896dbd7

Decoder for M2M KPN Global Tracker Wired devices.

altitude

m

The measured altitude

batteryVoltage

number

V

3.59

firmwareVersion

string

Not present in detail level 1 messages

gpsTime

number

s

Unix EPOCH time in seconds

gsmNetworkId

string

eventDescription

string

  • "Start moving"

  • "Stop moving"

  • "While moving"

  • "While not moving"

Description of the device event. Not present in detail level 1 messages.

eventId

string

  • "40" (Stop moving)

  • "41" (Start moving)

  • "44" (While moving)

  • "45" (While not moving)

Id of the device event. Not present in detail level 1 messages

gpsStatus

string

  • "0" (OK)

  • "1" (Speed/heading invalid)

  • "32" (Accuracy not met)

  • "33" (Accuracy not met + Speed/heading invalid)

Identifier indicating the GPS Status

gpsNotes

string

  • "OK"

  • "Accuracy not met"

  • "Speed/heading invalid"

  • "Accuracy not met + Speed/heading invalid"

Description of the GPS Status

heading

number

rad

Direction in radials. Not present in detail level 1 messages

latitude

number

lat

Latitude of the device. Not present in detail level 1 messages

longitude

number

lon

Longitude of the device. Not present in detail level 1 messages

radius

number

m

Radius indicating the precision of the positition. Not present in detail level 1 messages

switch

string

  • "0" (Position)

  • "53" (SV_CountersUser)

  • "64" (SV_Network)

  • "77" (TimeAlive)

Identifier indicating the record-type. In case Switch=77, there has been no GPS Fix and the Geo coordinates belong to the previous GPS Fix.

switchName

string

  • "SV_Position"

  • "SV_CountersUser"

  • "SV_Network"

  • "SV_TimeAlive"

Name of this record-type.

temperature

number

Cel

The measured temperature

velocity

number

m/s

Velocity of the device. Not present in detail level 1 messages

[
  {
    "bn": "urn:dev:IMEI:999999999000090:",
    "bt": 1664818024.4,
    "n": "batteryVoltage",
    "u": "V",
    "v": 0.8
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696501006.08
  },
  {
    "n": "switch",
    "vs": "53"
  },
  {
    "n": "switchName",
    "vs": "SV_CountersUser"
  }
]
[
  {
    "bn": "urn:dev:IMEI:863740069987078:",
    "bt": 1664818024.4,
    "n": "batteryVoltage",
    "u": "V",
    "v": 15.68
  },
  {
    "n": "firmwareVersion",
    "vs": "564"
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696582683.52
  },
  {
    "n": "gsmNetworkId",
    "vs": "20408"
  },
  {
    "n": "switch",
    "vs": "64"
  },
  {
    "n": "switchName",
    "vs": "SV_Network"
  }
]
[
  {
    "bn": "urn:dev:IMEI:863740062764946:",
    "bt": 1664818024.4,
    "n": "altitude",
    "u": "m",
    "v": 63
  },
  {
    "n": "batteryVoltage",
    "u": "V",
    "v": 3.87
  },
  {
    "n": "eventDescription",
    "vs": "?1?"
  },
  {
    "n": "eventId",
    "vs": "1"
  },
  {
    "n": "firmwareVersion",
    "vs": "69"
  },
  {
    "n": "gpsNotes",
    "vs": "OK"
  },
  {
    "n": "gpsStatus",
    "vs": "0"
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696499003.04
  },
  {
    "n": "heading",
    "u": "rad",
    "v": 0
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 52.04044
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.40817
  },
  {
    "n": "radius",
    "u": "m",
    "v": 9.5
  },
  {
    "n": "switch",
    "vs": "0"
  },
  {
    "n": "switchName",
    "vs": "SV_Position"
  },
  {
    "n": "temperature",
    "u": "Cel",
    "v": 22.5
  },
  {
    "n": "velocity",
    "u": "m/s",
    "v": 0
  }
]
Understanding and Interpreting SenML Data
KPN Global Tracker Wired
LoRa On Premise Gateways
LoRa Geolocation

SODAQ R412M

This is an old development board which is no longer available for purchase and should not be used for new designs.

A nifty, industry standard IoT developer board that allows you to utilize LTE-M networks with integrated GPS, Accelerometer and Magnetometers, Grove Connectors, JST connectors and Arduino compatible open source software that allows for low-power applications.

This getting started targets the SODAQ SARA Arduino Form Factor (AFF) R412M device. Probably other AFF and SFF SODAQs with an R41xM module will work, but we did not test them (yet). If you share your experiences with one of these devices, we can update this manual!

This getting started will give you step by step instructions to get your KPN Things M2M developer kit connected to KPN Things!

1. Get everything you need

Before we start, you should check if have all necessary components:

  1. KPN Things SIM card

  2. SODAQ SARA AFF R412M Board

  3. PCB Antenna

  4. LiPo Battery

Request test SIM cards

After registration there is another step in order to receive test SIM cards, since we don't know your home address yet to send them to! After registering and logging in for the first time, click on the link in the M2M is now available in KPN Things! notification box on the home page and follow the directions.

You will receive your test SIM cards in a couple of days. The SIM cards will be added to your Portal account already, ready to go!

2. Prepare your development environment (Arduino IDE)

This part of the manual is based on the Getting Started of SODAQ.

Setup your Arduino IDE

With the Arduino IDE we will write our code and program it on the Device.

  • Download the Arduino IDE and follow the installer.

  • Open your freshly installed Arduino IDE.

Download the board configuration files for Sodaq boards

When your IDE is all started, execute the following steps to install the Sodaq board configuration files.

  • Click on File > Preferences

  • At the bottom you should see Additional Boards Manager URLs. This is where you need to paste the following URL:

http://downloads.sodaq.net/package_sodaq_samd_index.json

After adding the URL, your preferences screen should look like this:

  • Close the preferences screen with OK

  • Click on Tools > Board:… > Boards Manager…

  • Search for SODAQ.

  • Click on SODAQ SAMD Boards and an install button will appear.

  • Click Install to install the latest version of your selected board collection.

  • When the installation is done, click Close.

3. Prepare your Device

Assemble your Device

Step 1: Insert the KPN Things SIM card.

Step 2: Connect the antenna. Push the connector straight on the board.

Step 3: Connect the battery to the right terminal on the board, the one stating BATT.

Step 4: Connect the USB cable to the left USB port, the one next to the SIM card slot.

Make sure you connect your battery when using the board, else the module won't work correctly!

Configure your Arduino IDE

  • From the Tools menu, under Board, select the correct board type:

Device

Board type

SODAQ SARA Arduino Form Factor (AFF) R412M

SODAQ SARA

  • Also from the Tools menu, under Port, make sure the correct COM port is selected. If you have multiple options, select the one stating SODAQ SARA.

If none of your ports is labelled that way, disconnect your SODAQ, reopen the menu, check which COM port disappeared, reconnect the SODAQ and choose the previously identified COM port.

Upload test sketch

With this test sketch we are going to check whether your Device works.

  • Copy the passthrough example code from the following SODAQ documentation page:

  • Paste the passthrough example code in you Arduino IDE.

  • Uncomment the third line, since you have a u-blox R4xx module

  • From the Sketch menu, click Upload to send the software to your SODAQ.

If all went well it will say the following in the bottom of the Arduino IDE:

Verify XXX bytes of flash with checksum.
Verify successful
done in XXX seconds
CPU reset.
  • Meanwhile, from the Tools menu, open the Serial Monitor

  • In the Serial Monitor, select Both NL & CR and set the baud rate to 115200 baud (#1 in the screenshot below).

    • #2 in the screenshot above illustrates where you can enter commands to be sent to the u-blox module that sits on your Development board.

    • #3 shows where you will see the responses from the module.

  • Use the command AT+GSN to get the IMEI of your module.

    • You will be needing this value when registering your Device in the next step of this getting started.

  • Additionally, with the command ATI9 you can check your firmware version.

The latest firmware version for the R412 is M0.10.00,A.02.14 (as of November 2020)

Available commands

Command

Description

Expected response

AT

Communication test

OK

ATI9

Firmware version

Some ID.

AT+CSQ

Check signal quality

No connection: +CSQ: 99,99

Good connection: value around 20

AT+GSN

Fetch IMEI of module

The SODAQ passthrough documentation gives some more available commands. All available commands can be found in the SARA-R4 AT commands manual of u-blox.

4. Register your Device to KPN Things

Open the KPN Things Portal

Open the KPN Things Portal. Go to the All Devices page and click on Add new Device.

Fill in your device information

  1. Select the Own M2M device device type.

  2. Enter a name for your SODAQ device.

  3. Click Add Device to continue.

Provide Network Information

Now enter the M2M specific information of your Device.

  1. IMEI of your Device. This value is printed on your u-blox module:

2. ICCID of your SIM card. This value is printed on your SIM card. Select the correct SIM card from the drop down.

If you have an Early access SIM, you choose the option "Add early access SIM" and enter the ICCID of the SIM manually in the newly appeared input field.

3. Shared secret - a kind of password for the future data coming from your Device. Here you should come up with a unique password containing at least:

  • One lower case character.

  • One upper case character.

  • One number.

  • One special character.

  • 32 characters in total.

The shared secret should also be programmed into your Device in step 5.

4. Click Add Network Info to save the network information and then Finish to continue.

Learn more about M2M in KPN Things.

5. Program your device to send a message

In this step we are going to flash the Device with a program to send data to KPN Things.

Download the ThingsML and Sodaq libraries

The ThingsML library will provide code for your Device to communicate with KPN Things. The SODAQ libraries will provide code to interface with the components on the development board.

  • From the Tools menu in your Arduino IDE click on Manage Libraries...

  • Now, in the Library Manager, wait for all libraries to load.

  • Then search and install the following libraries:

    • ThingsML

    • Sodaq_LSM303AGR

    • Sodaq_R4X

    • Sodaq_wdt

  • When the installations are finished, click Close.

Upload the example sketch

This example will read the board temperature from the onboard thermometer and send it to KPN Things every 60 seconds.

From the File menu, click on Examples. Now find ThingsML, then select sodaq, and within that choose sara_aff_temperature.

Fill device identifiers in example code

Look for the following part in the example code and fill in the missing values:

/*
 * Configuration
 */
#define DEVICE_URN      "urn:dev:IMEI:--fill-me--:"
#define DEVICE_KEY      "--fill-me--"

/* ... */
#define APN             "--fill-me--"
  • Device URN should be completed with the IMEI of your Device.

    • Make sure you leave the trailing colon : in place in the DEVICE_URN variable!

  • Device Key should be filled with the Shared secret of your Device.

  • APN should be filled with one the following value two values. Your SIM card is one of two types, which you can see in the Connectivity list in KPN Things.

    1. For M2M Easy use kpnthings.iot

    2. For M2M Advantage use kpnthings2.m2m

Roughly: If you received your SIM card after June 2023, it's most likely an M2M Advantage.

Run the sketch

  • Upload the sketch to your Device and open the Serial Monitor. The device will report some of the setup steps it will perform:

Console open
Turning on modem...
Connecting to network...

This means your Device is trying to connect to our LTE-M network. After some seconds the following lines will appear:

Network connected
Sending message...
Receiving message...
Message response length: 97
Message response:
HTTP/1.1 202 
Date: Tue, 03 Nov 2020 13:42:47 GMT
Content-Length: 0
Connection: keep-alive


Message sending finished.
Modem off

------------

This means your Device has join our network and has sent its first uplink message to KPN Things!

Check incoming data in the Portal

Now your Device has connected to the network and is sending data, you should visit the Device Detail Page in the Portal of the Device you created in step 4.

In the connectivity block, you should see that the last message time indicates that KPN Things just received a message from your Device!

6. Setup data flow in KPN Things

You now successfully connected your M2M device to KPN Things! To further setup your data flow in KPN Things, you should can go to the next step:

More information

Interested in expanding the example sketch to make the Device do exactly what you want? Use the following references to find more information on Things code and SODAQ code:

  • The ThingsML library contains another SODAQ example that reads out the GPS module and sends latitude and longitude to KPN Things.

  • The SODAQ Support pages contain several examples to read out the sensors you can find on the SODAQ boards: https://support.sodaq.com/Boards/Sara_SFF/examples/.

  • Additional documentation on the ThingsML library can be found in Github: https://kpn-iot.github.io/thingsml-c-library/

KPN Global Tracker Autonomous

KPN Global Tracker Autonomous

A battery powered 2G/LTE-M device with GPS.

  • Supported network type(s): KPNSTREAMLINEM2M

  • Device Specification ID: kpn-global-tracker-autonomous

  • Device Specification UUID: e60e392e-c738-49ae-839e-54363638ae88

Decoders
decoderSpecificationUUID
Description

Decoded M2M Data for GlobalTracker Autonomous

d1f88fc7-cb8c-56ad-8f51-abd3d68e130c

Decoder for M2M KPN Global Tracker Autonomous devices.

Decoded M2M Data for GlobalTracker Autonomous

Decoder for M2M KPN Global Tracker Autonomous devices.

The following SenML records can be present, amongst others:

name
type
unit
example
description

altitude

m

The measured altitude

batteryVoltage

number

V

3.59

firmwareVersion

string

not present in detail level 1 messages

gpsTime

number

s

Unix EPOCH time in seconds

gsmNetworkId

number

eventDescription

number

  • Start moving

  • Stop moving

  • While moving

  • While not moving

Description of the device event. Not present in detail level 1 messages.

eventId

number

  • 40 (Stop moving)

  • 41 (Start moving)

  • 44 (While moving)

  • 45 (While not moving)

Id of the device event. Not present in detail level 1 messages

gpsStatus

number

  • 0 (OK)

  • 1 (Speed/heading invalid)

  • 32 (Accuracy not met)

  • 33 (Accuracy not met + Speed/heading invalid)

Identifier indicating the GPS Status

gpsNotes

number

  • OK

  • Accuracy not met

  • Speed/heading invalid

  • Accuracy not met + Speed/heading invalid

Description of the GPS Status

heading

number

rad

Direction in radials. Not present in detail level 1 messages

latitude

number

lat

Latitude of the device. Not present in detail level 1 messages

longitude

number

lon

Longitude of the device. Not present in detail level 1 messages

radius

number

m

Radius indicating the precision of the positition. Not present in detail level 1 messages

switch

number

  • 0 (Position)

  • 53 (SV_CountersUser)

  • 64 (SV_Network)

  • 77 (TimeAlive)

Identifier indicating the record-type. In case Switch=77, there has been no GPS Fix and the Geo coordinates belong to the previous GPS Fix.

switchName

number

  • SV_Position

  • SV_CountersUser

  • SV_Network

  • SV_TimeAlive

Name of this record-type.

temperature

number

Cel

The measured temperature

velocity

number

m/s

Velocity of the device. Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

Detail level 1 (SV_Network)

[
  {
    "bn": "urn:dev:IMEI:863740062764946:",
    "bt": 1664818024.4,
    "n": "batteryVoltage",
    "u": "V",
    "v": 3.87
  },
  {
    "n": "firmwareVersion",
    "vs": "69"
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696499019.6799998
  },
  {
    "n": "gsmNetworkId",
    "vs": "0"
  },
  {
    "n": "switch",
    "vs": "64"
  },
  {
    "n": "switchName",
    "vs": "SV_Network"
  }
]

Detail level 2 (SV_TimeAliveTripMeters)

[
  {
    "n": "batteryVoltage",
    "u": "V",
    "v": 4.16,
    "bn": "urn:dev:IMEI:863740069962824:",
    "bt": 1664818024.4
  },
  {
    "n": "eventDescription",
    "vs": "Start moving"
  },
  {
    "n": "eventId",
    "vs": "41"
  },
  {
    "n": "firmwareVersion",
    "vs": "564"
  },
  {
    "n": "gpsNotes",
    "vs": "OK"
  },
  {
    "n": "gpsStatus",
    "vs": "0"
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696854457.92
  },
  {
    "n": "heading",
    "u": "rad",
    "v": 5.897816608339239
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 52.0405
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.40833
  },
  {
    "n": "radius",
    "u": "m",
    "v": 9.5
  },
  {
    "n": "switch",
    "vs": "36"
  },
  {
    "n": "switchName",
    "vs": "SV_TimeAliveTripMeters"
  },
  {
    "n": "velocity",
    "u": "m/s",
    "v": 0
  }
]

Detail level 3 (SV_Position)

[
  {
    "bn": "urn:dev:IMEI:863740062764946:",
    "bt": 1664818024.4,
    "n": "altitude",
    "u": "m",
    "v": 63
  },
  {
    "n": "batteryVoltage",
    "u": "V",
    "v": 3.87
  },
  {
    "n": "eventDescription",
    "vs": "?1?"
  },
  {
    "n": "eventId",
    "vs": "1"
  },
  {
    "n": "firmwareVersion",
    "vs": "69"
  },
  {
    "n": "gpsNotes",
    "vs": "OK"
  },
  {
    "n": "gpsStatus",
    "vs": "0"
  },
  {
    "n": "gpsTime",
    "u": "s",
    "v": 1696499003.04
  },
  {
    "n": "heading",
    "u": "rad",
    "v": 0
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 52.04044
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.40817
  },
  {
    "n": "radius",
    "u": "m",
    "v": 9.5
  },
  {
    "n": "switch",
    "vs": "0"
  },
  {
    "n": "switchName",
    "vs": "SV_Position"
  },
  {
    "n": "temperature",
    "u": "Cel",
    "v": 22.5
  },
  {
    "n": "velocity",
    "u": "m/s",
    "v": 0
  }
]

Streamline LoRa

Streamline LoRa

For all Streamline LoRa devices (N1C2, P1A3, P1A5).

  • Supported network type(s): KPNLORA

  • Device Specification ID: supported-streamline-lora

  • Device Specification UUID: 413e431d-4b9f-4266-93df-0b0662041b18

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

d8306443-a5c2-4b82-93fd-a8b2275eaac5

Add data to messages where location could be calculated.

= Raw LoRa payload

dd3758ce-1963-4b68-8def-3638ceb8dda5

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

ec596df3-4f12-5326-b72f-94f6da47e593

Forward the raw LoRa payload and port number without decoding.

› Decoded Streamline LoRa payload

043be93b-93e5-4ea9-9cfe-8213b5bb1729

Decoder for Streamline LoRa message types 0x21, 0x22, 0x23, 0x24, and 0xFF, excluding IO bits.

› Decoded Streamline LoRa payload (v2)

79a912f8-9b60-5a62-9c6e-85763801d746

Decoder for Streamline LoRa message types 0x21, 0x22, 0x23, 0x24, and 0xFF, excluding IO bits.

Encoders
encoderSpecificationUUID
Description

= Raw LoRa payload

36abf4ba-ed32-4069-8351-2426bc41a26b

Send raw LoRa payload to your device.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

payload

string

port

number

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded Streamline LoRa payload

Decoder for Streamline LoRa message types 0x21, 0x22, 0x23, 0x24, and 0xFF, excluding IO bits.

Expected SenML records

name
type
unit

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

batteryVoltage

number

V

compassX

number

T

compassY

number

T

compassZ

number

T

heading

number

rad

latitude

number

lat

longitude

number

lon

temperature

number

Cel

velocity

number

m/s

› Decoded Streamline LoRa payload (v2)

Decoder for Streamline LoRa message types 0x21, 0x22, 0x23, 0x24, and 0xFF, excluding IO bits.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

accelerationX

number

m/s2

Measured acceleration in the X-axis

accelerationY

number

m/s2

Measured acceleration in the Y-axis

accelerationZ

number

m/s2

Measured acceleration in the Z-axis

batteryVoltage

number

V

Measured battery voltage

compassX

number

T

Measured compass orientation in the X-axis

compassY

number

T

Measured compass orientation in the Y-axis

compassZ

number

T

Measured compass orientation in the Z-axis

heading

number

rad

latitude

number

lat

51.90726

Latitude

longitude

number

lon

4.48945

Longitude

temperature

number

Cel

velocity

number

m/s

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:03cce494b059a546:",
        "bt": 1701882708.84,
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "velocity",
        "u": "m/s",
        "v": 4.12
    },
    {
        "n": "heading",
        "u": "rad",
        "v": -3.944
    },
    {
        "n": "accelerationX",
        "u": "m/s2",
        "v": 9.5002
    },
    {
        "n": "accelerationY",
        "u": "m/s2",
        "v": 0.7661
    },
    {
        "n": "accelerationZ",
        "u": "m/s2",
        "v": 0.1532
    },
    {
        "n": "compassX",
        "u": "T",
        "v": 0.000001
    },
    {
        "n": "compassY",
        "u": "T",
        "v": -0.001507
    },
    {
        "n": "compassZ",
        "u": "T",
        "v": -0.002638
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 7
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

= Raw LoRa payload encoding

  • Protocol: LoRa downlink

  • Description: Send raw LoRa payload to your device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: payloadHex (raw input)

Configure a flow
LoRa Geolocation

Generic LoRa device (preset connectivity)

Generic LoRa device (preset connectivity)

Connect a LoRa device which has built in LoRa connectivity that came with the device. You will need to enter the DevEUI, AppEUI, and AppKey of this device during registration in KPN Things.

  • Supported network type(s): KPNLORA

  • Device Specification ID: own-lora-with-keys

  • Device Specification UUID: c11ef507-293f-4f04-ad82-e2f1c777c339

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

af9e394d-6c1d-4d46-9a29-73ac77be64b7

Add data to messages where location could be calculated.

= Raw LoRa payload

c17e2392-bb83-4e79-b854-ed72196857ee

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

bc523b60-1b3f-5f33-b041-3afbe29d13e0

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload Extended

b7557a3d-4222-43e5-8b19-98706b1302f7

Forward the raw LoRa payload and lora network metadata without decoding.

= Raw LoRa payload Extended (v2)

bc9628e5-2c18-5f4b-9baf-5023d8b4a37b

Forward the raw LoRa payload and lora network metadata without decoding.

› Decoded ThingsML for LoRa payload

0d7b7295-287e-4908-878d-00d667f6f923

Decoder for , a generic LoRa payload protocol by KPN.

› Decoded ThingsML for LoRa payload (v2)

5c03dd6b-42a6-5cf4-8790-8db27551431a

Decoder for , a generic LoRa payload protocol by KPN.

Encoders
encoderSpecificationUUID
Description

= Raw LoRa payload

1abb958a-d85a-4d6a-a44f-521f7e52adcd

Send raw LoRa payload to your device.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

payload

string

port

number

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

= Raw LoRa payload Extended

Forward the raw LoRa payload and lora network metadata without decoding.

Expected SenML records

name
type
unit

ADRbit

number

Channel

string

DevLrrCnt

number

FCntDn

number

FCntUp

number

LrrESP

string

LrrRSSI

string

LrrSNR

string

SpFact

number

SubBand

string

payload

string

port

number

Raw LoRa payload Extended (v2)

Forward the raw LoRa payload and lora network metadata without decoding.

Fixes from '= Raw LoRa payload Extended':

  • LrrRSSI is changed to a number.

  • LrrSNR is changed to a number.

  • LrrESP is changed to a number.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

ADRbit

number

0

Adaptive Data Rate indicator

Channel

string

LC255

Lora channel of the transmission

DevLrrCnt

number

0

Amount of gateways that received the message

FCntDn

number

21725

The downlink framecounter

FCntUp

number

30117

The uplink framecounter

LrrRSSI

number

0

Received Signal Strength Indicator

LrrSNR

number

0

Signal to Noise Ratio

payload

string

"4D985C495AC4D8C9682CFD"

raw hex payload string

port

number

1

LoRa port used

SpFact

number

9

Spreading factor used

SubBand

string

"G0"

Lora band of the transmission

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "8ca683bd93124178afc5ff"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "FCntUp",
        "v": 30117
    },
    {
        "n": "FCntDn",
        "v": 21725
    },
    {
        "n": "LrrRSSI",
        "v": 0
    },
    {
        "n": "LrrSNR",
        "v": 0
    },
    {
        "n": "DevLrrCnt",
        "v": 0
    },
    {
        "n": "SpFact",
        "v": 9
    },
    {
        "n": "SubBand",
        "vs": "G0"
    },
    {
        "n": "Channel",
        "vs": "LC255"
    },
    {
        "n": "ADRbit",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded ThingsML for LoRa payload

Decoder for ThingsML for LoRa, a generic LoRa payload protocol by KPN.

› Decoded ThingsML for LoRa payload (v2)

Decoder for ThingsML for LoRa, a generic LoRa payload protocol by KPN.

This decoder also decodes Geolocation and Local Gateway data.

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

The resulting SenML completely depends on the ThingsML input and can produce almost any type of SenML output. The decoded ThingsML provided below is just an illustration of what is possible.

[
    {
        "bn": "urn:dev:DEVEUI:6E5E267F2E6FB3BF:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]

= Raw LoRa payload encoding

  • Protocol: LoRa downlink

  • Description: Send raw LoRa payload to your device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: payloadHex (raw input)

Generic LoRa device (programmable)

Connect a LoRa device for which you currently do not have LoRa connectivity credentials (DevEUI, AppEUI, and AppKey). These credentials will be provided during registration of the device in KPN Things.

  • Supported network type(s): KPNLORA

  • Device Specification ID: own-lora

  • Device Specification UUID: 1e7f596c-6eb4-44d2-bec6-0d93181d4330

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

+ LoRa Geolocation data

Add data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

= Raw LoRa payload Extended

Forward the raw LoRa payload and lora network metadata without decoding.

Expected SenML records

name
type
unit

Raw LoRa payload Extended (v2)

Forward the raw LoRa payload and lora network metadata without decoding.

Fixes from '= Raw LoRa payload Extended':

  • LrrRSSI is changed to a number.

  • LrrSNR is changed to a number.

  • LrrESP is changed to a number.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded ThingsML for LoRa payload

Decoder for , a generic LoRa payload protocol by KPN.

› Decoded ThingsML for LoRa payload (v2)

Decoder for , a generic LoRa payload protocol by KPN.

This decoder also decodes data.

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

The resulting SenML completely depends on the ThingsML input and can produce almost any type of SenML output. The decoded ThingsML provided below is just an illustration of what is possible.

= Raw LoRa payload encoding

  • Protocol: LoRa downlink

  • Description: Send raw LoRa payload to your device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: payloadHex (raw input)

Connecting LoRa devices

Learn more about connecting LoRa

You can register your LoRa devices directly on KPN Things. This will register your device in our network simultaneously. After registration your device can directly join our network. Further configuration KPN Things allows you to decode and forward the data of your LoRa devices to your application. Learn more about all parts of .

LoRa Device registration

Currently only LoRaWAN 1.0.x is supported. Also, only OTAA is available. ABP is not available since it is less secure.

To register a LoRa device on KPN Things you need to enter the following details:

  • DevEUI - Unique LoRa device identifier.

  • AppEUI - LoRa application identifier.

  • AppKey - LoRa device authentication and encryption root key.

LoRa data history

This tab shows you detailed information about the messages send to and from your Device from the perspective of our LoRa network.

Messages in LoRa data history are stored up to 1 month.

Message overview

The message overview of LoRa data history gives you an overview of all message to and from your Device in descending order of time. So the most recent message is at the top of the list of messages.

What you can see here is:

  1. The type of LoRa message.

    1. Whether it was an uplink (🔵 blue) or downlink (🟢 green) message.

    2. Whether it was a Join request, Join accept or regular message.

    3. Whether the message was confirmed or unconfirmed, or whether the message carried an ACK.

    4. Whether the messages contained data, mac, or both.

  2. Whether a result could be determined on that message (only available for uplink).

  3. The exact timestamp of the message, with millisecond accuracy.

  4. The frame counter value of the message. Uplink (FCntUp) and downlink (FcntDown) communication has its own counter.

  5. An indication of the signal strength the message.

  6. Click on the chevron at the end of a row to see more details of a message.

  7. Search bar to see the message history up to a certain point in time.

  8. Button to load more data history (if available).

Message detail

When you open the details of a message by clicking the chevron at the right side of the row, you can see the following:

  1. Details about the message signal:

    1. The Spreading factor used, which indicates the relationship between bit and chirp rate used in the modulation. This number can vary from SF7 to SF12; .

    2. The LoRa channel used. Currently 16 channels are support in the KPN network, .

    3. The number of gateways that received the message (uplink only).

    4. The Received Signal Strength Indicator (RSSI) of the message (uplink only). This gives you an indication of how strong the message's signal has been received by the best receiving gateway. The closer the number is to zero, the stronger is the received signal.

    5. The Signal to Noise Ratio (SNR) of the message (uplink only). This gives you an indication of the amount of noise when the message was received by the best receiving gateway. It is used to determine the quality of the signal. If the number is high (far above zero), it is easy to demodulate the signal. If the number is low (far below zero), it is hard or impossible to demodulate the signal.

    6. The Estimated Signal Power (ESP) of the message (uplink only). ESP is calculated from RSSI and SNR and gives an indication of the used link budget. The closer to zero the better is the signal.

  2. Details about the content of the message:

    1. The LoRa application port on which data was send or received (if applicable).

    2. The exact payload of the LoRa message (if applicable).

    3. The exact MAC content of the LoRa message (if applicable).

    4. Flags that were in the LoRa message, like ACK, FPending or ADRAckReq.

  3. Details of the LoRa Geolocation result:

    1. Coordinates of the calculated location.

    2. Radius in meters, the theoretical inaccuracy of the LoRa Geolocation result.

    3. Method used to determine the geolocation. Either RSSI (Received Signal Strength Indicator) or TDOA (Time Difference of Arrival). The latter is more accurate, but only possible when at least 3 gateways have received the message.

What to expect on first use

This section will explain what you can expect when you first connect your LoRa Device to KPN Things.

In the screenshot below you can see the beginning of a typical LoRa data history. The message are shown in descending order of time, so the first message is at the bottom of the list of messages.

Below at the section you can find an even more elaborate example. If your LoRa data history is not the same as in the screenshot above, you can continue reading to understand the chronology of LoRa data history.

Step 1. Join request

The first thing your device should do is try to join our network. With a join request, the device will ask to network whether it may join. Learn more about .

Your LoRa data history should look like this when the join request is sent.

I don't see a join request appearing in the LoRa data history!

This means the network does not see any activity from your device. Try one of the following actions to fix:

  • Check whether the LoRa registration was successful by checking the connectivity status on the .

  • Check if your device is programmed/configured with the same DevEUI you find in the connectivity details on the .

  • Check if your device is sending the join request on one of the default LoRaWAN channels.

  • Maybe the network coverage is not ideal at your current position. Thick walls or a sub-optimal antenne can cause issues. Try to move to a more exposed location for better coverage, like moving closer to a window.

  • It could be that your device is not sending the join request on SF12, the spreading factor with the farthest reach. Program/configure your device to use this spreading factor when joining to increase coverage of your device.

  • Maybe you are completely out of reach of the network. You can check online.

Step 2. Join accept

After receiving the join request, the network will check whether the Device is known and whether the security details are correct. If so, the network will respond with a join accept.

Your LoRa data history should look like this when the join accept has been sent.

I don't see a join accept appearing in the LoRa data history! I only see join requests.

This means the network sees your requests to join the network, but there is a (security) reason not to accept your join request. Try the following to fix it:

  • Check if your device is programmed/configured with the correct AppEUI.

  • Check if your device is configured with the correct AppKey. This could also have to do with the with which you should enter the AppKey in your device.

  • Try to remove your device from the Portal and re-add it, maybe you made a typo when registering your device.

Step 3. First uplink

After your Device has received and processed the join accept, it can begin sending data.

Your LoRa data history will look this way after your Device has sent its first uplink.

I don't see uplink data appearing in the LoRa data history! I only see join requests and accepts.

This means the join is completed from the network point of view, but somehow your device does not see it the same way. Try the following to fix it:

  • Often join accepts are sent on the RX2 receive window. Is your RX2 receive window correctly configured? This should be 869525000 MHz and DR0 (SF12). Some device manufacturers have the device wrongly configured with the RX2 receive window listening on DR3 (SF9). (This is a common issue with Dragino devices!)

  • Sometimes the link budget for downlink is smaller than uplink, meaning downlinks are harder to receive than it is to send uplinks. This accounts for worse coverage for downlink than for uplink. Try to move to a more exposed location and try again.

The network is sending Join accepts, but my Device says joining did not succeed!

  • It could be that there is a programming error in your Device that causes your Device to incorrectly process the Join accept. Please refer to your device manufacturer documentation for more help on that.

  • It could be a LoRa reception problem, due to configuration problems or insufficient coverage. You can check the possible solutions for "I don't see uplink data appearing in the LoRa data history!" above for more info.

Step 4. First downlink

Download messages are messages send by the network to your Device. These can be mac messages, containing commands to your Device about LoRaWAN transmission settings, or they can contain data from your application or from KPN Things.

After a Device has joined, the network will send up to three downlink messages with mac commands in them.

Step 5. Normal operation

Now your Device will go into normal operation, often meaning periodically sending uplink messages. In the screenshot below you can see a typical LoRa data history.

Other things you can see

Example A. Too high sending interval ⚠

Using the timestamps for consecutive uplink messages you can determine the average sending interval of your Device. This sending interval should not be too high, since you might be violating the of KPN Things.

Make sure your Device does not send more often than once every 5 minutes on average.

Example B. No answer to mac messages. ⚠

Each mac command consists of a request and an acknowledge message. So mac messages should come in pares in the LoRa data history.

If this is often not the case and you see that downlink mac messages are not answered by the Device, please check your Device, because there might something wrong. If your Device does not follow up mac commands, the transmission settings cannot be optimized.

Make sure your Device responds to all mac commands.

Example C. No new LoRa Geolocation for an uplink. ℹ

Not every uplink message will give a new calculated LoRa Geolocation. This is normal. It can be caused by the fact that too few gateways received the uplink, or if other circumstances were sub-optimal.

Example D. Missing FCntUp: message lost. ℹ

When a value for FCntUp is missing in the LoRa data history, it means that that specific message has not been received by the network. In LoRaWAN communication it is normal to have lost messages, your application should take this into account. It is a side-effect of the very energy efficient way LoRaWAN works. In normal situations you can expect up to 5% message loss. If your losses are higher, coverage on the location of your Device might be temperate.

Example E. Join for each uplink message. ⚠

If you see a join ceremony before each first message (FCntUp = 0), there is something wrong with your Device. Maybe it is losing power in between data transmissions or there is another reason your Device rejoins after each message.

Your Device should not rejoin after each message, because it puts unnecessary stress on the battery consumption of your device and it prevents the network to optimize the LoRaWAN transmission configuration through mac commands.

Make sure your Device remembers its join in between uplink messages.

Example F. Only Confirmed uplink messages ⚠

If you see your Device (almost) only send Confirmed uplink messages, your Device is not properly configured. Sending too much Confirmed uplink messages puts too much demand on downlink communication, since every Confirmed uplink message requests a downlink message containing an ACK (acknowledgement) from the network. The network has not been designed to handle constant Confirmed uplink messages. This will negatively impact the overall capacity of the network. Therefor the use of Confirmed uplink messages is part of our Terms of Use.

No more than 10% of the uplink messages of your Device may be Confirmed messages. All other messages must be Unconfirmed.

LoRa Connectivity details

This tab contains detailed information about how your device is configured inside the LoRa network. When a device is added to the LoRa network, it is configured with a device profile and a connectivity plan.

Device profile

The device profile name consists of three things: the device profile, the LoRa class and the LoRa version.

The profile is used when determining the geolocation of a device. Generally speaking, the geolocation can be determined with greater accuracy for slower moving devices than for faster devices. This is because the algorithm will use the average location of multiple measurements for slower devices.

The profile should describe the motion of the device as it is being tracked. A stolen bike, for example, is usually in one place as it is being located, so it should have the static profile.

The LoRa class is either A, B, or C. Class A is the most common and is typically used by battery powered devices to minimize power consumption and maximize battery life.

The LoRa version is currently always 1.0.x.

Profile
Class
Version
Typical Use
Device Profile ID

Motion indicator

A more fine-grained version of the profile of a device. Values are Near static, Walking speed, Bike speed, Vehicle speed, and Random. Like the profile, this is used when determining the geolocation of the device.

Connectivity plan

Determines the capabilities of the device in the network. Things like how many uplinks and downlinks the device may send and receive, whether to perform geolocation and whether to use a channel mask are configured using this setting. A bit like your mobile phone bundle, this setting also determines the price for device connectivity. This is set by KPN and can't be changed.

Data protocol choice

KPN Things supports all LoRa data protocols. All data representations can be forwarded as raw hexadecimal payload to each .

But if you use a LoRa data protocol that is known to KPN Things, your payload can be decoded in KPN Things, allowing you use additional features in KPN Things. There are several options to:

  1. Use a device that is already in the .

  2. Contact to get your device in the supported device types list.

  3. Use as data protocol. ThingsML is an extension of that is suitable for LoRa communication.

Devices with LoRa connectivity have some specific tabs on the to display LoRa specific information.

Learn more

Want to learn more about LoRa connectivity? Head on over to our !

KPN LocationTag WS

A small device using WiFi scanning for localisation.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-ws

  • Device Specification UUID: 2c05af48-434e-4806-a0f3-837360f4f3cb

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

Add data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

= Raw LoRa payload Extended

Forward the raw LoRa payload and other metadata without decoding.

Expected SenML records

name
type
unit

Raw LoRa payload Extended (v2)

Forward the raw LoRa payload and lora network metadata without decoding.

Fixes from '= Raw LoRa payload Extended':

  • LrrRSSI is changed to a number.

  • LrrSNR is changed to a number.

  • LrrESP is changed to a number.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded payload with WiFi scan results

Decoder for Streamline LoRa message type 0xF1.

› Decoded payload with WiFi scan results (v2)

Decoder for Streamline LoRa message type 0xF1.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

KPN Conditionsensor CO2 III motionPage 1

Also known as Streamline CO2 sensor with rechargeable battery. A Smart Building Sensor for indoor environment monitoring.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-conditionsensor-co2-iii-motion

  • Device Specification UUID: 9629ddf1-b1c0-410b-b6a1-5003afd6e26c

Decoders
decoderSpecificationUUID
Description

› Decoded payload for environment monitoring

  • UUID: 2bb53ece-d857-458c-9218-614f98cd34bf

  • Description: Decoder for Streamline LoRa message type 0xB0 with CO2 data.

  • Exchange: decoder.lora.streamline.exchange

Expected SenML outputs

name
type/unit
example
description

Example SenML-message

› Decoded payload for environment monitoring (v2)

Decoder for Streamline LoRa message type 0xB0 and 0xB1 with CO2 data.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

0xB0 payload

0x1B payload

+ LoRa Geolocation data

aa2a1fa0-2613-4309-9ed6-72de96047d7d

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

6da609d1-0ec4-4f07-89e6-2acad60b7cdf

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

1c0f77b0-2947-5e08-a5a8-d311cb094c3c

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload Extended

f087f4f5-f603-47d3-be94-790e99b150cf

Forward the raw LoRa payload and lora network metadata without decoding.

= Raw LoRa payload Extended (v2)

71910f65-a9d6-587e-9148-c01ec440fdd2

Forward the raw LoRa payload and lora network metadata without decoding.

› Decoded ThingsML for LoRa payload

bdf13a5d-95f2-4595-baf0-cd807ff796b1

Decoder for ThingsML for LoRa, a generic LoRa payload protocol by KPN.

› Decoded ThingsML for LoRa payload (v2)

174b8034-70c9-545a-9dfc-2e8353c5301d

Decoder for ThingsML for LoRa, a generic LoRa payload protocol by KPN.

= Raw LoRa payload

30fdeedd-69e6-4ab5-8a90-2d58af7b3b2f

Send raw LoRa payload to your device.

payload

string

port

number

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

ADRbit

number

Channel

string

DevLrrCnt

number

FCntDn

number

FCntUp

number

LrrESP

string

LrrRSSI

string

LrrSNR

string

SpFact

number

SubBand

string

payload

string

port

number

ADRbit

number

0

Adaptive Data Rate indicator

Channel

string

LC255

Lora channel of the transmission

DevLrrCnt

number

0

Amount of gateways that received the message

FCntDn

number

21725

The downlink framecounter

FCntUp

number

30117

The uplink framecounter

LrrRSSI

number

0

Received Signal Strength Indicator

LrrSNR

number

0

Signal to Noise Ratio

payload

string

"4D985C495AC4D8C9682CFD"

raw hex payload string

port

number

1

LoRa port used

SpFact

number

9

Spreading factor used

SubBand

string

"G0"

Lora band of the transmission

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "8ca683bd93124178afc5ff"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "FCntUp",
        "v": 30117
    },
    {
        "n": "FCntDn",
        "v": 21725
    },
    {
        "n": "LrrRSSI",
        "v": 0
    },
    {
        "n": "LrrSNR",
        "v": 0
    },
    {
        "n": "DevLrrCnt",
        "v": 0
    },
    {
        "n": "SpFact",
        "v": 9
    },
    {
        "n": "SubBand",
        "vs": "G0"
    },
    {
        "n": "Channel",
        "vs": "LC255"
    },
    {
        "n": "ADRbit",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
[
    {
        "bn": "urn:dev:DEVEUI:6E5E267F2E6FB3BF:",
        "bt": 1693136532.83,
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.75
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "extTemp",
        "u": "Cel",
        "v": 17.22
    },
    {
        "n": "io",
        "vb": false
    }
]
LoRa Geolocation
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
ThingsML for LoRa
ThingsML for LoRa
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Generic LoRa device (programmable)

Static

A

1.0.x

Battery powered door bell.

Static V 1.0 Class A

Slow moving

A

1.0.x

Roll-carts, animals, ships or bicycles.

Slow moving V 1.0 Class A

Fast moving

A

1.0.x

Cars and trains.

Fast moving V 1.0 Class A

Nomadic

A

1.0.x

Roll-carts or parcels that you need to trace while in transit and register on a checkpoint.

Nomadic V 1.0 Class A

Static

B

1.0.x

Battery powered always reachable sensor.

Static V 1.0 Class B

Static

C

1.0.x

Net powered street light.

Static V 1.0 Class C

Slow moving

C

1.0.x

Reserved for future use.

Slow moving V 1.0 Class C

Fast moving

C

1.0.x

Reserved for future use.

Fast moving V 1.0 Class C

Nomadic

C

1.0.x

Reserved for future use.

Nomadic V 1.0 Class C

the data chain in KPN Things
LoRa Geolocation
the technical details can be found here
see the KPN Thing LoRa documentation
Read more about it here.
Step 5. Normal operation
joining in LoRaWAN
Device detail page
Device detail page
. Learn more about LoRaWAN channels
our LoRa network coverage
endianness
fair use policy
More information about the LoRa class is here.
destination type
data processing
supported device types list
[email protected]
ThingsML
SenML
Device detail page
KPN LoRa documentation

+ LoRa Geolocation data

decc2f80-10b3-4c7c-8a47-a2f704272e6e

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

a1125bd2-1aaf-4284-b866-72e91a1a6862

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

2186c46a-04b7-5f24-a0ab-c46ebbd009f9

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload Extended

3a1af5c6-6499-48a0-b3ff-682e5e496cea

Forward the raw LoRa payload and other metadata without decoding.

= Raw LoRa payload Extended (v2)

049ef907-3732-586e-b638-cdaddafa66c9

Forward the raw LoRa payload and lora network metadata without decoding.

› Decoded payload with WiFi scan results

94fb4c11-6d05-481d-b3e6-58a86c2bcea6

Decoder for Streamline LoRa message type 0xF1.

› Decoded payload with WiFi scan results (v2)

94b73332-ff18-59e5-873a-5ef7e8fad583

Decoder for Streamline LoRa message type 0xF1.

payload

string

port

number

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

ADRbit

number

Channel

string

DevLrrCnt

number

FCntDn

number

FCntUp

number

FPort

number

LrrESP

string

LrrRSSI

string

LrrSNR

string

SpFact

number

SubBand

string

payload_hex

string

ADRbit

number

0

Adaptive Data Rate indicator

Channel

string

LC255

Lora channel of the transmission

DevLrrCnt

number

0

Amount of gateways that received the message

FCntDn

number

21725

The downlink framecounter

FCntUp

number

30117

The uplink framecounter

LrrRSSI

number

0

Received Signal Strength Indicator

LrrSNR

number

0

Signal to Noise Ratio

payload

string

"4D985C495AC4D8C9682CFD"

raw hex payload string

port

number

1

LoRa port used

SpFact

number

9

Spreading factor used

SubBand

string

"G0"

Lora band of the transmission

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "8ca683bd93124178afc5ff"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "FCntUp",
        "v": 30117
    },
    {
        "n": "FCntDn",
        "v": 21725
    },
    {
        "n": "LrrRSSI",
        "v": 0
    },
    {
        "n": "LrrSNR",
        "v": 0
    },
    {
        "n": "DevLrrCnt",
        "v": 0
    },
    {
        "n": "SpFact",
        "v": 9
    },
    {
        "n": "SubBand",
        "vs": "G0"
    },
    {
        "n": "Channel",
        "vs": "LC255"
    },
    {
        "n": "ADRbit",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

batteryLevelLow

boolean

false

Indicates if the battery voltage has been below the threshold

batteryVoltage

number

V

firmwareCRC

string

Firmware info, only sent after device boot

firmwareVersion

string

Firmware info, only sent after device boot

mode

string

"active"

Operation modus. Either "production", "active", "presales" or "missing")

settingsCRC

string

Settings info, only sent after device boot

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "mode",
        "vs": "active"
    },
    {
        "n": "batteryLevelLow",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "firmwareVersion",
        "vs": "0443"
    },
    {
        "n": "firmwareCRC",
        "vs": "397F"
    },
    {
        "n": "settingsCRC",
        "vs": "A3E5"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
LoRa Geolocation
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
KPN LocationTag WS

› Decoded payload for environment monitoring

2bb53ece-d857-458c-9218-614f98cd34bf

Decoder for Streamline LoRa message type 0xB0 with CO2 data.

› Decoded payload for environment monitoring (v2)

a1685635-9e45-5b84-ad2a-4af7d18e15b2

Decoder for Streamline LoRa message type 0xB0 and 0xB1 with CO2 data.

batteryVoltage

V

3.5

The battery voltage of the device

VOC

ppm

The concentration of Volatile Organic Compounds in parts per million

CO2Concentration

ppm

CO2 Concentration in parts per million

pressure

Pa

The air pressure in Pascal

humidity

%HR

The humidity percentage

temperature

Cel

The measured temperature in Celcius

motion

count

Number of times motion has been detected?

movementSensorActiveDuration

s

Number of seconds the movement sensor has been active

movementDetected

boolean

Boolean indicating whether movement was detected or not

[
  { bn: 'urn:dev:DEVEUI:7CC6C40512345678:', bt: 1.701114926e9 },
  { n: 'temperature', u: 'Cel', v: 18.8 },
  { n: 'humidity', u: '%RH', v: 42.0 },
  { n: 'CO2Concentration', u: 'ppm', v: 567.0 },
  { n: 'pressure', u: 'Pa', v: 99200.0 },
  { n: 'VOC', u: 'ppm', v: 0.0 },
  { n: 'batteryVoltage', u: 'V', v: 3.8 },
  { n: 'movementSensorActiveDuration', u: 's', v: 1200.0 },
  { n: 'motion', u: 'count', v: 0.0 },
  { n: 'movementDetected', vb: false },
  { n: 'movementDetected', t: -60.0, vb: false },
  { n: 'movementDetected', t: -120.0, vb: false },
  { n: 'movementDetected', t: -180.0, vb: false },
  { n: 'movementDetected', t: -240.0, vb: false },
  { n: 'movementDetected', t: -300.0, vb: false },
  { n: 'movementDetected', t: -360.0, vb: false },
  { n: 'movementDetected', t: -420.0, vb: false },
  { n: 'movementDetected', t: -480.0, vb: false },
  { n: 'movementDetected', t: -540.0, vb: false },
  { n: 'movementDetected', t: -600.0, vb: false },
  { n: 'movementDetected', t: -660.0, vb: false },
  { n: 'movementDetected', t: -720.0, vb: false },
  { n: 'movementDetected', t: -780.0, vb: false },
  { n: 'movementDetected', t: -840.0, vb: false },
  { n: 'movementDetected', t: -900.0, vb: false },
  { n: 'movementDetected', t: -960.0, vb: false },
  { n: 'movementDetected', t: -1020.0, vb: false },
  { n: 'movementDetected', t: -1080.0, vb: false },
  { n: 'movementDetected', t: -1140.0, vb: false },
  { n: 'movementDetected', t: -1200.0, vb: false },
  { n: 'movementDetected', t: -1260.0, vb: false },
  { n: 'movementDetected', t: -1320.0, vb: false },
  { n: 'movementDetected', t: -1380.0, vb: false },
  { n: 'movementDetected', t: -1440.0, vb: false },
  { n: 'movementDetected', t: -1500.0, vb: false },
  { n: 'movementDetected', t: -1560.0, vb: false },
  { n: 'movementDetected', t: -1620.0, vb: false },
  { n: 'movementDetected', t: -1680.0, vb: false },
  { n: 'movementDetected', t: -1740.0, vb: false },
  { n: 'movementDetected', t: -1800.0, vb: false },
  { n: 'movementDetected', t: -1860.0, vb: false },
  { n: 'TIME_ORIGIN', vs: 'THINGSENGINE' },
]

batteryVoltage

number

V

3.46

The battery voltage of the device

CO2Concentration

number

ppm

689

CO2 Concentration in parts per million

humidity

number

%RH

58.33

The humidity percentage

motion

number

count

29

Number of times motion has been detected?

movementDetected

boolean

true

Boolean indicating whether movement was detected or not

movementSensorActiveDuration

number

s

20

Number of seconds the movement sensor has been active

pressure

number

Pa

101100

The air pressure in Pascal

temperature

number

Cel

21.34

The measured temperature in Celcius

VOC

number

ppm

0.065

The concentration of Volatile Organic Compounds in parts per million

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "u": "Cel",
        "v": 25.9
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 50
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 504
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 101100
    },
    {
        "n": "VOC",
        "u": "ppm",
        "v": 8
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 4.08
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "u": "Cel",
        "v": 27.3
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 68
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 563
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 101500
    },
    {
        "n": "VOC",
        "u": "ppm",
        "v": 1
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 7.53
    },
    {
        "n": "movementSensorActiveDuration",
        "u": "s",
        "v": 5940
    },
    {
        "n": "motion",
        "u": "count",
        "v": 29
    },
    {
        "n": "movementDetected",
        "t": 0,
        "vb": false
    },
    {
        "n": "movementDetected",
        "t": -60,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -120,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -180,
        "vb": false
    },
    {
        "n": "movementDetected",
        "t": -240,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -300,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -360,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -420,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -480,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -540,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -600,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -660,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -720,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -780,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -840,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -900,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -960,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1020,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1080,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1140,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1200,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1260,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1320,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1380,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1440,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1500,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1560,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1620,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1680,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1740,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1800,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1860,
        "vb": false
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
KPN Conditionsensor CO2 III motion
LoRa Geolocation
ThingsML for LoRa
ThingsML for LoRa

KPN Conditionsensor CO2 III

KPN Conditionsensor CO2 III

Also known as Streamline CO2 sensor. A Smart Building Sensor for indoor environment monitoring.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-conditionsensor-co2-iii

  • Device Specification UUID: 7a7c579f-8ce7-4667-bbd6-280902a55948

Decoders
decoderSpecificationUUID
Description

› Decoded payload for environment monitoring

aa611ae0-cb5d-44bc-bac7-ca6c48885ae1

Decoder for Streamline LoRa message type 0xB0 with CO2 data.

› Decoded payload for environment monitoring (v2)

b7f9d5b8-3d4c-5b07-888f-15f67e972277

Decoder for Streamline LoRa message type 0xB0 and 0xB1 with CO2 data.

› Decoded payload for environment monitoring

  • UUID: aa611ae0-cb5d-44bc-bac7-ca6c48885ae1

  • Description: Decoder for Streamline LoRa message type 0xB0 with CO2 data.

  • Exchange: decoder.lora.streamline.exchange

Expected SenML outputs

name
type/unit
example
description

batteryVoltage

V

3.5

The battery voltage of the device

VOC

ppm

The concentration of Volatile Organic Compounds in parts per million

CO2Concentration

ppm

CO2 Concentration in parts per million

pressure

Pa

The air pressure in Pascal

humidity

%HR

The humidity percentage

temperature

Cel

The measured temperature in Celcius

motion

count

Number of times motion has been detected?

movementSensorActiveDuration

s

Number of seconds the movement sensor has been active

movementDetected

boolean

Boolean indicating whether movement was detected or not

Example SenML-message

[
  { bn: 'urn:dev:DEVEUI:7CC6C40512345678:', bt: 1.701114926e9 },
  { n: 'temperature', u: 'Cel', v: 18.8 },
  { n: 'humidity', u: '%RH', v: 42.0 },
  { n: 'CO2Concentration', u: 'ppm', v: 567.0 },
  { n: 'pressure', u: 'Pa', v: 99200.0 },
  { n: 'VOC', u: 'ppm', v: 0.0 },
  { n: 'batteryVoltage', u: 'V', v: 3.8 },
  { n: 'movementSensorActiveDuration', u: 's', v: 1200.0 },
  { n: 'motion', u: 'count', v: 0.0 },
  { n: 'movementDetected', vb: false },
  { n: 'movementDetected', t: -60.0, vb: false },
  { n: 'movementDetected', t: -120.0, vb: false },
  { n: 'movementDetected', t: -180.0, vb: false },
  { n: 'movementDetected', t: -240.0, vb: false },
  { n: 'movementDetected', t: -300.0, vb: false },
  { n: 'movementDetected', t: -360.0, vb: false },
  { n: 'movementDetected', t: -420.0, vb: false },
  { n: 'movementDetected', t: -480.0, vb: false },
  { n: 'movementDetected', t: -540.0, vb: false },
  { n: 'movementDetected', t: -600.0, vb: false },
  { n: 'movementDetected', t: -660.0, vb: false },
  { n: 'movementDetected', t: -720.0, vb: false },
  { n: 'movementDetected', t: -780.0, vb: false },
  { n: 'movementDetected', t: -840.0, vb: false },
  { n: 'movementDetected', t: -900.0, vb: false },
  { n: 'movementDetected', t: -960.0, vb: false },
  { n: 'movementDetected', t: -1020.0, vb: false },
  { n: 'movementDetected', t: -1080.0, vb: false },
  { n: 'movementDetected', t: -1140.0, vb: false },
  { n: 'movementDetected', t: -1200.0, vb: false },
  { n: 'movementDetected', t: -1260.0, vb: false },
  { n: 'movementDetected', t: -1320.0, vb: false },
  { n: 'movementDetected', t: -1380.0, vb: false },
  { n: 'movementDetected', t: -1440.0, vb: false },
  { n: 'movementDetected', t: -1500.0, vb: false },
  { n: 'movementDetected', t: -1560.0, vb: false },
  { n: 'movementDetected', t: -1620.0, vb: false },
  { n: 'movementDetected', t: -1680.0, vb: false },
  { n: 'movementDetected', t: -1740.0, vb: false },
  { n: 'movementDetected', t: -1800.0, vb: false },
  { n: 'movementDetected', t: -1860.0, vb: false },
  { n: 'TIME_ORIGIN', vs: 'THINGSENGINE' },
]

› Decoded payload for environment monitoring (v2)

Decoder for Streamline LoRa message type 0xB0 and 0xB1 with CO2 data.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

3.46

The battery voltage of the device

CO2Concentration

number

ppm

689

CO2 Concentration in parts per million

humidity

number

%RH

58.33

The humidity percentage

motion

number

count

29

Number of times motion has been detected?

movementDetected

boolean

true

Boolean indicating whether movement was detected or not

movementSensorActiveDuration

number

s

20

Number of seconds the movement sensor has been active

pressure

number

Pa

101100

The air pressure in Pascal

temperature

number

Cel

21.34

The measured temperature in Celcius

VOC

number

ppm

0.065

The concentration of Volatile Organic Compounds in parts per million

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

0xB0 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "u": "Cel",
        "v": 25.9
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 50
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 504
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 101100
    },
    {
        "n": "VOC",
        "u": "ppm",
        "v": 8
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 4.08
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

0x1B payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "u": "Cel",
        "v": 27.3
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 68
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 563
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 101500
    },
    {
        "n": "VOC",
        "u": "ppm",
        "v": 1
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 7.53
    },
    {
        "n": "movementSensorActiveDuration",
        "u": "s",
        "v": 5940
    },
    {
        "n": "motion",
        "u": "count",
        "v": 29
    },
    {
        "n": "movementDetected",
        "t": 0,
        "vb": false
    },
    {
        "n": "movementDetected",
        "t": -60,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -120,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -180,
        "vb": false
    },
    {
        "n": "movementDetected",
        "t": -240,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -300,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -360,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -420,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -480,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -540,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -600,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -660,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -720,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -780,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -840,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -900,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -960,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1020,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1080,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1140,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1200,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1260,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1320,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1380,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1440,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1500,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1560,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1620,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1680,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1740,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1800,
        "vb": true
    },
    {
        "n": "movementDetected",
        "t": -1860,
        "vb": false
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
Passthrough - SODAQ Support pages

APIs

You can use API access to KPN Things for instance to automate some actions you normally do manually through the KPN Things Portal

2.3. Give new API Key access to KPN Things

You need to give your newly created API Key access to the KPN Things service before you can use it. For this, click on Services and roles (#1 in the screenshot), and click on Add a service (#2 in the screenshot).

✨ Early access feature! API access to KPN Things is currently in beta! We try to notify users in advance about breaking changes, but we cannot guarantee continuity of this service just yet.

How Things API access works

The API Key

To access the KPN Things APIs you need an API Key. And these API Keys are managed by GRIP, the identify management platform of KPN. Your user account used to access the KPN Things Portal is also managed by GRIP. Learn more about the account you use to access KPN Things.

In GRIP there are API Keys. These are separate entities in a tenant (a customer environment). That means an API Key is not user bound, but it is rather a separate entity.

The access token

Each time you want to access the KPN Things APIs, you need to request an access token from the GRIP API using your API Key. This access token you get is valid for one hour, and can be used as a bearer token to access KPN Things APIs directly.

That means, for each API call you do to KPN Things, you need to add the following Authorization header:

Authorization: Bearer {accessToken}

There is no refresh token. To regain access after your access token has expired, just request another access token through the GRIP API.

You can find more information about the access method we employ here on the Grip Knowledge Base website, linked below. The method is called Machine authentication.

Getting started

This is a step-by-step explanation to find all required information needed for requesting an access token from GRIP.

Value

Description

GRIP Tenant ID

The unique identifier of your GRIP environment.

Application ID

The ID of the service you want to access, being KPN Things. Used as audience in your client credentials request.

For KPN Things it is this: 4dc82561-f65f-523g-dek9-6c79ec314f02

Client ID

The API Key's ID

Client Secret

The API Key's Secret key

1. Find your GRIP Tenant ID in the Things Portal

In the KPN Things Portal, visit the Customer detail page by clicking on your name in the top right and then clicking "Customer Details" in the overflow menu. On the following page, you will find your GRIP Tenant ID.

2. Create your API Key and API Key's Secret in GRIP

It is best practice to create individual API Keys for each instance that will access the KPN Things APIs.

Log into the GRIP Portal as an administrator.

  • If you have a KPN Developer account, you will be an administrator in the GRIP Portal.

  • If you have a MijnKPN Zakelijk account, you should ask your local administrator for access.

Learn more about the account you use to access KPN Things.

2.1. Go to API Key management

To create API Keys, you need to be an administrator in the GRIP Portal.

Then, open the Admin panel using the role drop down (#1 in the screenshot), click on Identity in the side menu (#2 in the screenshot) and click on API keys (#3 in the screenshot). This brings you to the API Key management page. Now, click Add to add a new API Key (#4 in the screenshot).

2.2. Create new API Key

In the following pop-up, give your new API Key a Display name and a Description. Then click Add to create your new API Key.

2.3. Give new API Key access to KPN Things

You need to give your newly created API Key access to the KPN Things service before you can use it. Click on Services and roles (#1 in the screenshot), and click on Add a service (#2 in the screenshot).

A modal will open. Click on the checkbox next to KPN Things (#1 in the screenshot) and hit Add (#2 in the screenshot).

Click on the KPN Things service and select the desired role and access level for your API key:

Then, click Save to finally give your API Key access to KPN Things.

2.4. Fetch credentials of new API Key

Now, when you click back on General information, you will see the ID and Secret key of your new API Key.

Perform Things API calls

Don't want to manually implement the API calls? Use our published Postman collection to quickly generate code snippets for all published API calls!

Request access token through GRIP API

POST https://auth.grip-on-it.com/v2/{tenantId}/oidc/idp/c1/token

With this request, you obtain the access token you use to access the KPN Things API's.

Headers

Name
Type
Description

Content-Type

string

application/json; charset=utf-8

Request Body

Name
Type
Description

grant_type

string

client_credentials

audience

string

The Application ID (see above)

client_id

string

The API Key's ID

client_secret

string

The API Key's Secret key

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600
}

Error

Solution

Feature user does not exist anymore.

You should check your API Key ID or Secret, they may be incorrect.

Feature service does not exist anymore.

You should add the KPN Things Portal service to your API Key through the GRIP Portal.

SAML request error: "idpId" not found.

Your tenantId (which is a path variable) is incorrect.

More information in the GRIP Knowledge Base (documentation).

List devices

GET https://api.kpnthings.com/api/devices

Now you have an access token, execute the following call to list your Devices

Query Parameters

Name
Type
Description

currentPage

number

0

pageSize

number

20

search

string

(case sensitive partial string search)

sortBy

string

name

sortOrder

string

ASC

Headers

Name
Type
Description

Authorization

string

Bearer {accessToken}

Accept

string

application/vnd.kpnthings.device.v1.response+json

{
    "content": [
        {
            "uuid": "xxxxxx",
            "name": "My first own device",
            "description": "",
            "metadata": null,
            "deviceSpecificationUUID": "d2723e99-1fe4-4d60-9b6d-8061f7414b24",
            "barcode": null
        },
        ...
    ],
    "last": true,
    "totalPages": 1,
    "totalElements": 2,
    "sort": [
        {
            "direction": "ASC",
            "property": "name",
            "ignoreCase": false,
            "nullHandling": "NATIVE",
            "ascending": true,
            "descending": false
        }
    ],
    "first": true,
    "numberOfElements": 2,
    "size": 20,
    "number": 0
}

Response codes

Code

Description

🟢 200 OK

Your request was correct.

🟢 201 Created

You created an object with your request.

🟢 204 No Content

Your request was correct, but there is no information to return, for instance after deleting an object.

🟡 302 Found

Your access token is incorrect or does not have access to KPN Things. Please check your API Key in GRIP.

🔴 400 Bad Request

Something in your request is not correctly formatted. For instance your body structure, your accept header or a query parameter.

🔴 403 Forbidden

Your access token is correct, but you do not have the authorization to access that resource.

Send downlink to device

POST https://api.kpnthings.com/api/actuator/downlinks

Body: [{"bn":"urn:dev:DEVEUI:{devEUI}:", "n":"payloadHex", "vs": "{payload}"}]

Query Parameters

Name
Type
Description

externalReference

string

Optional reference for you to choose

port

integer

LoRa FPort to send data on

Headers

Name
Type
Description

Accept

string

application/vnd.kpnthings.actuator.v1.response+json

Content-Type

string

application/json

Full documentation of KPN Things APIs

Currently the APIs of KPN Things are documented using Postman. Postman is an easy to use API development tool.

Postman API Collection

Postman environment variables

To get the Postman collection working, you need to create a Postman environment with the following variables:

Variable

Value

gripBaseUrl

https://auth.grip-on-it.com

tenantId

Your grip tenant id

applicationId

4dc82561-f65f-523g-dek9-6c79ec314f02

keyId

Your key id

keySecret

Your key secret

baseUrl

https://api.kpnthings.com

API access to customer environments as a reseller

When you are a reseller of KPN Things, you can manage the KPN Things environments of your own customers on their behalf using the KPN Things APIs. To do so, you should indicate which API calls are meant to operate within the context of a specific customer by specifying the KPN-Things-Security-Context header:

KPN-Things-Security-Context: client:uuid:{{customerID}}

The value of {{customerID}} is the UUID identifying the customer for whom you intend to manage their KPN Things environment.

When you specify the KPN-Things-Security-Context header, KPN Things will validate the syntax and check that your own account is a reseller of the given {{customerID}}. If either check fails, your API call will be denied. Note that you can specify only a single KPN-Things-Security-Context header for each API call: multiple values are not supported.

💎 Add-on feature

To get started as a reseller and set up environments for customers of your own within KPN Things, you require the Customer Management add-on feature.

⚠️Deprecated: performing API call in sub-customer environment

This API is deprecated: use the KPN-Things-Security-Contextheader instead.

💎 Add-on feature This feature is only available if you have the add-on feature Customer Management.

If you have Customer Management in your account, you can manage Things accounts for your own customers. These customers of you, let's call them sub-customers, have their own customer account in KPN Things. But you have access rights with your API Key to perform actions in their account.

The principle

To perform an API call in a sub-customer environment, there are two requirements:

  1. You should have requested the access rights to the individual sub-customer environment

  2. For all API calls you perform, you should add the following HTTP header:

x-client-id: {{customerID}}

Step 1: Request access rights

This only has to be one once per API Key per sub-customer.

  1. Find the Customer ID from the sub-customer you want to perform an action on. You can use the All Customers page to search in your Customers and then open the Customer details page of the concerning Customer to find its Customer ID.

  2. Perform the Request KPN Things access token through GRIP API call.

  3. Perform the following API call:

⚠️Deprecated: request access rights to a sub-customer

This API is deprecated: use the KPN-Things-Security-Contextheader instead.

GET https://api.kpnthings.com/api/v1/lifecycle/clients/:clientId/context-switch

Path Parameters

Name
Type
Description

clientId

string

Customer ID of your sub-customer

Headers

Name
Type
Description

Content-Type

string

application/json

Accept

string

application/json

Step 2: Perform API call in sub-customer environment

Now you have access rights to the sub-customer environment with your API key. Now you can perform any API call you have the rights for in the sub-customer environment by simply adding the x-client-id header to the API call when you execute it.

SSL certificate information

The SSL server certificates of KPN Things and GRIP are provided by the new PKI Overheid CA hierarchy. On kpn.com you can learn more about the KPN certificates.

If required for your security implementation, all certificate files of the chain can be downloaded here:

  • Root: Staat der Nederlanden EV Root CA

  • Intermediate: Staat der Nederlanden Domein Server CA 2020

  • Intermediate: KPN PKIoverheid Server CA 2020

KPN LocationTag II

KPN LocationTag II

Also known as Security Tag.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-ii

  • Device Specification UUID: 2f16485d-1301-4d11-9fb8-1b74b5a8909f

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

d2593092-bc42-4b84-a053-2301f499bbc4

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

71703178-038d-4ea9-b865-00819fb42417

Add location data to messages that are received by known .

› Decoded payload for Device Management

aec28f98-7e78-4eb9-a314-04f435219bc5

Decoder for Streamline LoRa short payloads, containing firmware version, mode, and battery status.

› Decoded payload for Device Management (v2)

c0d1ea0f-2470-5f88-897c-c1ec25f360d6

Decoder for Streamline LoRa short payloads, containing firmware version, mode, and battery status.

› Decoded payload for Medical Tracker application

9e8b2100-537d-46f8-ab21-4fad11d04bc9

Decoder for Streamline LoRa message type 0xD282 containing only temperature and movement bit.

› Decoded payload for Medical Tracker application (v2)

6a7a4ef4-e7a3-5eab-90ba-6901cf360d08

Decoder for Streamline LoRa message type 0xD282 containing only temperature and movement bit.

Encoders
encoderSpecificationUUID
Description

‹ Encoded device modes for Asset Recovery application

9e2a47a3-a239-4f1f-b14b-f16fa70fe99d

Send device modes for Asset Recovery: Presales (24h interval), Active (2h interval), Missing (5min interval + BLE), or Inactive.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

Expected SenML outputs

name
type/unit
example
description

locOrigin

string

KPNLORA

indicates the origin of the location data

latitude

numeric

51.79

longitude

numeric

4.68

radius

m

319

locAccuracy

%

locPrecision

%

locTime

timestamp

1637165561

Example SenML-message

This location info can be merged with the payload of the device

[
  {
    "bn": "urn:dev:DEVEUI:A41163C212345678:",
    "bt": 1637165561
  },
  {
    "n": "locOrigin",
    "vs": "KPNLORA"
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 51.794884
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.687986
  },
  {
    "n": "radius",
    "u": "m",
    "v": 319.730194
  },
  {
    "n": "locAccuracy",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locPrecision",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locTime",
    "vs": "1637165561192"
  }
]

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

Expected SenML outputs

See above. Output is comparable to LoRa Geolocation data.

› Decoded payload for Device Management

Decoder for Streamline LoRa short payloads, containing firmware version, mode, and battery status.

Expected SenML output attributes

name
type/unit
example
description

mode

string

active

operation modus (production, active, presales, missing)

batteryVoltage

V

3.58

batteryLevelLow

boolean

false

indicates if the battery voltage has been below the threshold

timeOrigin

string

NETWORK

indicates the origin of the timestamp

firmwareVersion

string

firmware info, only sent after device boot

firmwareCRC

string

firmware info, only sent after device boot

settingsCRC

string

settings info, only sent after device boot

Example SenML messages

[
	{
		"n": "mode",
		"u": "enum",
		"bn": "urn:dev:DEVEUI:7CC6C40512345678:",
		"bt": 1678778462,
		"vs": "active"
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 3.58
	},
	{
		"n": "batteryLevelLow",
		"vb": false
	},
	{
		"n": "timeOrigin",
		"u": "enum",
		"vs": "NETWORK"
	}
]

The first 10 messages after boot of a device contain firmware information attributes:

[
	{
		"n": "mode",
		"u": "enum",
		"bn": "urn:dev:DEVEUI:7CC6C40512345678:",
		"bt": 1678864786,
		"vs": "active"
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 3.37
	},
	{
		"n": "batteryLevelLow",
		"vb": false
	},
	{
		"n": "firmwareVersion",
		"vs": "0443"
	},
	{
		"n": "firmwareCRC",
		"vs": "397f"
	},
	{
		"n": "settingsCRC",
		"vs": "a3e5"
	},
	{
		"n": "timeOrigin",
		"u": "enum",
		"vs": "NETWORK"
	}
]

› Decoded payload for Device Management (v2)

Decoder for Streamline LoRa short payloads, containing firmware version, mode, and battery status.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryLevelLow

boolean

false

Indicates if the battery voltage has been below the threshold

batteryVoltage

number

V

firmwareCRC

string

Firmware info, only sent after device boot

firmwareVersion

string

Firmware info, only sent after device boot

mode

string

"active"

Operation modus. Either "production", "active", "presales" or "missing")

settingsCRC

string

Settings info, only sent after device boot

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "mode",
        "vs": "active"
    },
    {
        "n": "batteryLevelLow",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "firmwareVersion",
        "vs": "0443"
    },
    {
        "n": "firmwareCRC",
        "vs": "397F"
    },
    {
        "n": "settingsCRC",
        "vs": "A3E5"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload for Medical Tracker application

Decoder for Streamline LoRa message type 0xD282 containing only temperature and movement bit.

Expected SenML records

name
type
unit

hasMovedSincePreviousTransmission

boolean

/

temperature

number

Cel

› Decoded payload for Medical Tracker application (v2)

Decoder for Streamline LoRa message type 0xD282 containing only temperature and movement bit.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

hasMovedSincePreviousTransmission

boolean

true

temperature

number

Cel

18.875

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1633896968.04,
        "n": "temperature",
        "u": "Cel",
        "v": 18.875
    },
    {
        "n": "hasMovedSincePreviousTransmission",
        "vb": true
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

‹ Encoded device modes for Asset Recovery application

  • Protocol: LoRa downlink

  • Description: Send device modes for Asset Recovery: Presales (24h interval), Active (2h interval), Missing (5min interval + BLE), or Inactive.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: mode

    • Value: Presales (translates into → 150098078051010080510115013F01001501FB018016)

    • Value: Active (translates into → 15009807201C0000201C0015013F01001501FB014016)

    • Value: Missing (translates into → 15009807F0000000F0000015013907000000000000001501FB01C1150402010115040E010015042C02050516)

    • Value: Inactive (translates into → 14009808FFFFFFFFFFFFFFFF110000000001000000)

Logo
Grip
LoRa Geolocation
LoRa On Premise Gateways

Devices

A Device represents a single physical device that can send data to the platform. You can find all your devices when clicking Devices in the menu.

Devices page

On the Device page, you have an overview of all your Devices.

Elements on the page are:

  1. Total number of Devices you have and see on the current page.

  2. Device list of all your Devices with some information:

    1. The Device name.

    2. The Device type.

    3. The primary identifier of your Device.

      • For LoRa this is the DevEUI

      • For M2M the IMEI

      • For internet the DvnUUID

    4. The moment Things last received a message from the Device.

    5. The Project the Device belongs to.

    6. The number of Flows your Device is in. Hover over the number to get a popup with a list of Flow names.

    7. Clicking on a row will open the of that Device.

  3. Search element to search for your specific Devices. You can search by Name and Primary identifier.

  4. Link to Add a new Device.

  5. Bulk manipulation options. Select some or all Devices and choose the bulk action from the action bar at the bottom of the page.

  6. Sorting options, by clicking on a specific table header the table will sorted by the selected value.

  7. A lock 🔒 icon for KPN Things devices. For such devices fewer editing options are available. See for a comparison of what you can do with KPN Things devices and Supported devices.

Deactivate or delete Device

The most important difference is that: Device deactivation can be used temporarily and is necessary when you want stop data from devices being send to devices. As an example: a customer has not paid his invoice and in response this customer receives no data. Deletion is permanent. After the deletion, you can't onboard this device again. You can delete the device via the Bulk manipulation options. KPN Things devices can only be deleted by KPN. Contact thefor this.

In the table below you can read about the differences between deleting a Device and deactivating a Device.

Device detail page

This page offers you all detailed information about your Device and its connectivity.

The elements on this page are:

  1. General

  2. Connectivity information card for your Device, depending on your network type:

    1. for devices with LoRa connectivity.

    2. for devices with M2M connectivity.

    3. for devices with Internet connectivity.

  3. tab showing you more details about the Connectivity configuration of your Device.

    1. tab for devices with LoRa connectivity.

    2. tab for devices with M2M connectivity.

  4. tab showing you the Digital twin of your Device.

  5. showing you more details about your Device.

  6. allowing you to send data to your Device.

  7. Connectivity data tabshowing you detailed data history to and from your Device.

    1. tab for devices with LoRa connectivity.

    2. M2M data tab for devices with M2M connectivity.

  8. tab showing you detailed information about the Flows your Device is linked to.

  9. A button to your Device. This will completely remove your Device from KPN Things! (Not available for KPN Things devices).

Device information card

The Device information card contains general information about your Device:

  1. The name of your Device.

  2. The Device type.

  3. The of your Device, which you may be able to update.

  4. The Flows linked to your Device.

Clicking on the Device name or Device type will open the with more information about your Device.

LoRa information card (only for devices with LoRa connectivity)

The LoRa information card contains more LoRa specific information of your Device.

  1. The DevEUI of your Device.

  2. The .

  3. The moment KPN Things last received data from your Device.

Clicking on the DevEUI or the Type = LoRa part of the card will open the with all LoRa specific information of your Device.

M2M information card (only for devices with M2M connectivity)

The M2M information card contains more M2M specific information of your Device.

  1. The IMEI of your Device.

  2. The ICCID of the SIM card linked to your Device.

  3. The MSISDN of the subscription linked to the SIM card in your Device.

  4. The with the possibility to change its value.

  5. The moment KPN Things last received data from your Device.

  6. The moment your SIM card has been activated.

  7. The rate plan of the subscription linked to your SIM card.

  8. Button to unlink the current SIM card from your Device. (Not available for KPN (managed) devices).

Clicking on the IMEI or the white part of the card will open the with all M2M specific information of your Device.

Internet information card (only for devices with Internet connectivity)

The Internet information card contains more Internet specific information of your Device.

  1. The SenML base name

  2. The .

  3. The moment KPN Things last received data from your Device.

Clicking on the base name or the white part of the card will open the Internet tab with all Internet specific information of your Device.

"LoRa data" tab (only for devices with LoRa connectivity)

LoRa data history will show you all data and mac traffic sent to and from your Device up to one month ago. Learn more about .

"Send instruction" tab

Currently you can only send data to your Device if your Device is linked to at least one Flow!

On this tab you can send data or instructions to your Device, and you can see the status of requested data/instructions. Data to LoRa devices is also called a downlink.

Depending on your device type, different ways of sending data/instructions to your Device will be available. These could be:

  1. - for own LoRa devices and supported LoRa devices.

  2. - for any Things M2M or Internet device.

  3. - for KPN devices. Learn more about .

  4. - for devices that do not support downlink communication.

To see which methods are available for your device type, you can check the .

1. Raw LoRa data

Some Device types allow you to send raw LoRa data to your Device. To do this, you need to enter two values in the form as shown below:

  • FPort - the LoRa application port you want to send the data on.

  • Payload - the data you want to send to your Device in hexadecimal characters.

2. Raw SenML

Things M2M devices and Internet devices can communicate with SenML. So downlinks to these devices should also be SenML.

The input form in the Portal should be filled in with a valid SenML measurement list formatted as JSON. . The entered SenML measurement list does not have to contain base values, KPN Things will add those before sending the downlink to the Device.

3. Predefined commands

For KPN Devices we provide a predefined list of human readable commands that you can send to the Device. Simply select the desired command to send by clicking on the radio button (if multiple commands are available), select the desired value for the command from the drop down, and click submit.

4. No downlink available

If downlink is not available for your Device, you will see the following:

If your Device is not yet linked to a Flow, doing this could enable Downlink for your device. A Flow is required to enable an encoder that is required for downlink communication. Learn more about .

Downlink status

Often data or an instruction sent to your Device is not received immediately. Often the Device is in sleep mode and will be able to receive the data when it wakes up again. So to monitor the status of the requested data/instructions to your Device, you can check the downlink status table on this tab.

There are five downlink statuses, illustrated in the diagram below and further explained in the table below.

More information on sending data to your Device can be found in the .

"Device" tab

This tab shows you detailed information about your Device configuration:

  • Network info - The information required to register the Device to the correct network.

  • Device type - What type of Device it is.

  • Description (optional) - More information about your Device.

  • Barcode (optional) - The serial number of other code that is visible on the outside of the Device.

  • Name - A descriptive name of the Device.

"LoRa" tab (only for devices with LoRa connectivity)

You can read more about the information that you can find on this tab.

Register on Network

If your LoRa Device is not yet registered on the LoRa network, you can click Register Device on Network here. This will open a modal for you to enter the LoRa network information for this Device.

"M2M" tab (only for devices with M2M connectivity)

The M2M tab shows you detailed information about your M2M connectivity. You can read more about the you can find on this tab.

Additionally, you can perform some M2M specific actions:

2. Edit M2M Device Configuration - allows you to generate a new shared secret for your M2M device. 3. Switch SIM card - allows you to administratively switch the SIM card of your M2M device. 4. Unlink SIM card- allows you to administratively remove the SIM card from your M2M device.

Link connectivity (only available when M2M device is not yet linked to a SIM card)

If your M2M Device is not linked to a SIM card, you can click Link Connectivity here. This will open a new page to allow you to link your Device to a SIM card. The steps you take for this action are the same as for .

"Flows" tab

In the Flows tab you can see:

  1. A list of all the Flows your Device is linked to and the Project this Flow is in.

  2. You can click on a Flow to open it.

  3. You can click on Unlink from this Flow to remove the Device from that Flow.

  4. Also you can add your Device to another Flow.

Flow warning labels

If there is a possible issue with one of the Flows your Device is in, a warning icon is shown on the Flow tab link and in the row of the concerning Flow. By clicking on the warning icon of a Flow, you will continue to the Flow detail page displaying more information about the warning.

Link Device to Flow

After you click on Link to another Flow in the Flows tab, a modal will open.

In this modal you can:

  1. Select the Project to which you want to add the Device, if you have more than 1 Project.

  2. Select the Flow to which to link your Device.

  3. Optionally create a new Flow to which to link your Device.

Processing status

Each Device in KPN Things will have a processing status. This will tell you whether data from and to that Device will be processed by KPN Things.

Status
Description

Network info

To connect a Device to KPN Things it needs either to be registered to our LoRa or M2M network, or it needs to be an Internet-connected device running our SDKs or other KPN Things compatible software.

Separate pages will explain more about the supported network types:

Connectivity status

KPN LocationTag III v4

Tag for localization and movement monitoring.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii-v4

  • Device Specification UUID: c6b5168d-5a57-49bb-adcf-d76417572229

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

Add data to messages where location could be calculated.

KPN LocationTag III v4 hex based decoder (v2)

Decoder for KPN LocationTag III v4 LoRa payload.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› KPN LocationTag III v4 hex based decoder

KPN LocationTag III v4 hex based decoder

Expected SenML records

name
type
unit

+ LoRa Geolocation data

931c53d7-8e79-4d32-b598-da8882c13d06

Add LoRa Geolocation data to messages where location could be calculated.

KPN LocationTag III v4 hex based decoder (v2)

a0039c42-f7b1-50a7-8c15-4f80cafe40fe

Decoder for KPN LocationTag III v4 LoRa payload.

› KPN LocationTag III v4 hex based decoder

a7bc11f3-7383-4403-951a-35176ea9bc51

KPN LocationTag III v4 hex based decoder

alarmMode

boolean

batteryVoltage

number

V

detectedBeacon

string

dvLat

number

lat

dvLon

number

lon

dvTime

number

s

monitionTime-H

number

s

monitionTime-L

number

s

monitionTime-M

number

s

movementIndication

string

timeOrigin

string

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "dvTime",
        "u": "s",
        "v": 1702620097
    },
    {
        "n": "dvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "dvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.03
    },
    {
        "n": "detectedBeacon",
        "vs": "0000"
    },
    {
        "n": "monitionTime-H",
        "u": "s",
        "v": 3932160
    },
    {
        "n": "monitionTime-M",
        "u": "s",
        "v": 1075200
    },
    {
        "n": "monitionTime-L",
        "u": "s",
        "v": 13440
    },
    {
        "n": "alarmMode",
        "vb": false
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

alarmMode

boolean

batteryVoltage

number

V

detectedBeacon

string

dvLat

number

lat

dvLon

number

lon

dvTime

number

s

monitionTime-H

number

s

monitionTime-L

number

s

monitionTime-M

number

s

movementIndication

string

enum

LoRa Geolocation
Geolocation and Local Gateway
Understanding and Interpreting SenML Data

Deactivate Device

Delete Device

Why use it?

Temporarily disable data from Device. (example: disable data for sub customers)

The device is end of life and should be tossed out.

Can customers do it themselves?

Yes, in bulk and for individual devices.

No

Is it permanent?

No, you can easily Activate the Device again in the Portal in bulk and individually.

Yes, the Device is removed from all KPN systems. You can not use this the device again.

Does it influence billing?

No, remove from Flow to have it stop being counted (applicable to Modular customers, E2E customers are being billed by information in C8Y)

Yes, because it is also removed from the Flow.

Impact on battery if Device is still turned on

Connection between Device and Network is not changed, so the Device continues operating as normal.

Network registration of Device is removed. Depending on how the Device is programmed it may continue operating as normal, but it will probably change to a more energy consuming mode because the device will (uselessly) try to reconnect to the Network.

Can you check the operation afterwards?

Yes, because the Device object still exists, only has the attribute "STATUS" changed to "Deactivated". But once the Device is reactivated, you cannot see when it has been deactivated.

No, the Device is completely removed from all systems.

[{"n":"door","v":1}]
[{"n":"door","v":1},{"n":"mode","vs":"quiet"}]

Status

Description

Pending

When a downlink is requested on the Actuator API the command will get the status Pending. This means the downlink is accepted by Things and will be processed shortly. If there is another downlink of the device already in Executing, the downlink will stay in Pending until the other downlink reaches a final status. Downlinks will be processed by KPN Things in order of request date, so FIFO.

After the previous downlink has been finalized, it can take up to an hour or so for the next pending downlink to be taken into execution. We are working on it to shorten this period.

Cancelled

Pending downlinks can be cancelled. Since a pending downlink is not yet being processed by network systems, KPN Things can safely remove the downlink from its queue. Cancelled downlinks will not be processed any further and will get the final status Cancelled.

It is not possible to cancel a downlink that is in Executing, since we cannot guarantee the withdrawal of a downlink request that is already being executed by the network system.

Executing

When there is at least one downlink in the queue for a device, so with status Pending, it will be processed further by the system. It will then be de-normalized and sent to the device. During de-normalization, sending and waiting for feedback on delivery, the downlink is in Executing.

Only one downlink per device can be in Executing.

Failed

When KPN Things does not receive acknowledgement of the successful delivery of the downlink, or if KPN Things receives a timeout on sending the downlink, the downlink will get the final state Failed.

Delivered

When the delivery of the downlink is acknowledged by the device, the downlink will be set on final state Delivered.

🟢 Active

Data coming from and going to your Device will be processed.

⚫ Deactivated

Data coming from your Device will not be processed or forwarded by KPN Things. Also downlinks will not be sent to your Device. Data history will still be available, since Things will still accept data from your Device. The network connection is not denied.

⚫ Not yet linked

Your Device is not connected to a Flow, so data will not be processed in KPN Things.

Status

Description

⚪ Not yet linked to a network

Your Device is added to KPN Things, but Network information is still missing in able to register your Device to the network.

🔵 Pending create

Your Device is being registered to the network.

🟢 Active

Your Device or SIM card is registered to the network and should be able to join and send data.

⚫ Deactivated

Your Device or SIM card is registered to the network, but labeled as Inactive, meaning incoming connections will not be accepted.

🔴 Failed

The Device could not be registered to the network. Probably the Network info you entered to register your Device was incorrect or already in use.

⚫ Inventory

Your Device and its Network information is known in the system but not yet registered to the network. If you want you can activate the network registration on the Device detail page.

Device detail page
Device types
IoT Service desk
Device information card
LoRa information card
M2M information card
Internet information card
Connectivity info
LoRa
M2M
Device Twin
Device tab
Send Instruction tab
LoRa data
Flows
delete
processing status
Device tab
connectivity status
LoRa tab
connectivity status
M2M tab
connectivity status
LoRa data history
Raw LoRa data
Raw SenML
Predefined commands
KPN Things Devices
No downlink available
available encoders for your device type
Learn more about SenML
downlink communication
Send instruction to LoRa Device
LoRa Connectivity
M2M Connectivity
linking your SIM card to a Device
LoRa
M2M
Internet
Available information and actions on Flow tab
Flow warning

KPN LocationTag VI

A 2G/LTE-M device with GPS. Also (wrongly) known as Streamline M2M or Streamline SIM.

  • Supported network type(s): KPNSTREAMLINEM2M

  • Device Specification ID: kpn-locationtag-vi

  • Device Specification UUID: 6deea70f-ed48-4a87-be99-86fb34570fa7

Decoders
decoderSpecificationUUID
Description

› Decoded Streamline M2M data for Asset Recovery application

Decoder outputting device mode specific for Asset Recovery application.

Expected SenML records

name
type
unit

› Decoded Streamline M2M data for Asset Recovery application (v2)

Decoder outputting device mode specific for Asset Recovery application.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded Streamline M2M raw switch, eventID and IO data

Decoder outputting raw switch, eventID and IO data

Expected SenML records

name
type
unit

› Decoded Streamline M2M raw switch, eventID and IO data (v2)

Decoder outputting raw switch, eventID and IO data

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded Streamline M2M data for Asset Recovery application

4e93e1d7-8c7e-4f88-9372-68df3c80e759

Decoder outputting device mode specific for Asset Recovery application.

› Decoded Streamline M2M data for Asset Recovery application (v2)

930f66e9-9e37-5c56-8ebd-0b83553f8cea

Decoder outputting device mode specific for Asset Recovery application.

› Decoded Streamline M2M raw switch, eventID and IO data

deea1a29-946c-4f19-bac8-014c7d823394

Decoder outputting raw switch, eventID and IO data

› Decoded Streamline M2M raw switch, eventID and IO data (v2)

1241bf4d-b34b-5b15-92e9-8602aee00ee3

Decoder outputting raw switch, eventID and IO data

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

altitude

number

m

altitudeMargin

number

m

batteryVoltage

number

V

firmwareVersion

string

string

gpsTime

number

s

gsmNetworkId

string

string

heading

number

rad

latitude

number

lat

longitude

number

lon

phoneNumber

string

string

radius

number

m

status

string

enum

temperature

number

Cel

velocity

number

m/s

batteryVoltage

number

V

3.59

firmwareVersion

string

"474"

gpsTime

number

s

1702370090.24

heading

number

rad

0.7148868616168774

latitude

number

lat

51.90717

longitude

number

lon

4.48940

radius

number

m

status

string

temperature

number

Cel

18.875

velocity

number

m/s

[
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.8,
        "bn": "urn:dev:IMEI:999999999000090:",
        "bt": 1664818024.4
    },
    {
        "n": "firmwareVersion",
        "vs": "723"
    },
    {
        "n": "gpsTime",
        "u": "s",
        "v": 1702370090.24
    },
    {
        "n": "status",
        "vs": "UNDEFINED"
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -60
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.62,
        "bn": "urn:dev:IMEI:999999999000090:",
        "bt": 1664810824.4
    },
    {
        "n": "firmwareVersion",
        "vs": "474"
    },
    {
        "n": "gpsTime",
        "u": "s",
        "v": 1664810842.4
    },
    {
        "n": "heading",
        "u": "rad",
        "v": 0.7148868616168774
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "radius",
        "u": "m",
        "v": 0
    },
    {
        "n": "status",
        "vs": "UNDEFINED"
    },
    {
        "n": "velocity",
        "u": "m/s",
        "v": 0
    }
]

EventDesc

string

string

EventID

string

string

IO

string

string

Switch

string

string

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

altitude

number

m

altitudeMargin

number

m

batteryVoltage

number

V

firmwareVersion

string

string

gpsTime

number

s

gsmNetworkId

string

string

heading

number

rad

latitude

number

lat

longitude

number

lon

phoneNumber

string

string

radius

number

m

status

string

enum

temperature

number

Cel

velocity

number

m/s

altitude

number

m

64

batteryVoltage

number

V

13.18

EventDesc

string

"Changed direction"

EventID

string

"43"

firmwareVersion

string

"358"

gpsTime

number

s

1948836932.48

heading

number

rad

5.629734035232909

IO

string

"85"

latitude

number

lat

48.87411

longitude

number

lon

2.29549

radius

number

m

3.3

status

string

"PRESALES"

Switch

string

"0"

temperature

number

Cel

29.5

velocity

number

m/s

0.16666666666666666

[
    {
        "bn": "urn:dev:IMEI:999999999000090:",
        "bt": 1664818024.4,
        "n": "altitude",
        "u": "m",
        "v": 64
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 13.18
    },
    {
        "n": "EventDesc",
        "vs": "Changed direction"
    },
    {
        "n": "EventID",
        "vs": "43"
    },
    {
        "n": "firmwareVersion",
        "vs": "358"
    },
    {
        "n": "gpsTime",
        "u": "s",
        "v": 1948836932.48
    },
    {
        "n": "heading",
        "u": "rad",
        "v": 5.629734035232909
    },
    {
        "n": "IO",
        "vs": "85"
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 48.87411
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 2.29549
    },
    {
        "n": "radius",
        "u": "m",
        "v": 3.3
    },
    {
        "n": "status",
        "vs": "PRESALES"
    },
    {
        "n": "Switch",
        "vs": "0"
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 29.5
    },
    {
        "n": "velocity",
        "u": "m/s",
        "v": 0.16666666666666666
    }
]
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
KPN LocationTag VI
KPN Grip | Identity management by KPN
https://www.getpostman.com/collections/46072fa86a8844c3d63ewww.getpostman.com

KPN LocationTag III v3

Tag for localization and movement monitoring.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii-v3

  • Device Specification UUID: e1befe2e-db63-4c11-8c45-5c838458284e

Decoders
decoderSpecificationUUID
Description

= Raw LoRa payload Extended

f30205ed-e963-4075-aa7f-7d45224421a6

Forward the raw LoRa payload and lora network metadata without decoding.

= Raw LoRa payload Extended (v2)

91c498bd-9f93-5b39-a445-c01852bc7ab8

Forward the raw LoRa payload and lora network metadata without decoding.

KPN LocationTag III v3 hex based decoder (v2)

4a64b4d7-8c4e-5a7e-b8ff-4c204f3439d8

Decoder for KPN LocationTag III v3 LoRa payload.

› KPN LocationTag III v3 hex based decoder

855f9069-72e2-4699-99a3-45326ddc7346

KPN LocationTag III v3 hex based decoder

› KPN LocationTag III v3 hex based decoder incl network info

acffafdc-dbb0-41f8-8338-f829e6ebece6

KPN LocationTag III v3 hex based decoder including network info

› KPN LocationTag III v3 hex based decoder incl network info (v2)

e9aecfcb-2d6f-51d9-9f5a-0f71f50583ca

Decodes fields from a KPN LocationTag III v3 LoRa payload and adds a subset of the LoRa metadata.

= Raw LoRa payload Extended

Forward the raw LoRa payload and lora network metadata without decoding.

Expected SenML records

name
type
unit

ADRbit

number

Channel

string

DevLrrCnt

number

FCntDn

number

FCntUp

number

LrrESP

string

LrrRSSI

string

LrrSNR

string

SpFact

number

SubBand

string

payload

string

port

number

Raw LoRa payload Extended (v2)

Forward the raw LoRa payload and lora network metadata without decoding.

Fixes from '= Raw LoRa payload Extended':

  • LrrRSSI is changed to a number.

  • LrrSNR is changed to a number.

  • LrrESP is changed to a number.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

ADRbit

number

0

Adaptive Data Rate indicator

Channel

string

LC255

Lora channel of the transmission

DevLrrCnt

number

0

Amount of gateways that received the message

FCntDn

number

21725

The downlink framecounter

FCntUp

number

30117

The uplink framecounter

LrrRSSI

number

0

Received Signal Strength Indicator

LrrSNR

number

0

Signal to Noise Ratio

payload

string

"4D985C495AC4D8C9682CFD"

raw hex payload string

port

number

1

LoRa port used

SpFact

number

9

Spreading factor used

SubBand

string

"G0"

Lora band of the transmission

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "8ca683bd93124178afc5ff"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "FCntUp",
        "v": 30117
    },
    {
        "n": "FCntDn",
        "v": 21725
    },
    {
        "n": "LrrRSSI",
        "v": 0
    },
    {
        "n": "LrrSNR",
        "v": 0
    },
    {
        "n": "DevLrrCnt",
        "v": 0
    },
    {
        "n": "SpFact",
        "v": 9
    },
    {
        "n": "SubBand",
        "vs": "G0"
    },
    {
        "n": "Channel",
        "vs": "LC255"
    },
    {
        "n": "ADRbit",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

KPN LocationTag III v3 hex based decoder (v2)

Decoder for KPN LocationTag III v3 LoRa payload.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

detectedBeacon

string

deviceTime

number

s

latitude

number

lat

longitude

number

lon

movementIndication

string

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "deviceTime",
        "u": "s",
        "v": 1702535002
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 2.8
    },
    {
        "n": "detectedBeacon",
        "vs": "4327"
    },
    {
        "n": "movementIndication",
        "vs": "START"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› KPN LocationTag III v3 hex based decoder

KPN LocationTag III v3 hex based decoder

Expected SenML records

name
type
unit

batteryVoltage

number

V

detectedBeacon

string

deviceTime

number

s

latitude

number

lat

longitude

number

lon

movementIndication

string

enum

› KPN LocationTag III v3 hex based decoder incl network info

KPN LocationTag III v3 hex based decoder including network info

Expected SenML records

name
type
unit

ADRbit

number

Channel

string

DevLrrCnt

number

FCntDn

number

FCntUp

number

LrrESP

string

LrrRSSI

string

LrrSNR

string

SpFact

number

SubBand

string

batteryVoltage

number

V

batteryVoltageBeacon

number

V

detectedBeacon

number

deviceTime

number

s

latitude

number

lat

longitude

number

lon

movementIndication

string

enum

payload

string

port

number

› KPN LocationTag III v3 hex based decoder incl network info (v2)

Decodes fields from a KPN LocationTag III v3 LoRa payload and adds a subset of the LoRa metadata.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

ADRbit

number

0

batteryVoltage

number

V

2.8

Channel

string

"LC255"

detectedBeacon

string

"4327"

deviceTime

number

s

1702535002

DevLrrCnt

number

0

FCntDn

number

21725

FCntUp

number

30117

latitude

number

lat

52.456925

longitude

number

lon

4.660143

LrrESP

string

"0"

LrrRSSI

string

"0"

LrrSNR

string

"0"

movementIndication

string

"STOP"

Indicates the devices movement status. Either "STOP, "STATIONARY", "START" or "MOVING"

payload

string

"d28219937e17002aaa4101e04269000313f943274170003a0100358e260429daaafe21"

port

number

1

SpFact

number

9

SubBand

string

"G0"

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "d28219937e17002aaa4101e04269000313f943274170003a0100358e260429daaafe21"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "FCntUp",
        "v": 30117
    },
    {
        "n": "FCntDn",
        "v": 21725
    },
    {
        "n": "LrrRSSI",
        "vs": "0"
    },
    {
        "n": "LrrSNR",
        "vs": "0"
    },
    {
        "n": "LrrESP",
        "vs": "0"
    },
    {
        "n": "DevLrrCnt",
        "v": 0
    },
    {
        "n": "SpFact",
        "v": 9
    },
    {
        "n": "SubBand",
        "vs": "G0"
    },
    {
        "n": "Channel",
        "vs": "LC255"
    },
    {
        "n": "ADRbit",
        "v": 0
    },
    {
        "n": "deviceTime",
        "u": "s",
        "v": 1702535002
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.660143
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 52.456925
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 2.8
    },
    {
        "n": "detectedBeacon",
        "vs": "4327"
    },
    {
        "n": "movementIndication",
        "vs": "START"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

KPN LocationTag III v2 Buffer

Tag for localization and movement monitoring. Revision of KPN LocationTag III v2. Added functionality: Message buffer

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii-v2-buffer

  • Device Specification UUID: 090b3aba-6358-4d24-a259-9fec528666e9

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

53af996e-479c-4d9b-9847-c5e0ba3d6a1a

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

1b6629a0-16f9-4f16-8982-6f41f4ea5653

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking application

0ef8626c-8f79-4c37-954e-70dafc2790e3

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

› Decoded payload for Asset Tracking application (v2)

2d5e4b98-0218-5edd-9702-2598703b9d62

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

› Decoded payload with motion indication

9783ae8d-67a1-4e25-8e59-e543e122dcd9

Decoder for Streamline LoRa devices configured with motion indicator configuration.

› Decoded payload with motion indication (v2)

c7fcd312-dc6d-5adc-b1ee-f1da2c3c4612

Decoder for Streamline LoRa devices configured with motion indicator configuration.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

› Decoded payload for Asset Tracking application

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

Expected SenML records

name
type
unit

AccX

number

m/s2

AccY

number

m/s2

AccZ

number

m/s2

CompX

number

T

CompY

number

T

CompZ

number

T

DvLat

number

lat

DvLon

number

lon

Heading

number

rad

Io31

boolean

IoButt

boolean

IoMot

boolean

IoRxd

boolean

Speed

number

m/s

Temp

number

Cel

VBat

number

V

› Decoded payload for Asset Tracking application (v2)

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

devEui

string

Not present in detail level 1 messages

DvLat

number

lat

Latitude

DvLon

number

lon

Longitude

firmwareCRC

string

Not present in detail level 1 messages

firmwareVersion

string

Not present in detail level 1 messages

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

gpsModuleActive

boolean

true

Not present in detail level 1 messages

nfcScanned

boolean

true

nfcState

string

Not present in detail level 1 messages

nrOfLoraTransmissions

number

Not present in detail level 1 messages

orientationX

number

Not present in detail level 1 messages

orientationY

number

Not present in detail level 1 messages

powerupTime

number

min

Not present in detail level 1 messages

rotationCount

number

rotationLeft

number

Not present in detail level 1 messages

rotationRight

number

Not present in detail level 1 messages

settingsCRC

string

Not present in detail level 1 messages

status

string

Not present in detail level 1 messages

temperature

number

Cel

18.334

transmissionTime

number

s

Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": true
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 154
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "cdab"
    },
    {
        "n": "firmwareCRC",
        "vs": "2143"
    },
    {
        "n": "settingsCRC",
        "vs": "7698"
    },
    {
        "n": "gpsModuleActive",
        "vb": true
    },
    {
        "n": "nfcState",
        "vs": "NFC_OFF"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 872379
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 238792
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 55
    },
    {
        "n": "devEui",
        "vs": "babcdef012"
    },
    {
        "n": "rotationLeft",
        "v": 3407873
    },
    {
        "n": "rotationRight",
        "v": 1507507
    },
    {
        "n": "orientationX",
        "v": 122
    },
    {
        "n": "orientationY",
        "v": 12
    },
    {
        "n": "status",
        "vs": "9a"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload with motion indication

Decoder for Streamline LoRa devices configured with motion indicator configuration.

Expected SenML records

name
type
unit

AccX

number

m/s2

AccY

number

m/s2

AccZ

number

m/s2

CompX

number

T

CompY

number

T

CompZ

number

T

DvLat

number

lat

DvLon

number

lon

GpsFix

string

Heading

number

rad

Io31

boolean

IoButt

boolean

IoMot

boolean

IoRxd

boolean

Speed

number

m/s

Temp

number

Cel

VBat

number

V

movementIndication

string

› Decoded payload with motion indication (v2)

Decoder for Streamline LoRa devices configured with motion indicator configuration.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

AccX

number

m/s2

-1.3

Measured acceleration in the X-axis

AccY

number

m/s2

-0.5

Measured acceleration in the Y-axis

AccZ

number

m/s2

3.0

Measured acceleration in the Z-axis

CompX

number

T

0.0000010

Measured compass orientation in the X-axis

CompY

number

T

-0.001507

Measured compass orientation in the Y-axis

CompZ

number

T

-0.002638

Measured compass orientation in the Z-axis

DvLat

number

lat

51.90717

Latitude

DvLon

number

lon

4.48940

Longitude

GpsFix

string

"RECENT"

Either "RECENT" or "OUTDATED"

Heading

number

rad

3.316

Io31

number

1.0

arbitrary bit

IoButt

number

1.0

whether the Device's button was pressed

IoMot

number

1.0

whether the Device is in motion

IoRxd

number

1.0

Device's external digital i/o value

movementIndication

string

"STATIONARY"

Either "STATIONARY", "STOP", "START" or "MOVING"

Speed

number

m/s

4.12

Temp

string

Cel

7.0

Temperature

VBat

number

V

3.59

Battery voltage

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1701882708.84,
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "Speed",
        "u": "m/s",
        "v": 4.12
    },
    {
        "n": "Heading",
        "u": "rad",
        "v": -3.944
    },
    {
        "n": "IoButt",
        "v": 1.0
    },
    {
        "n": "IoRxd",
        "v": 1.0
    },
    {
        "n": "IoMot",
        "v": 0.0
    },
    {
        "n": "Io31",
        "v": 0.0
    },
    {
        "n": "AccX",
        "u": "m/s2",
        "v": 9.5002
    },
    {
        "n": "AccY",
        "u": "m/s2",
        "v": 0.7661
    },
    {
        "n": "AccZ",
        "u": "m/s2",
        "v": 0.1532
    },
    {
        "n": "CompX",
        "u": "T",
        "v": 0.0000010
    },
    {
        "n": "CompY",
        "u": "T",
        "v": -0.001507
    },
    {
        "n": "CompZ",
        "u": "T",
        "v": -0.002638
    },
    {
        "n": "Temp",
        "u": "Cel",
        "v": 7.0
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "GpsFix",
        "vs": "RECENT"
    },
    {
        "n": "VBat",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

KPN LocationTag III (with GPS)

Also known as StreamLineTM-2000/P1A3, with GPS.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii-gps

  • Device Specification UUID: ea870061-8094-4d32-9c14-fd9597780f18

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

+ LoRa Geolocation data

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking application

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

Expected SenML records

name
type
unit

› Decoded payload for Asset Tracking application (v2)

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded payload with motion indication

Decoder for Streamline LoRa devices configured with motion indicator configuration.

Expected SenML records

name
type
unit

› Decoded payload with motion indication (v2)

Decoder for Streamline LoRa devices configured with motion indicator configuration.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

‹ Encoded device send interval

  • Protocol: LoRa downlink

  • Description: Change the send interval of your Device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: interval

    • Value: 2h (translates into → 1500b402201c1500b802201c16)

LoRa Geolocation
LoRa On Premise Gateways

+ LoRa Geolocation data

7117d639-c7b0-4d43-ad83-65366dd254b5

Add LoRa Geolocation data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

659631d5-ec8b-4d87-8862-5811259b6ebe

Add location data to messages that are received by known LoRa On Premise Gateways.

› Decoded payload for Asset Tracking application

d0961ee4-919f-4427-9fad-fee7344725a3

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

› Decoded payload for Asset Tracking application (v2)

5ae5fff6-cda5-5612-b7e6-67114e3d885d

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

› Decoded payload with motion indication

a6e4ae85-a654-4161-803b-b14eff80b45e

Decoder for Streamline LoRa devices configured with motion indicator configuration.

› Decoded payload with motion indication (v2)

cece0231-ee60-5d1a-8634-d150a066d4bf

Decoder for Streamline LoRa devices configured with motion indicator configuration.

‹ Encoded device send interval

47d0c6e4-9cdd-42a9-b6a5-4800e578fd5c

Change the send interval of your Device.

AccX

number

m/s2

AccY

number

m/s2

AccZ

number

m/s2

CompX

number

T

CompY

number

T

CompZ

number

T

DvLat

number

lat

DvLon

number

lon

Heading

number

rad

Io31

boolean

IoButt

boolean

IoMot

boolean

IoRxd

boolean

Speed

number

m/s

Temp

number

Cel

VBat

number

V

batteryVoltage

number

V

devEui

string

Not present in detail level 1 messages

DvLat

number

lat

Latitude

DvLon

number

lon

Longitude

firmwareCRC

string

Not present in detail level 1 messages

firmwareVersion

string

Not present in detail level 1 messages

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

gpsModuleActive

boolean

true

Not present in detail level 1 messages

nfcScanned

boolean

true

nfcState

string

Not present in detail level 1 messages

nrOfLoraTransmissions

number

Not present in detail level 1 messages

orientationX

number

Not present in detail level 1 messages

orientationY

number

Not present in detail level 1 messages

powerupTime

number

min

Not present in detail level 1 messages

rotationCount

number

rotationLeft

number

Not present in detail level 1 messages

rotationRight

number

Not present in detail level 1 messages

settingsCRC

string

Not present in detail level 1 messages

status

string

Not present in detail level 1 messages

temperature

number

Cel

18.334

transmissionTime

number

s

Not present in detail level 1 messages

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": true
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 154
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "cdab"
    },
    {
        "n": "firmwareCRC",
        "vs": "2143"
    },
    {
        "n": "settingsCRC",
        "vs": "7698"
    },
    {
        "n": "gpsModuleActive",
        "vb": true
    },
    {
        "n": "nfcState",
        "vs": "NFC_OFF"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 872379
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 238792
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 55
    },
    {
        "n": "devEui",
        "vs": "babcdef012"
    },
    {
        "n": "rotationLeft",
        "v": 3407873
    },
    {
        "n": "rotationRight",
        "v": 1507507
    },
    {
        "n": "orientationX",
        "v": 122
    },
    {
        "n": "orientationY",
        "v": 12
    },
    {
        "n": "status",
        "vs": "9a"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

AccX

number

m/s2

AccY

number

m/s2

AccZ

number

m/s2

CompX

number

T

CompY

number

T

CompZ

number

T

DvLat

number

lat

DvLon

number

lon

GpsFix

string

Heading

number

rad

Io31

boolean

IoButt

boolean

IoMot

boolean

IoRxd

boolean

Speed

number

m/s

Temp

number

Cel

VBat

number

V

movementIndication

string

AccX

number

m/s2

-1.3

Measured acceleration in the X-axis

AccY

number

m/s2

-0.5

Measured acceleration in the Y-axis

AccZ

number

m/s2

3.0

Measured acceleration in the Z-axis

CompX

number

T

0.0000010

Measured compass orientation in the X-axis

CompY

number

T

-0.001507

Measured compass orientation in the Y-axis

CompZ

number

T

-0.002638

Measured compass orientation in the Z-axis

DvLat

number

lat

51.90717

Latitude

DvLon

number

lon

4.48940

Longitude

GpsFix

string

"RECENT"

Either "RECENT" or "OUTDATED"

Heading

number

rad

3.316

Io31

number

1.0

arbitrary bit

IoButt

number

1.0

whether the Device's button was pressed

IoMot

number

1.0

whether the Device is in motion

IoRxd

number

1.0

Device's external digital i/o value

movementIndication

string

"STATIONARY"

Either "STATIONARY", "STOP", "START" or "MOVING"

Speed

number

m/s

4.12

Temp

string

Cel

7.0

Temperature

VBat

number

V

3.59

Battery voltage

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1701882708.84,
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "Speed",
        "u": "m/s",
        "v": 4.12
    },
    {
        "n": "Heading",
        "u": "rad",
        "v": -3.944
    },
    {
        "n": "IoButt",
        "v": 1.0
    },
    {
        "n": "IoRxd",
        "v": 1.0
    },
    {
        "n": "IoMot",
        "v": 0.0
    },
    {
        "n": "Io31",
        "v": 0.0
    },
    {
        "n": "AccX",
        "u": "m/s2",
        "v": 9.5002
    },
    {
        "n": "AccY",
        "u": "m/s2",
        "v": 0.7661
    },
    {
        "n": "AccZ",
        "u": "m/s2",
        "v": 0.1532
    },
    {
        "n": "CompX",
        "u": "T",
        "v": 0.0000010
    },
    {
        "n": "CompY",
        "u": "T",
        "v": -0.001507
    },
    {
        "n": "CompZ",
        "u": "T",
        "v": -0.002638
    },
    {
        "n": "Temp",
        "u": "Cel",
        "v": 7.0
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "GpsFix",
        "vs": "RECENT"
    },
    {
        "n": "VBat",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
LoRa Geolocation
LoRa On Premise Gateways
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
KPN LocationTag III (with GPS)

KPN LocationTag II v2

KPN LocationTag II v2

Tag for localization and movement monitoring. Revision of KPN LocationTag II. Added functionality NFC and FSK.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-ii-v2

  • Device Specification UUID: 43d4122f-b2ce-486b-9ede-d5463d2a822d

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

19e12863-ad65-4fb7-a812-e6744be290d0

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

fa3928a9-8217-48a1-a3a6-1dcc945b4bb3

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking

040627e5-0254-45ca-a0e1-cafab4c8b775

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

› Decoded payload for Asset Tracking (v2)

1e530f69-1c43-54da-bc77-f3508486c21e

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

› Decoded payload for counting rotations

10cf0159-822c-4039-a641-59d23cc38f49

Decoder outputting general information and specific rotation and orientation data

› Decoded payload for counting rotations (v2)

2aeeaef5-fb56-5b07-9675-58d568dc708f

Decoder outputting general information and specific rotation and orientation data

Encoders
encoderSpecificationUUID
Description

‹ Encoded device commands

9935fa32-6915-4fe9-b864-37e9913a97f9

Set the device mode and enabling of nfc writes.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

Expected SenML outputs

name
type/unit
example
description

locOrigin

string

KPNLORA

indicates the origin of the location data

latitude

numeric

51.79

longitude

numeric

4.68

radius

m

319

locAccuracy

%

locPrecision

%

locTime

timestamp

1637165561

Example SenML-message

This location info can be merged with the payload of the device

[
  {
    "bn": "urn:dev:DEVEUI:A41163C212345678:",
    "bt": 1637165561
  },
  {
    "n": "locOrigin",
    "vs": "KPNLORA"
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 51.794884
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.687986
  },
  {
    "n": "radius",
    "u": "m",
    "v": 319.730194
  },
  {
    "n": "locAccuracy",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locPrecision",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locTime",
    "vs": "1637165561192"
  }
]

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

Expected SenML outputs

See above. Output is comparable to LoRa Geolocation data.

› Decoded payload for Asset Tracking

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

Expected SenML outputs

name
type/unit
example
description

nfcFieldDetected

boolean

false

acceleratorActive

boolean

true

sabotaged

boolean

false

movementIndication

string

STATIONARY

indicates the devices movement status (STOP, STATIONARY, START, MOVING)

alarmMode

boolean

false

batteryVoltage

V

3.5

motionTime

min

2

temperature

Cel

21.0

firmwareVersion

only sent in long payload messages

firmwareCRC

only sent in long payload messages

settingsCRC

only sent in long payload messages

nfcState

only sent in long payload messages

RESERVED, NFC_READ_ONLY, NFC_OFF, NFC_RW

powerupTime

min

only sent in long payload messages

transmissionTime

s

only sent in long payload messages

nrOfLoraTransmissions

only sent in long payload messages

timeOrigin

string

NETWORK

indicates the origin of the timestamp

Example SenML message

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43012345678:",
		"bt": 1678778476
	},
	{
		"n": "nfcFieldDetected",
		"vb": false
	},
	{
		"n": "acceleratorActive",
		"vb": true
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "movementIndication",
		"vs": "STATIONARY"
	},
	{
		"n": "alarmMode",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 2.96
	},
	{
		"n": "motionTime",
		"u": "min",
		"v": 39981.0
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 15.0
	},
	{
		"n": "timeOrigin",
		"u": "enum",
		"vs": "NETWORK"
	}
]

› Decoded payload for Asset Tracking (v2)

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

acceleratorActive

boolean

true

alarmMode

boolean

true

batteryVoltage

number

V

3.56

firmwareCRC

string

"9e17"

Only sent in long payload messages

firmwareVersion

string

"0604"

Only sent in long payload messages

motionTime

number

min

142271.0

movementIndication

string

"STOP"

Indicates the devices movement status. Either "STOP, "STATIONARY", "START" or "MOVING"

nfcFieldDetected

boolean

true

nfcState

string

"RESERVED"

Only sent in long payload messages. Either "RESERVED", "NFC_READ_ONLY", "NFC_OFF", or "NFC_RW"

nrOfLoraTransmissions

number

7427.0

Only sent in long payload messages

powerupTime

number

min

1334707

Only sent in long payload messages

sabotaged

boolean

true

settingsCRC

string

"a3e5"

Only sent in long payload messages

temperature

number

Cel

23.432

transmissionTime

number

s

5180

Only sent in long payload messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

Short payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": true
    },
    {
        "n": "movementIndication",
        "vs": "START"
    },
    {
        "n": "alarmMode",
        "vb": true
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 2.96
    },
    {
        "n": "motionTime",
        "u": "min",
        "v": 22756
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -8
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

Long payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": false
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "alarmMode",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.01
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "06a9"
    },
    {
        "n": "firmwareCRC",
        "vs": "ac01"
    },
    {
        "n": "settingsCRC",
        "vs": "ec36"
    },
    {
        "n": "nfcState",
        "vs": "NFC_READ_ONLY"
    },
    {
        "n": "motionTime",
        "u": "min",
        "v": 18418
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 1156219
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 4142
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 3255
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload for counting rotations

Decoder outputting general information and specific rotation and orientation data

Expected SenML records

name
type
unit

acceleratorActive

boolean

alarmMode

boolean

batteryVoltage

number

V

firmwareCRC

string

firmwareVersion

string

movementIndication

string

enum

nfcFieldDetected

boolean

enum

nfcState

string

enum

nrOfLoraTransmissions

number

orientationX

number

orientationY

number

powerupTime

number

min

rotationCount

number

rotationLeft

number

rotationRight

number

sabotaged

boolean

settingsCRC

string

temperature

number

Cel

transmissionTime

number

s

› Decoded payload for counting rotations (v2)

Decoder outputting general information and specific rotation and orientation data

Fixes from '› Decoded payload for counting rotations':

  • For the field nfcState, the values"NFC_READ_ONLY" & "NFC_OFF" were swapped.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

acceleratorActive

boolean

true

alarmMode

boolean

false

batteryVoltage

number

V

3.03

firmwareCRC

string

"3407"

Not present in detail level 1 messages

firmwareVersion

string

"06b0"

Not present in detail level 1 messages

movementIndication

string

"STATIONARY"

Indicates the devices movement status. Either "STOP", "STATIONARY", "START" or "MOVING"

nfcFieldDetected

boolean

false

nfcState

string

"NFC_READ_ONLY"

Not present in detail level 1 messages. Either "RESERVED", "NFC_READ_ONLY", "NFC_OFF" or "NFC_RW"

nrOfLoraTransmissions

number

27

Not present in detail level 1 messages

orientationX

number

21

Only present in detail level 3 messages

orientationY

number

7

Only present in detail level 3 messages

powerupTime

number

min

184996

Not present in detail level 1 messages

rotationCount

number

2

rotationLeft

number

1

Only present in detail level 3 messages

rotationRight

number

3

Only present in detail level 3 messages

sabotaged

boolean

false

settingsCRC

string

"42b5"

Not present in detail level 1 messages

temperature

number

Cel

24.3

transmissionTime

number

s

67

Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": false
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "alarmMode",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.03
    },
    {
        "n": "rotationCount",
        "v": 2.0
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -24.0
    },
    {
        "n": "firmwareVersion",
        "vs": "06b0"
    },
    {
        "n": "firmwareCRC",
        "vs": "3407"
    },
    {
        "n": "settingsCRC",
        "vs": "42b5"
    },
    {
        "n": "nfcState",
        "vs": "NFC_READ_ONLY"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 184996.0
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 67.0
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 27.0
    },
    {
        "n": "rotationLeft",
        "v": 1.0
    },
    {
        "n": "rotationRight",
        "v": 3.0
    },
    {
        "n": "orientationX",
        "v": 21.0
    },
    {
        "n": "orientationY",
        "v": 7.0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

‹ Encoded device commands

  • Protocol: LoRa downlink

  • Description: Set the device mode and enabling of nfc writes.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: mode

    • Value: Missing (translates into → 118000000080000000)

  • Name: deviceControl

    • Value: Reset (translates into → 0200)

    • Value: NFC_Write (translates into → 1B11FA1816)

LoRa Geolocation
LoRa On Premise Gateways

KPN LocationTag V

KPN LocationTag V

Also known as StreamLineTM-2001/P1A5.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-v

  • Device Specification UUID: be8617b8-831c-4781-84ed-d535b862eace

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

ec67cf00-68c2-4caa-bbd2-9d3454453295

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

d9c25a43-e073-4c0f-a488-b12119462b84

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking application

5cf4f661-d764-4986-bd62-4b68ffc627e7

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

› Decoded payload for Asset Tracking application (v2)

b2b9da8f-761e-599f-8464-3a916d54b6b8

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

› Decoded payload with motion indication

b56341ae-6ab5-4b8d-a4aa-790b7a9e2ffa

Decoder for Streamline LoRa devices configured with motion indicator configuration.

› Decoded payload with motion indication (v2)

e36ca071-eb67-5bf4-93de-0efa2ca087ea

Decoder for Streamline LoRa devices configured with motion indicator configuration.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

Expected SenML outputs

name
type/unit
example
description

locOrigin

string

KPNLORA

indicates the origin of the location data

latitude

numeric

51.79

longitude

numeric

4.68

radius

m

319

locAccuracy

%

locPrecision

%

locTime

timestamp

1637165561

Example SenML-message

This location info can be merged with the payload of the device

[
  {
    "bn": "urn:dev:DEVEUI:A41163C212345678:",
    "bt": 1637165561
  },
  {
    "n": "locOrigin",
    "vs": "KPNLORA"
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 51.794884
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.687986
  },
  {
    "n": "radius",
    "u": "m",
    "v": 319.730194
  },
  {
    "n": "locAccuracy",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locPrecision",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locTime",
    "vs": "1637165561192"
  }
]

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

› Decoded payload for Asset Tracking application

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application.

Expected SenML outputs

name
type/unit
example
description

DvLon

numeric

5.8

Longitude

DvLat

numeric

51.8

Latitude

Speed

m/s

0.0

Heading

rad

3.316

IoButt

numeric

1.0

IoRxd

numeric

1.0

IoMot

numeric

1.0

Io31

numeric

1.0

AccX

numeric

-1.3

Acceleration X

AccY

numeric

-0.5

Acceleration Y

AccZ

numeric

3.0

Acceleration Z

CompX

numeric

0.0

Compass X

CompY

numeric

0.0

Compass Y

CompZ

numeric

0.0

Compass Z

Temp

Cel

9.5

Temperature

VBat

V

3.6

Battery Voltage

TIME_ORIGINE

string

THINGSENGINE

Example SenML-message

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C41000000457:",
		"bt": 1678778484
	},
	{
		"n": "DvLon",
		"u": "lon",
		"v": 5.82224
	},
	{
		"n": "DvLat",
		"u": "lat",
		"v": 51.85008
	},
	{
		"n": "Speed",
		"u": "m/s",
		"v": 0.0
	},
	{
		"n": "Heading",
		"u": "rad",
		"v": 3.316
	},
	{
		"n": "IoButt",
		"v": 1.0
	},
	{
		"n": "IoRxd",
		"v": 1.0
	},
	{
		"n": "IoMot",
		"v": 1.0
	},
	{
		"n": "Io31",
		"v": 0.0
	},
	{
		"n": "AccX",
		"u": "m/s2",
		"v": -9.9599
	},
	{
		"n": "AccY",
		"u": "m/s2",
		"v": -0.7661
	},
	{
		"n": "AccZ",
		"u": "m/s2",
		"v": -0.6129
	},
	{
		"n": "CompX",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "CompY",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "CompZ",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "Temp",
		"u": "Cel",
		"v": 9.5
	},
	{
		"n": "VBat",
		"u": "V",
		"v": 3.59
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

› Decoded payload for Asset Tracking application (v2)

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

devEui

string

Not present in detail level 1 messages

DvLat

number

lat

Latitude

DvLon

number

lon

Longitude

firmwareCRC

string

Not present in detail level 1 messages

firmwareVersion

string

Not present in detail level 1 messages

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

gpsModuleActive

boolean

true

Not present in detail level 1 messages

nfcScanned

boolean

true

nfcState

string

Not present in detail level 1 messages

nrOfLoraTransmissions

number

Not present in detail level 1 messages

orientationX

number

Not present in detail level 1 messages

orientationY

number

Not present in detail level 1 messages

powerupTime

number

min

Not present in detail level 1 messages

rotationCount

number

rotationLeft

number

Not present in detail level 1 messages

rotationRight

number

Not present in detail level 1 messages

settingsCRC

string

Not present in detail level 1 messages

status

string

Not present in detail level 1 messages

temperature

number

Cel

18.334

transmissionTime

number

s

Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": true
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 154
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "cdab"
    },
    {
        "n": "firmwareCRC",
        "vs": "2143"
    },
    {
        "n": "settingsCRC",
        "vs": "7698"
    },
    {
        "n": "gpsModuleActive",
        "vb": true
    },
    {
        "n": "nfcState",
        "vs": "NFC_OFF"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 872379
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 238792
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 55
    },
    {
        "n": "devEui",
        "vs": "babcdef012"
    },
    {
        "n": "rotationLeft",
        "v": 3407873
    },
    {
        "n": "rotationRight",
        "v": 1507507
    },
    {
        "n": "orientationX",
        "v": 122
    },
    {
        "n": "orientationY",
        "v": 12
    },
    {
        "n": "status",
        "vs": "9a"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload with motion indication

Decoder for Streamline LoRa devices configured with motion indicator configuration.

Expected SenML outputs

  • name
    type/unit
    example
    description

    DvLon

    numeric

    5.8

    Longitude

    DvLat

    numeric

    51.8

    Latitude

    Speed

    m/s

    0.0

    Heading

    rad

    3.316

    movementIndication

    string

    START

    STATIONARY, STOP, START, MOVING

    IoButt

    numeric

    1.0

    IoRxd

    numeric

    1.0

    IoMot

    numeric

    1.0

    Io31

    numeric

    1.0

    AccX

    numeric

    -1.3

    Acceleration X

    AccY

    numeric

    -0.5

    Acceleration Y

    AccZ

    numeric

    3.0

    Acceleration Z

    CompX

    numeric

    0.0

    CompY

    numeric

    0.0

    CompZ

    numeric

    0.0

    Temp

    Cel

    9.5

    Temperature

    VBat

    V

    3.6

    Battery Voltage

    TIME_ORIGINE

    string

    THINGSENGINE

Example SenML-message

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C42600000272:",
		"bt": 1678778546
	},
	{
		"n": "DvLon",
		"u": "lon",
		"v": 6.92017
	},
	{
		"n": "DvLat",
		"u": "lat",
		"v": 52.75613
	},
	{
		"n": "Speed",
		"u": "m/s",
		"v": 0.0
	},
	{
		"n": "Heading",
		"u": "rad",
		"v": 2.862
	},
	{
		"n": "movementIndication",
		"vs": "START"
	},
	{
		"n": "GpsFix",
		"vs": "RECENT"
	},
	{
		"n": "IoButt",
		"v": 1.0
	},
	{
		"n": "IoRxd",
		"v": 1.0
	},
	{
		"n": "IoMot",
		"v": 1.0
	},
	{
		"n": "Io31",
		"v": 0.0
	},
	{
		"n": "AccX",
		"u": "m/s2",
		"v": -9.9599
	},
	{
		"n": "AccY",
		"u": "m/s2",
		"v": 1.6855
	},
	{
		"n": "AccZ",
		"u": "m/s2",
		"v": 0.0
	},
	{
		"n": "CompX",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "CompY",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "CompZ",
		"u": "T",
		"v": 0.0
	},
	{
		"n": "Temp",
		"u": "Cel",
		"v": 12.25
	},
	{
		"n": "VBat",
		"u": "V",
		"v": 3.59
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

› Decoded payload with motion indication (v2)

Decoder for Streamline LoRa devices configured with motion indicator configuration.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

AccX

number

m/s2

-1.3

Measured acceleration in the X-axis

AccY

number

m/s2

-0.5

Measured acceleration in the Y-axis

AccZ

number

m/s2

3.0

Measured acceleration in the Z-axis

CompX

number

T

0.0000010

Measured compass orientation in the X-axis

CompY

number

T

-0.001507

Measured compass orientation in the Y-axis

CompZ

number

T

-0.002638

Measured compass orientation in the Z-axis

DvLat

number

lat

51.90717

Latitude

DvLon

number

lon

4.48940

Longitude

GpsFix

string

"RECENT"

Either "RECENT" or "OUTDATED"

Heading

number

rad

3.316

Io31

number

1.0

arbitrary bit

IoButt

number

1.0

whether the Device's button was pressed

IoMot

number

1.0

whether the Device is in motion

IoRxd

number

1.0

Device's external digital i/o value

movementIndication

string

"STATIONARY"

Either "STATIONARY", "STOP", "START" or "MOVING"

Speed

number

m/s

4.12

Temp

string

Cel

7.0

Temperature

VBat

number

V

3.59

Battery voltage

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1701882708.84,
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "Speed",
        "u": "m/s",
        "v": 4.12
    },
    {
        "n": "Heading",
        "u": "rad",
        "v": -3.944
    },
    {
        "n": "IoButt",
        "v": 1.0
    },
    {
        "n": "IoRxd",
        "v": 1.0
    },
    {
        "n": "IoMot",
        "v": 0.0
    },
    {
        "n": "Io31",
        "v": 0.0
    },
    {
        "n": "AccX",
        "u": "m/s2",
        "v": 9.5002
    },
    {
        "n": "AccY",
        "u": "m/s2",
        "v": 0.7661
    },
    {
        "n": "AccZ",
        "u": "m/s2",
        "v": 0.1532
    },
    {
        "n": "CompX",
        "u": "T",
        "v": 0.0000010
    },
    {
        "n": "CompY",
        "u": "T",
        "v": -0.001507
    },
    {
        "n": "CompZ",
        "u": "T",
        "v": -0.002638
    },
    {
        "n": "Temp",
        "u": "Cel",
        "v": 7.0
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "GpsFix",
        "vs": "RECENT"
    },
    {
        "n": "VBat",
        "u": "V",
        "v": 3.59
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

KPN LocationTag III v2

KPN LocationTag III v2

Streamline device configured to be used as Rotation Counter.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-iii-v2

  • Device Specification UUID: 65f45046-10e5-4b97-9367-7f3f7a3fd7bd

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

0e835f04-910a-4c11-8d23-08e9abef8b2c

Add data to messages where location could be calculated.

› Decoded payload for Asset Tracking application

cc80b8ff-7b89-47c8-b158-91e724d27325

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application. For P3K3 (loctagiiiv2) with RotationCount bytelength 2-49

› Decoded payload for Asset Tracking application (v2)

dd211ae8-f914-5eb2-8db8-319f46901822

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

› Decoded payload with location and rotation counter (p3k3)

06e1ab35-cfb8-49aa-bba4-370b526f079d

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount bytelength 2-49

› Decoded payload with location and rotation counter (p3k3) (v2)

96eb6d63-b272-5551-a4fb-f435f2130a17

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

› Decoded payload for Asset Tracking application

Decoder outputting legacy SenML naming, compatible with Asset Tracking v1.x application. For P3K3 (loctagiiiv2) with RotationCount bytelength 2-49

Expected SenML records

name
type
unit

DvLat

number

lat

DvLon

number

lon

batteryVoltage

number

V

devEui

string

firmwareCRC

string

firmwareVersion

string

gpsActiveStill

boolean

gpsFixStill

boolean

gpsModuleActive

boolean

nfcScanned

boolean

nfcState

string

enum

nrOfLoraTransmissions

number

orientationX

number

orientationY

number

powerupTime

number

min

rotationCount

number

rotationLeft

number

rotationRight

number

settingsCRC

string

status

string

temperature

number

Cel

transmissionTime

number

s

› Decoded payload for Asset Tracking application (v2)

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

devEui

string

Not present in detail level 1 messages

DvLat

number

lat

Latitude

DvLon

number

lon

Longitude

firmwareCRC

string

Not present in detail level 1 messages

firmwareVersion

string

Not present in detail level 1 messages

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

gpsModuleActive

boolean

true

Not present in detail level 1 messages

nfcScanned

boolean

true

nfcState

string

Not present in detail level 1 messages

nrOfLoraTransmissions

number

Not present in detail level 1 messages

orientationX

number

Not present in detail level 1 messages

orientationY

number

Not present in detail level 1 messages

powerupTime

number

min

Not present in detail level 1 messages

rotationCount

number

rotationLeft

number

Not present in detail level 1 messages

rotationRight

number

Not present in detail level 1 messages

settingsCRC

string

Not present in detail level 1 messages

status

string

Not present in detail level 1 messages

temperature

number

Cel

18.334

transmissionTime

number

s

Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": true
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3
    },
    {
        "n": "DvLat",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "DvLon",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 154
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "cdab"
    },
    {
        "n": "firmwareCRC",
        "vs": "2143"
    },
    {
        "n": "settingsCRC",
        "vs": "7698"
    },
    {
        "n": "gpsModuleActive",
        "vb": true
    },
    {
        "n": "nfcState",
        "vs": "NFC_OFF"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 872379
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 238792
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 55
    },
    {
        "n": "devEui",
        "vs": "babcdef012"
    },
    {
        "n": "rotationLeft",
        "v": 3407873
    },
    {
        "n": "rotationRight",
        "v": 1507507
    },
    {
        "n": "orientationX",
        "v": 122
    },
    {
        "n": "orientationY",
        "v": 12
    },
    {
        "n": "status",
        "vs": "9a"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload with location and rotation counter (p3k3)

  • UUID: 06e1ab35-cfb8-49aa-bba4-370b526f079d

  • Description: Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount bytelength 2-49

  • Exchange: decoder.lora.streamline.exchange

Expected SenML outputs

name
type/unit
example
description

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

nfcScanned

boolean

false

nfcScanned

boolean

false

batteryVoltage

V

2.96

latitude

numeric

52.15

longitude

numeric

6.72

rotationCount

numeric

266

temperature

Cel

21.0

firmwareVersion

not present in detail level 1 messages

firmwareCRC

not present in detail level 1 messages

settingsCRC

not present in detail level 1 messages

gpsModuleActive

boolean

false

not present in detail level 1 messages

nfcState

string

NFC_RW

not present in detail level 1 messages

powerupTime

min

not present in detail level 1 messages

transmissionTime

s

not present in detail level 1 messages

nrOfLoraTransmissions

numeric

not present in detail level 1 messages

devEui

string

not present in detail level 1 messages

rotationLeft

numeric

33.0

not present in detail level 1 messages

rotationRight

numeric

29.0

not present in detail level 1 messages

orientationX

numeric

255.0

not present in detail level 1 messages

orientationY

numeric

1.0

not present in detail level 1 messages

status

string

02

not present in detail level 1 messages

TIME_ORIGIN

string

THINGSENGINE

Example SenML-message - detail level 1

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43212345678:",
		"bt": 1678798438
	},
	{
		"n": "gpsActiveStill",
		"vb": true
	},
	{
		"n": "gpsFixStill",
		"vb": true
	},
	{
		"n": "nfcScanned",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 2.95
	},
	{
		"n": "latitude",
		"u": "lat",
		"v": 52.15552
	},
	{
		"n": "longitude",
		"u": "lon",
		"v": 6.72049
	},
	{
		"n": "rotationCount",
		"v": 15.0
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 11.0
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

Example SenML-message - detail level 2

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43212345678:",
		"bt": 1678798803
	},
	{
		"n": "gpsActiveStill",
		"vb": true
	},
	{
		"n": "gpsFixStill",
		"vb": true
	},
	{
		"n": "nfcScanned",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 3.0
	},
	{
		"n": "latitude",
		"u": "lat",
		"v": 52.04075
	},
	{
		"n": "longitude",
		"u": "lon",
		"v": 4.408
	},
	{
		"n": "rotationCount",
		"v": 4.0
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 16.0
	},
	{
		"n": "firmwareVersion",
		"vs": "10a8"
	},
	{
		"n": "firmwareCRC",
		"vs": "e865"
	},
	{
		"n": "settingsCRC",
		"vs": "36cd"
	},
	{
		"n": "gpsModuleActive",
		"vb": false
	},
	{
		"n": "nfcState",
		"u": "enum",
		"vs": "NFC_RW"
	},
	{
		"n": "powerupTime",
		"u": "min",
		"v": 152431.0
	},
	{
		"n": "transmissionTime",
		"u": "s",
		"v": 1080.0
	},
	{
		"n": "nrOfLoraTransmissions",
		"v": 576.0
	},
	{
		"n": "devEui",
		"vs": "3200001247"
	},
	{
		"n": "rotationLeft",
		"v": 33.0
	},
	{
		"n": "rotationRight",
		"v": 29.0
	},
	{
		"n": "orientationX",
		"v": 255.0
	},
	{
		"n": "orientationY",
		"v": 1.0
	},
	{
		"n": "status",
		"vs": "02"
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

› Decoded payload with location and rotation counter (p3k3) (v2)

Decoder for Streamline lora messages encoded as P3K3 (loctagiiiv2) with RotationCount (byte length 2-49).

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

batteryVoltage

number

V

2.96

devEui

string

"0123456789012345"

not present in detail level 1 messages

firmwareCRC

string

"2143"

not present in detail level 1 messages

firmwareVersion

string

"cdab"

not present in detail level 1 messages

gpsActiveStill

boolean

true

gpsFixStill

boolean

true

gpsModuleActive

boolean

true

not present in detail level 1 messages

latitude

number

lat

51.90717

longitude

number

lon

4.48940

nfcScanned

boolean

true

nfcState

string

"NFC_RW"

not present in detail level 1 messages

nrOfLoraTransmissions

number

not present in detail level 1 messages

orientationX

number

255.0

not present in detail level 1 messages

orientationY

number

1.0

not present in detail level 1 messages

powerupTime

number

min

not present in detail level 1 messages

rotationCount

number

266

rotationLeft

number

33.0

not present in detail level 1 messages

rotationRight

number

29.0

not present in detail level 1 messages

settingsCRC

string

"7698"

not present in detail level 1 messages

status

string

"9a"

not present in detail level 1 messages

temperature

number

Cel

21.0

transmissionTime

number

s

not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

14 byte payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": false
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.02
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 124
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 3
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

49 byte payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "gpsActiveStill",
        "vb": true
    },
    {
        "n": "gpsFixStill",
        "vb": true
    },
    {
        "n": "nfcScanned",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90717
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.48940
    },
    {
        "n": "rotationCount",
        "v": 154
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "cdab"
    },
    {
        "n": "firmwareCRC",
        "vs": "2143"
    },
    {
        "n": "settingsCRC",
        "vs": "7698"
    },
    {
        "n": "gpsModuleActive",
        "vb": true
    },
    {
        "n": "nfcState",
        "vs": "NFC_OFF"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 872379
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 238792
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 55
    },
    {
        "n": "devEui",
        "vs": "0123456789012345"
    },
    {
        "n": "rotationLeft",
        "v": 3407873
    },
    {
        "n": "rotationRight",
        "v": 1507507
    },
    {
        "n": "orientationX",
        "v": 122
    },
    {
        "n": "orientationY",
        "v": 12
    },
    {
        "n": "status",
        "vs": "9a"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
LoRa Geolocation
LoRa On Premise Gateways
LoRa Geolocation

KPN LocationTag II v2 Expert Mode

KPN LocationTag II v2 Expert Mode

Tag for localization and movement monitoring. Revision of KPN LocationTag II. Added functionality NFC and FSK. Expert Mode: configurable lifebeat and accelerometers sensitivity.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-locationtag-ii-v2-expert-mode

  • Device Specification UUID: 1a1fc7f4-e6b5-4e36-ad09-60624cae6774

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

f0e87fa4-49da-4433-9092-eb70ba69af82

Add data to messages where location could be calculated.

+ Location by LoRa On Premises Gateway reception

d628e1d0-7ced-46da-b586-cbfb6f598a3a

Add location data to messages that are received by known .

› Decoded payload for Asset Tracking

45ec6598-2abf-4fd2-afd5-b4680a97ce01

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

› Decoded payload for Asset Tracking (v2)

0608cc3f-7136-5fde-9947-07cb11d2a60a

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

› Decoded payload for counting rotations

bd154000-0384-4bec-9e66-8edf4dcaeaf3

Decoder outputting general information and specific rotation and orientation data

› Decoded payload for counting rotations (v2)

ac0b8a25-bd54-57d1-9de5-e9f2a6acb97b

Decoder outputting general information and specific rotation and orientation data

Encoders
encoderSpecificationUUID
Description

‹ Encoded device commands

a9c437e4-cdda-4a30-911f-c359fa16b598

Set the device mode and enabling of nfc writes.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

Expected SenML outputs

name
type/unit
example
description

locOrigin

string

KPNLORA

indicates the origin of the location data

latitude

numeric

51.79

longitude

numeric

4.68

radius

m

319

locAccuracy

%

locPrecision

%

locTime

timestamp

1637165561

Example SenML-message

This location info can be merged with the payload of the device

[
  {
    "bn": "urn:dev:DEVEUI:A41163C212345678:",
    "bt": 1637165561
  },
  {
    "n": "locOrigin",
    "vs": "KPNLORA"
  },
  {
    "n": "latitude",
    "u": "lat",
    "v": 51.794884
  },
  {
    "n": "longitude",
    "u": "lon",
    "v": 4.687986
  },
  {
    "n": "radius",
    "u": "m",
    "v": 319.730194
  },
  {
    "n": "locAccuracy",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locPrecision",
    "u": "%",
    "v": 9999
  },
  {
    "n": "locTime",
    "vs": "1637165561192"
  }
]

+ Location by LoRa On Premises Gateway reception

Add location data to messages that are received by known LoRa On Premise Gateways.

Expected SenML outputs

See above. Output is comparable to LoRa Geolocation data.

› Decoded payload for Asset Tracking

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

Expected SenML outputs

name
type/unit
example
description

nfcFieldDetected

boolean

false

acceleratorActive

boolean

true

sabotaged

boolean

false

movementIndication

string

STATIONARY

indicates the devices movement status (STOP, STATIONARY, START, MOVING)

alarmMode

boolean

false

batteryVoltage

V

3.5

motionTime

min

2

temperature

Cel

21.0

firmwareVersion

not present in detail level 1 messages

firmwareCRC

not present in detail level 1 messages

settingsCRC

not present in detail level 1 messages

nfcState

not present in detail level 1 messages

RESERVED, NFC_READ_ONLY, NFC_OFF, NFC_RW

powerupTime

min

not present in detail level 1 messages

transmissionTime

s

not present in detail level 1 messages

nrOfLoraTransmissions

not present in detail level 1 messages

timeOrigin

string

NETWORK

indicates the origin of the timestamp

Example SenML-message - detail level 1

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43012345678:",
		"bt": 1678779611
	},
	{
		"n": "nfcFieldDetected",
		"vb": false
	},
	{
		"n": "acceleratorActive",
		"vb": true
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "movementIndication",
		"vs": "STATIONARY"
	},
	{
		"n": "alarmMode",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 2.98
	},
	{
		"n": "motionTime",
		"u": "min",
		"v": 590.0
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 11.0
	},
	{
		"n": "timeOrigin",
		"u": "enum",
		"vs": "NETWORK"
	}
]

› Decoded payload for Asset Tracking (v2)

Decoder for Streamline LoRa short and long payloads containing a.o. NFC field detected flag, sabotaged flag, motion status, and battery voltage. Long payloads also contain a.o. firmware, power up, and transmission time.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

acceleratorActive

boolean

true

alarmMode

boolean

true

batteryVoltage

number

V

3.56

firmwareCRC

string

"9e17"

Only sent in long payload messages

firmwareVersion

string

"0604"

Only sent in long payload messages

motionTime

number

min

142271.0

movementIndication

string

"STOP"

Indicates the devices movement status. Either "STOP, "STATIONARY", "START" or "MOVING"

nfcFieldDetected

boolean

true

nfcState

string

"RESERVED"

Only sent in long payload messages. Either "RESERVED", "NFC_READ_ONLY", "NFC_OFF", or "NFC_RW"

nrOfLoraTransmissions

number

7427.0

Only sent in long payload messages

powerupTime

number

min

1334707

Only sent in long payload messages

sabotaged

boolean

true

settingsCRC

string

"a3e5"

Only sent in long payload messages

temperature

number

Cel

23.432

transmissionTime

number

s

5180

Only sent in long payload messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

Short payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": true
    },
    {
        "n": "movementIndication",
        "vs": "START"
    },
    {
        "n": "alarmMode",
        "vb": true
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 2.96
    },
    {
        "n": "motionTime",
        "u": "min",
        "v": 22756
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -8
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

Long payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": false
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "alarmMode",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.01
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 1
    },
    {
        "n": "firmwareVersion",
        "vs": "06a9"
    },
    {
        "n": "firmwareCRC",
        "vs": "ac01"
    },
    {
        "n": "settingsCRC",
        "vs": "ec36"
    },
    {
        "n": "nfcState",
        "vs": "NFC_READ_ONLY"
    },
    {
        "n": "motionTime",
        "u": "min",
        "v": 18418
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 1156219
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 4142
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 3255
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded payload for counting rotations

Decoder outputting general information and specific rotation and orientation data

Expected SenML outputs

name
type/unit
example
description

nfcFieldDetected

boolean

false

acceleratorActive

boolean

true

sabotaged

boolean

false

movementIndication

string

STATIONARY

indicates the devices movement status (STOP, STATIONARY, START, MOVING)

alarmMode

boolean

false

batteryVoltage

V

3.5

rotationCount

numeric

277

temperature

Cel

21.0

firmwareVersion

not present in detail level 1 messages

firmwareCRC

not present in detail level 1 messages

settingsCRC

not present in detail level 1 messages

nfcState

string

not present in detail level 1 messages

RESERVED, NFC_READ_ONLY, NFC_OFF, NFC_RW

powerupTime

min

not present in detail level 1 messages

transmissionTime

s

not present in detail level 1 messages

nrOfLoraTransmissions

numeric

not present in detail level 1 messages

rotationLeft

numeric

only present in detail level 3 messages

rotationRight

numeric

only present in detail level 3 messages

orientationX

numeric

only present in detail level 3 messages

orientationY

numeric

only present in detail level 3 messages

timeOrigin

string

NETWORK

indicates the origin of the timestamp

Example SenML-message - detail level 1

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43012345678:",
		"bt": 1678779611
	},
	{
		"n": "nfcFieldDetected",
		"vb": false
	},
	{
		"n": "acceleratorActive",
		"vb": true
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "movementIndication",
		"vs": "STATIONARY"
	},
	{
		"n": "alarmMode",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 2.98
	},
	{
		"n": "rotationCount",
		"v": 227
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 11.0
	},
	{
		"n": "timeOrigin",
		"u": "enum",
		"vs": "NETWORK"
	}
]

Example SenML-message - detail level 2

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43000010445:",
		"bt": 1639575781
	},
	{
		"n": "nfcFieldDetected",
		"u": "enum",
		"vb": false
	},
	{
		"n": "acceleratorActive",
		"vb": false
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "movementIndication",
		"u": "enum",
		"vs": "STATIONARY"
	},
	{
		"n": "alarmMode",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 2.99
	},
	{
		"n": "rotationCount",
		"v": 227
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 17
	},
	{
		"n": "firmwareVersion",
		"vs": "06b0"
	},
	{
		"n": "firmwareCRC",
		"vs": "3407"
	},
	{
		"n": "settingsCRC",
		"vs": "117c"
	},
	{
		"n": "nfcState",
		"u": "enum",
		"vs": "NFC_RW"
	},
	{
		"n": "powerupTime",
		"u": "min",
		"v": 294794
	},
	{
		"n": "transmissionTime",
		"u": "s",
		"v": 894
	},
	{
		"n": "nrOfLoraTransmissions",
		"v": 539
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

Example SenML-message - detail level 3

[
	{
		"bn": "urn:dev:DEVEUI:7CC6C43000010445:",
		"bt": 1639571120
	},
	{
		"n": "nfcFieldDetected",
		"u": "enum",
		"vb": false
	},
	{
		"n": "acceleratorActive",
		"vb": true
	},
	{
		"n": "sabotaged",
		"vb": false
	},
	{
		"n": "movementIndication",
		"u": "enum",
		"vs": "STATIONARY"
	},
	{
		"n": "alarmMode",
		"vb": false
	},
	{
		"n": "batteryVoltage",
		"u": "V",
		"v": 3
	},
	{
		"n": "rotationCount",
		"v": 227
	},
	{
		"n": "temperature",
		"u": "Cel",
		"v": 16
	},
	{
		"n": "firmwareVersion",
		"vs": "06b0"
	},
	{
		"n": "firmwareCRC",
		"vs": "3407"
	},
	{
		"n": "settingsCRC",
		"vs": "5386"
	},
	{
		"n": "nfcState",
		"u": "enum",
		"vs": "NFC_RW"
	},
	{
		"n": "powerupTime",
		"u": "min",
		"v": 294725
	},
	{
		"n": "transmissionTime",
		"u": "s",
		"v": 861
	},
	{
		"n": "nrOfLoraTransmissions",
		"v": 522
	},
	{
		"n": "rotationLeft",
		"v": 1
	},
	{
		"n": "rotationRight",
		"v": 228
	},
	{
		"n": "orientationX",
		"v": 61
	},
	{
		"n": "orientationY",
		"v": 0
	},
	{
		"n": "TIME_ORIGIN",
		"vs": "THINGSENGINE"
	}
]

› Decoded payload for counting rotations (v2)

Decoder outputting general information and specific rotation and orientation data

Fixes from '› Decoded payload for counting rotations':

  • For the field nfcState, the values"NFC_READ_ONLY" & "NFC_OFF" were swapped.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

acceleratorActive

boolean

true

alarmMode

boolean

false

batteryVoltage

number

V

3.03

firmwareCRC

string

"3407"

Not present in detail level 1 messages

firmwareVersion

string

"06b0"

Not present in detail level 1 messages

movementIndication

string

"STATIONARY"

Indicates the devices movement status. Either "STOP", "STATIONARY", "START" or "MOVING"

nfcFieldDetected

boolean

false

nfcState

string

"NFC_READ_ONLY"

Not present in detail level 1 messages. Either "RESERVED", "NFC_READ_ONLY", "NFC_OFF" or "NFC_RW"

nrOfLoraTransmissions

number

27

Not present in detail level 1 messages

orientationX

number

21

Only present in detail level 3 messages

orientationY

number

7

Only present in detail level 3 messages

powerupTime

number

min

184996

Not present in detail level 1 messages

rotationCount

number

2

rotationLeft

number

1

Only present in detail level 3 messages

rotationRight

number

3

Only present in detail level 3 messages

sabotaged

boolean

false

settingsCRC

string

"42b5"

Not present in detail level 1 messages

temperature

number

Cel

24.3

transmissionTime

number

s

67

Not present in detail level 1 messages

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "nfcFieldDetected",
        "vb": false
    },
    {
        "n": "acceleratorActive",
        "vb": true
    },
    {
        "n": "sabotaged",
        "vb": false
    },
    {
        "n": "movementIndication",
        "vs": "STATIONARY"
    },
    {
        "n": "alarmMode",
        "vb": false
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.03
    },
    {
        "n": "rotationCount",
        "v": 2.0
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -24.0
    },
    {
        "n": "firmwareVersion",
        "vs": "06b0"
    },
    {
        "n": "firmwareCRC",
        "vs": "3407"
    },
    {
        "n": "settingsCRC",
        "vs": "42b5"
    },
    {
        "n": "nfcState",
        "vs": "NFC_READ_ONLY"
    },
    {
        "n": "powerupTime",
        "u": "min",
        "v": 184996.0
    },
    {
        "n": "transmissionTime",
        "u": "s",
        "v": 67.0
    },
    {
        "n": "nrOfLoraTransmissions",
        "v": 27.0
    },
    {
        "n": "rotationLeft",
        "v": 1.0
    },
    {
        "n": "rotationRight",
        "v": 3.0
    },
    {
        "n": "orientationX",
        "v": 21.0
    },
    {
        "n": "orientationY",
        "v": 7.0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

‹ Encoded device commands

  • Protocol: LoRa downlink

  • Description: Set the device mode and enabling of nfc writes.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: mode

    • Value: Missing (translates into → 1A7A10008D2700008D27722C008D2700008D27118000000080000000)

  • Name: deviceControl

    • Value: Reset (translates into → 0200)

    • Value: NFC_Write (translates into → 1B11FA1816)

    • Value: 8 uur lifebeat interval. Warning: only send to TAG IIv2 start/stop configurations. (translates into → 1B8108807000008070000016)

    • Value: 12 uur lifebeat interval. Warning: only send to TAG IIv2 start/stop configurations. (translates into → 1B8108C0A80000C0A8000016)

    • Value: 24 uur lifebeat interval. Warning: only send to TAG IIv2 start/stop configurations. (default) (translates into → 1B8108805101008051010016)

    • Value: Set moving sensitivity to 5. Warning: only send to TAG IIv2 start/stop configurations. (default) (translates into → 1B14470516)

    • Value: Set moving sensitivity to 6. Warning: only send to TAG IIv2 start/stop configurations. (translates into → 1B14470616)

    • Value: Set moving sensitivity to 7. Warning: only send to TAG IIv2 start/stop configurations. (translates into → 1B14470716)

    • Value: Set moving sensitivity to 8. Warning: only send to TAG IIv2 start/stop configurations. (translates into → 1B14470816)

LoRa Geolocation
LoRa On Premise Gateways

KPN Conditionsensor CO2 II

KPN Conditionsensor CO2 II

Also known as Elsys ERS device. A Smart Building Sensor for indoor environment monitoring.

  • Supported network type(s): KPNLORA

  • Device Specification ID: kpn-conditionsensor-co2-ii

  • Device Specification UUID: 1dafa763-a81c-4452-a593-0517cd55e4d0

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

cd23156d-6b57-42fd-b6f5-ecacd6c9bcb1

Add data to messages where location could be calculated.

› Decoded payload for environment monitoring

0645c267-8879-4e5f-82ee-1aec1b57c5c3

Decoder for v9 Elsys ERS payload.

› Decoded payload for environment monitoring (v2)

755d7ac5-7318-5285-95e8-e3324e17ff88

Decoder for Elsys ERS payloads. Fixes bugs in '› Decoded payload for environment monitoring'

Encoders
encoderSpecificationUUID
Description

‹ Encoded device commands

ad77f15c-5ddb-4339-8856-d3bdc4606e08

Set the send interval and reboot, or let device calibrate CO2 Sensor.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

› Decoded payload for environment monitoring

Decoder for v9 Elsys ERS payload.

Expected SenML records

name
type
unit

CO2Concentration

number

ppm

Pulse2

number

count

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

analog1

number

V

analog2

number

V

batteryVoltage

number

V

digitalExternal

boolean

digitalIn2

boolean

distance

number

m

grideye

number

Cel

grideye0-0

number

Cel

grideye0-1

number

Cel

grideye0-2

number

Cel

grideye0-3

number

Cel

grideye0-4

number

Cel

grideye0-5

number

Cel

grideye0-6

number

Cel

grideye0-7

number

Cel

grideye1-0

number

Cel

grideye1-1

number

Cel

grideye1-2

number

Cel

grideye1-3

number

Cel

grideye1-4

number

Cel

grideye1-5

number

Cel

grideye1-6

number

Cel

grideye1-7

number

Cel

grideye2-0

number

Cel

grideye2-1

number

Cel

grideye2-2

number

Cel

grideye2-3

number

Cel

grideye2-4

number

Cel

grideye2-5

number

Cel

grideye2-6

number

Cel

grideye2-7

number

Cel

grideye3-0

number

Cel

grideye3-1

number

Cel

grideye3-2

number

Cel

grideye3-3

number

Cel

grideye3-4

number

Cel

grideye3-5

number

Cel

grideye3-6

number

Cel

grideye3-7

number

Cel

grideye4-0

number

Cel

grideye4-1

number

Cel

grideye4-2

number

Cel

grideye4-3

number

Cel

grideye4-4

number

Cel

grideye4-5

number

Cel

grideye4-6

number

Cel

grideye4-7

number

Cel

grideye5-0

number

Cel

grideye5-1

number

Cel

grideye5-2

number

Cel

grideye5-3

number

Cel

grideye5-4

number

Cel

grideye5-5

number

Cel

grideye5-6

number

Cel

grideye5-7

number

Cel

grideye6-0

number

Cel

grideye6-1

number

Cel

grideye6-2

number

Cel

grideye6-3

number

Cel

grideye6-4

number

Cel

grideye6-5

number

Cel

grideye6-6

number

Cel

grideye6-7

number

Cel

grideye7-0

number

Cel

grideye7-1

number

Cel

grideye7-2

number

Cel

grideye7-3

number

Cel

grideye7-4

number

Cel

grideye7-5

number

Cel

grideye7-6

number

Cel

grideye7-7

number

Cel

humidity

number

%RH

illuminance

number

lx

lattitude

number

lat

longitude

number

lon

motion

number

count

occupancy

number

count

pressure

number

Pa

pulse

number

count

pulseAbsolute

number

count

pulseAbsolute2

number

count

soundAverage

number

dB

soundPeak

number

dB

temperature

number

Cel

temperatureExternal1

number

Cel

temperatureExternal2

number

Cel

temperatureIRExternal

number

Cel

temperatureIRInternal

number

Cel

waterLeak

number

count

› Decoded payload for environment monitoring (v2)

Decoder for Elsys ERS payloads. Fixes bugs in '› Decoded payload for environment monitoring':

  • distance was incorrectly converted to dm instead of m. Now the containing value is in meters.

  • soundAverage was decoded incorrectly, resulting in a number that is way too large.

  • soundPeak was decoded incorrectly, resulting in a number that is way too large.

  • The grideye fields were decoded incorrectly, where most results would be too big.

  • Time offsets were added as positive ts instead of negative ts.

  • acceleration values were processed as unsigned values, but they should have been processed as signed values.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

accelerationX

number

m/s2

0.31132222222222217

accelerationY

number

m/s2

15.566111111111107

accelerationZ

number

m/s2

13.231194444444442

analog1

number

V

35.124

External analog input voltage

analog2

number

V

49.287

batteryVoltage

number

V

3.596

CO2Concentration

number

ppm

638

CO2

number

ppm

638

contains the same value as CO2Concentration and is included for backwards compatibility

digitalExternal

boolean

false

digitalIn2

boolean

false

distance

number

m

261.42

grideye0-0

number

Cel

21.234

All the grideye fields combined make up the room infrared temperature.

grideye0-1

number

Cel

grideye0-2

number

Cel

grideye0-3

number

Cel

grideye0-4

number

Cel

grideye0-5

number

Cel

grideye0-6

number

Cel

grideye0-7

number

Cel

grideye1-0

number

Cel

grideye1-1

number

Cel

grideye1-2

number

Cel

grideye1-3

number

Cel

grideye1-4

number

Cel

grideye1-5

number

Cel

grideye1-6

number

Cel

grideye1-7

number

Cel

grideye2-0

number

Cel

grideye2-1

number

Cel

grideye2-2

number

Cel

grideye2-3

number

Cel

grideye2-4

number

Cel

grideye2-5

number

Cel

grideye2-6

number

Cel

grideye2-7

number

Cel

grideye3-0

number

Cel

grideye3-1

number

Cel

grideye3-2

number

Cel

grideye3-3

number

Cel

grideye3-4

number

Cel

grideye3-5

number

Cel

grideye3-6

number

Cel

grideye3-7

number

Cel

grideye4-0

number

Cel

grideye4-1

number

Cel

grideye4-2

number

Cel

grideye4-3

number

Cel

grideye4-4

number

Cel

grideye4-5

number

Cel

grideye4-6

number

Cel

grideye4-7

number

Cel

grideye5-0

number

Cel

grideye5-1

number

Cel

grideye5-2

number

Cel

grideye5-3

number

Cel

grideye5-4

number

Cel

grideye5-5

number

Cel

grideye5-6

number

Cel

grideye5-7

number

Cel

grideye6-0

number

Cel

grideye6-1

number

Cel

grideye6-2

number

Cel

grideye6-3

number

Cel

grideye6-4

number

Cel

grideye6-5

number

Cel

grideye6-6

number

Cel

grideye6-7

number

Cel

grideye7-0

number

Cel

grideye7-1

number

Cel

grideye7-2

number

Cel

grideye7-3

number

Cel

grideye7-4

number

Cel

grideye7-5

number

Cel

grideye7-6

number

Cel

grideye7-7

number

Cel

humidity

number

%RH

34

illuminance

number

lx

56273

motion

number

count

5

Number of detected PIR motions

occupancy

number

count

0

0: No detection 1: Entering/leaving 2:Occupied

pressure

number

Pa

102900

pulse

number

count

Relative value, reset every transmission

Pulse2

number

count

Relative value, reset every transmission

pulseAbsolute

number

count

Absolute value, never reset

pulseAbsolute2

number

count

Absolute value, never reset

soundAverage

number

dB

42

soundPeak

number

dB

80

temperature

number

Cel

23.5

temperatureExternal1

number

Cel

temperatureExternal2

number

Cel

temperatureIRExternal

number

Cel

24.9

temperatureIRInternal

number

Cel

23.3

waterLeak

number

count

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

Long payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "t": -16,
        "u": "Cel",
        "v": 21
    },
    {
        "n": "humidity",
        "t": -10,
        "u": "%RH",
        "v": 32
    },
    {
        "n": "accelerationX",
        "u": "m/s2",
        "v": 0.15566111111111108
    },
    {
        "n": "accelerationY",
        "u": "m/s2",
        "v": 0.31132222222222217
    },
    {
        "n": "accelerationZ",
        "u": "m/s2",
        "v": 0.46698333333333325
    },
    {
        "n": "illuminance",
        "u": "lx",
        "v": 354
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 478
    },
    {
        "n": "CO2",
        "u": "ppm",
        "v": 478
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.245
    },
    {
        "n": "analog1",
        "u": "V",
        "v": 57.071
    },
    {
        "n": "pulse",
        "u": "count",
        "v": 61438
    },
    {
        "n": "pulseAbsolute",
        "u": "count",
        "v": 2144202751
    },
    {
        "n": "temperatureExternal1",
        "u": "Cel",
        "v": 21.7
    },
    {
        "n": "digitalExternal",
        "vb": true
    },
    {
        "n": "distance",
        "u": "m",
        "v": 4.643
    },
    {
        "n": "motion",
        "u": "count",
        "v": 255
    },
    {
        "n": "temperatureIRInternal",
        "u": "Cel",
        "v": 24.5
    },
    {
        "n": "temperatureIRExternal",
        "u": "Cel",
        "v": 23
    },
    {
        "n": "occupancy",
        "u": "count",
        "v": 2
    },
    {
        "n": "waterLeak",
        "u": "count",
        "v": 0
    },
    {
        "n": "grideye0-0",
        "u": "Cel",
        "v": 16
    },
    {
        "n": "grideye1-0",
        "u": "Cel",
        "v": 16.1
    },
    {
        "n": "grideye2-0",
        "u": "Cel",
        "v": 16.2
    },
    {
        "n": "grideye3-0",
        "u": "Cel",
        "v": 16.3
    },
    {
        "n": "grideye4-0",
        "u": "Cel",
        "v": 16.4
    },
    {
        "n": "grideye5-0",
        "u": "Cel",
        "v": 16.5
    },
    {
        "n": "grideye6-0",
        "u": "Cel",
        "v": 16.6
    },
    {
        "n": "grideye7-0",
        "u": "Cel",
        "v": 16.7
    },
    {
        "n": "grideye0-1",
        "u": "Cel",
        "v": 16.8
    },
    {
        "n": "grideye1-1",
        "u": "Cel",
        "v": 16.9
    },
    {
        "n": "grideye2-1",
        "u": "Cel",
        "v": 17
    },
    {
        "n": "grideye3-1",
        "u": "Cel",
        "v": 17.1
    },
    {
        "n": "grideye4-1",
        "u": "Cel",
        "v": 17.2
    },
    {
        "n": "grideye5-1",
        "u": "Cel",
        "v": 17.3
    },
    {
        "n": "grideye6-1",
        "u": "Cel",
        "v": 17.4
    },
    {
        "n": "grideye7-1",
        "u": "Cel",
        "v": 17.5
    },
    {
        "n": "grideye0-2",
        "u": "Cel",
        "v": 17.6
    },
    {
        "n": "grideye1-2",
        "u": "Cel",
        "v": 17.7
    },
    {
        "n": "grideye2-2",
        "u": "Cel",
        "v": 17.8
    },
    {
        "n": "grideye3-2",
        "u": "Cel",
        "v": 17.9
    },
    {
        "n": "grideye4-2",
        "u": "Cel",
        "v": 18
    },
    {
        "n": "grideye5-2",
        "u": "Cel",
        "v": 18.1
    },
    {
        "n": "grideye6-2",
        "u": "Cel",
        "v": 18.2
    },
    {
        "n": "grideye7-2",
        "u": "Cel",
        "v": 18.3
    },
    {
        "n": "grideye0-3",
        "u": "Cel",
        "v": 18.4
    },
    {
        "n": "grideye1-3",
        "u": "Cel",
        "v": 18.5
    },
    {
        "n": "grideye2-3",
        "u": "Cel",
        "v": 18.6
    },
    {
        "n": "grideye3-3",
        "u": "Cel",
        "v": 18.7
    },
    {
        "n": "grideye4-3",
        "u": "Cel",
        "v": 18.8
    },
    {
        "n": "grideye5-3",
        "u": "Cel",
        "v": 18.9
    },
    {
        "n": "grideye6-3",
        "u": "Cel",
        "v": 19
    },
    {
        "n": "grideye7-3",
        "u": "Cel",
        "v": 19.1
    },
    {
        "n": "grideye0-4",
        "u": "Cel",
        "v": 19.2
    },
    {
        "n": "grideye1-4",
        "u": "Cel",
        "v": 19.3
    },
    {
        "n": "grideye2-4",
        "u": "Cel",
        "v": 19.4
    },
    {
        "n": "grideye3-4",
        "u": "Cel",
        "v": 19.5
    },
    {
        "n": "grideye4-4",
        "u": "Cel",
        "v": 19.6
    },
    {
        "n": "grideye5-4",
        "u": "Cel",
        "v": 19.7
    },
    {
        "n": "grideye6-4",
        "u": "Cel",
        "v": 19.8
    },
    {
        "n": "grideye7-4",
        "u": "Cel",
        "v": 19.9
    },
    {
        "n": "grideye0-5",
        "u": "Cel",
        "v": 20
    },
    {
        "n": "grideye1-5",
        "u": "Cel",
        "v": 20.1
    },
    {
        "n": "grideye2-5",
        "u": "Cel",
        "v": 20.2
    },
    {
        "n": "grideye3-5",
        "u": "Cel",
        "v": 20.3
    },
    {
        "n": "grideye4-5",
        "u": "Cel",
        "v": 20.4
    },
    {
        "n": "grideye5-5",
        "u": "Cel",
        "v": 20.5
    },
    {
        "n": "grideye6-5",
        "u": "Cel",
        "v": 20.6
    },
    {
        "n": "grideye7-5",
        "u": "Cel",
        "v": 20.7
    },
    {
        "n": "grideye0-6",
        "u": "Cel",
        "v": 20.8
    },
    {
        "n": "grideye1-6",
        "u": "Cel",
        "v": 20.9
    },
    {
        "n": "grideye2-6",
        "u": "Cel",
        "v": 21
    },
    {
        "n": "grideye3-6",
        "u": "Cel",
        "v": 21.1
    },
    {
        "n": "grideye4-6",
        "u": "Cel",
        "v": 21.2
    },
    {
        "n": "grideye5-6",
        "u": "Cel",
        "v": 21.3
    },
    {
        "n": "grideye6-6",
        "u": "Cel",
        "v": 21.4
    },
    {
        "n": "grideye7-6",
        "u": "Cel",
        "v": 21.5
    },
    {
        "n": "grideye0-7",
        "u": "Cel",
        "v": 21.6
    },
    {
        "n": "grideye1-7",
        "u": "Cel",
        "v": 21.7
    },
    {
        "n": "grideye2-7",
        "u": "Cel",
        "v": 21.8
    },
    {
        "n": "grideye3-7",
        "u": "Cel",
        "v": 21.9
    },
    {
        "n": "grideye4-7",
        "u": "Cel",
        "v": 22
    },
    {
        "n": "grideye5-7",
        "u": "Cel",
        "v": 22.1
    },
    {
        "n": "grideye6-7",
        "u": "Cel",
        "v": 22.2
    },
    {
        "n": "grideye7-7",
        "u": "Cel",
        "v": 22.3
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 27054496
    },
    {
        "n": "soundPeak",
        "u": "dB",
        "v": 64
    },
    {
        "n": "soundAverage",
        "u": "dB",
        "v": 40
    },
    {
        "n": "Pulse2",
        "u": "count",
        "v": 235
    },
    {
        "n": "pulseAbsolute2",
        "u": "count",
        "v": 122
    },
    {
        "n": "analog2",
        "u": "V",
        "v": 17.767
    },
    {
        "n": "temperatureExternal2",
        "u": "Cel",
        "v": 28.1
    },
    {
        "n": "digitalIn2",
        "vb": true
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

Short payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1704798016.891,
        "v": 17,
        "n": "temperature",
        "u": "Cel"
    },
    {
        "v": 32,
        "n": "humidity",
        "u": "%RH"
    },
    {
        "v": 262,
        "n": "illuminance",
        "u": "lx"
    },
    {
        "v": 1391,
        "n": "CO2Concentration",
        "u": "ppm"
    },
    {
        "v": 1391,
        "n": "CO2",
        "u": "ppm"
    },
    {
        "v": 3.607,
        "n": "batteryVoltage",
        "u": "V"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

‹ Encoded device commands

  • Protocol: LoRa downlink

  • Description: Set the send interval and reboot, or let device calibrate CO2 Sensor.

  • Multiple commands in one downlink: Yes

Input mapping:

  • Name: interval

    • Value: 5m (translates into → 3E06140000012CFE)

    • Value: 10m (translates into → 3E061400000258FE)

    • Value: 15m (translates into → 3E061400000384FE)

  • Name: calibrateCO2

    • Value: nowWithABC (translates into → 3E031201FE)

    • Value: nowWithoutABC (translates into → 3E031203FE)

    • Value: autoOn (translates into → 3E031200FE)

    • Value: autoOff (translates into → 3E031202FE)

  • Name: nfcLockPrefix

    • Value: set (translates into → 3E0620)

  • Name: nfcLockPincode (raw input)

  • Name: nfcLockPostfix

    • Value: set (translates into → FE)

  • Name: nfcUnlock

    • Value: now (translates into → 3E062000000000FE)

LoRa Geolocation

1M2M ED1608

1M2M ED1608

For the complete 1M2M ED1608 series running default firmware, Full, Basic and Radio-Only.

  • Supported network type(s): KPNLORA

  • Device Specification ID: supported-1m2m-ed1608

  • Device Specification UUID: 0eb7379d-881a-42b2-a4d6-abe1f9fa205c

Decoders
decoderSpecificationUUID
Description

+ LoRa Geolocation data

0e10de71-eed6-49de-8885-5afc9bfc456f

Add data to messages where location could be calculated.

= Raw LoRa payload

b2bcfe4e-b90b-451a-ad2b-ae6c9223d2a1

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

1cef4804-79b0-5fd3-8f59-3919218d1793

Forward the raw LoRa payload and port number without decoding.

› Decoded 1M2M ED16xx payload

4407fc62-a756-49bd-9e91-491c5acfa411

Decoder for all messages from devices with default 1M2M ED16xx firmware.

› Decoded 1M2M ED16xx payload (v2)

7492bd93-668a-5e15-8e28-859c2bc40e9d

Decoder for all messages from devices with default 1M2M ED16xx firmware.

Encoders
encoderSpecificationUUID
Description

= Raw LoRa payload

f1d9c695-8fa5-4626-b55c-0bdc4bddf7dc

Send raw LoRa payload to your device.

+ LoRa Geolocation data

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

payload

string

port

number

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

› Decoded 1M2M ED16xx payload

Decoder for all messages from devices with default 1M2M ED16xx firmware.

Expected SenML records

name
type
unit

AnIn1

number

V

AnIn2

number

V

AnIn3

number

V

AnIn4

number

V

Barom

number

P

BeamX

number

rad

BeamY

number

rad

BeamZ

number

rad

CmdAck

number

Count

number

Count

FixAge

number

GravX

number

GravY

number

GravZ

number

MagX

number

MagY

number

MagZ

number

Max1Amp

number

Max1Freq

number

Hz

Max2Amp

number

Max2Freq

number

Hz

Max3Amp

number

Max3Freq

number

Hz

MaxBaro

number

P

MaxDx

number

MaxDy

number

MaxDz

number

MaxHum

number

%RH

MaxTemp

number

Cel

MinBaro

number

P

MinHum

number

%RH

MinTemp

number

Cel

Mod

number

NumSat

number

Ow0

number

Cel

Ow1

number

Cel

Ow2

number

Cel

Ow3

number

Cel

Ow4

number

Cel

RepMod

number

RunHrs

number

Count

Status

number

Timer

number

Count

VibAmp

number

VibFrq

number

Hz

VibGai

number

batteryLevel

number

%EL

batteryLevel

number

V

distance

number

m

humidity

number

%RH

latitude

number

lat

longitude

number

lon

profile

number

temperature

number

Cel

› Decoded 1M2M ED16xx payload (v2)

Decoder for all messages from devices with default 1M2M ED16xx firmware.

Bugfixes from '› Decoded 1M2M ED16xx payload':

  • latitude and longitude were not always decoded correctly.

  • fixAge was not decoded correctly for values above 60 minutes.

This decoder also decodes Geolocation and Local Gateway data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

AnIn1

number

V

4

AnIn2

number

V

2.564

AnIn3

number

V

0.291

AnIn4

number

V

0

Barom

number

P

200000

batteryLevel

number

%EL

100

batteryLevel

number

V

12

BeamX

number

rad

-1.3864721044917754

BeamY

number

rad

0.90795518347249

BeamZ

number

rad

-1.1533484763028927

CmdAck

number

3

Count

number

Count

55588351

Dig1Al

boolean

true

Dig2Al

boolean

true

distance

number

m

801000

FixAge

number

4170

GeoAl

boolean

true

GravX

number

32

GravY

number

64

GravZ

number

127

GrvRot

boolean

true

humidity

number

%RH

85

latitude

number

lat

47.52521

longitude

number

lon

4.49031

MagRot

boolean

true

MagX

number

-96

MagY

number

50

MagZ

number

17

Max1Amp

number

164

Max1Freq

number

Hz

273

Max2Amp

number

68

Max2Freq

number

Hz

464

Max3Amp

number

20

Max3Freq

number

Hz

654

MaxBaro

number

P

0.00127

MaxDx

number

127

MaxDy

number

64

MaxDz

number

32

MaxHum

number

%RH

85

MaxTemp

number

Cel

0.8

MinBaro

number

P

0.00035

MinHum

number

%RH

69

MinTemp

number

Cel

0.64

Mod

number

1

MotAl

boolean

true

Move

boolean

false

NumSat

number

7

Ow0

number

Cel

42

Ow1

number

Cel

42

Ow2

number

Cel

42

Ow3

number

Cel

42

Ow4

number

Cel

42

profile

number

0

RepMod

number

2

RunHrs

number

Count

291

ShkAl

boolean

true

Start

boolean

true

Status

number

0

Stop

boolean

false

temperature

number

Cel

18.92

Timer

number

Count

69616

VibAl

boolean

true

VibAmp

number

0

VibFrq

number

Hz

0

VibGai

number

4

Vibr

boolean

false

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about Understanding and Interpreting SenML Data.

00 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1482354922,
        "n": "batteryLevel",
        "u": "%EL",
        "v": 100
    },
    {
        "n": "profile",
        "v": 0
    },
    {
        "n": "CmdAck",
        "v": 3
    },
    {
        "n": "FixAge",
        "v": 16
    },
    {
        "n": "NumSat",
        "v": 6
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 47.52521
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 115.02578
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

01 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1482354922,
        "n": "Start",
        "vb": true
    },
    {
        "n": "Move",
        "vb": false
    },
    {
        "n": "Stop",
        "vb": false
    },
    {
        "n": "Vibr",
        "vb": false
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "FixAge",
        "v": 4170
    },
    {
        "n": "NumSat",
        "v": 7
    },
    {
        "n": "latitude",
        "u": "lat",
        "v": 51.90778
    },
    {
        "n": "longitude",
        "u": "lon",
        "v": 4.49031
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

02 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "Status",
        "v": 0
    },
    {
        "n": "Barom",
        "u": "P",
        "v": 200000
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -39.92
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 85
    },
    {
        "n": "BeamX",
        "u": "rad",
        "v": -1.3864721044917754
    },
    {
        "n": "BeamY",
        "u": "rad",
        "v": 0.90795518347249
    },
    {
        "n": "BeamZ",
        "u": "rad",
        "v": -1.1533484763028927
    },
    {
        "n": "VibAmp",
        "v": 0
    },
    {
        "n": "VibFrq",
        "u": "Hz",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

03 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "GrvRot",
        "vb": true
    },
    {
        "n": "MagRot",
        "vb": true
    },
    {
        "n": "GravX",
        "v": 32
    },
    {
        "n": "GravY",
        "v": 64
    },
    {
        "n": "GravZ",
        "v": -128
    },
    {
        "n": "MagX",
        "v": -96
    },
    {
        "n": "MagY",
        "v": 50
    },
    {
        "n": "MagZ",
        "v": 17
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

04 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "GrvRot",
        "vb": true
    },
    {
        "n": "MagRot",
        "vb": true
    },
    {
        "n": "MotAl",
        "vb": true
    },
    {
        "n": "GeoAl",
        "vb": true
    },
    {
        "n": "VibAl",
        "vb": true
    },
    {
        "n": "ShkAl",
        "vb": true
    },
    {
        "n": "Dig1Al",
        "vb": true
    },
    {
        "n": "Dig2Al",
        "vb": true
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": -39.92
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 85
    },
    {
        "n": "Barom",
        "u": "P",
        "v": 200000
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

06 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1482354922,
        "n": "Ow0",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "Ow1",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "Ow2",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "Ow3",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "Ow4",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

08 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "MaxDx",
        "v": 127
    },
    {
        "n": "MaxDy",
        "v": 64
    },
    {
        "n": "MaxDz",
        "v": 32
    },
    {
        "n": "Max1Freq",
        "u": "Hz",
        "v": 273
    },
    {
        "n": "Max1Amp",
        "v": 164
    },
    {
        "n": "Max2Freq",
        "u": "Hz",
        "v": 464
    },
    {
        "n": "Max2Amp",
        "v": 68
    },
    {
        "n": "Max3Freq",
        "u": "Hz",
        "v": 654
    },
    {
        "n": "Max3Amp",
        "v": 20
    },
    {
        "n": "VibGai",
        "v": 4
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

09 payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "batteryLevel",
        "u": "V",
        "v": 12
    },
    {
        "n": "AnIn1",
        "u": "V",
        "v": 4
    },
    {
        "n": "AnIn2",
        "u": "V",
        "v": 2.564
    },
    {
        "n": "AnIn3",
        "u": "V",
        "v": 0.291
    },
    {
        "n": "AnIn4",
        "u": "V",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

0A payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "Status",
        "v": 0
    },
    {
        "n": "Barom",
        "u": "P",
        "v": 200000
    },
    {
        "n": "temperature",
        "u": "Cel",
        "v": 42
    },
    {
        "n": "humidity",
        "u": "%RH",
        "v": 85
    },
    {
        "n": "GravX",
        "v": 32
    },
    {
        "n": "GravY",
        "v": 64
    },
    {
        "n": "GravZ",
        "v": 127
    },
    {
        "n": "VibAmp",
        "v": 0
    },
    {
        "n": "VibFrq",
        "u": "Hz",
        "v": 0
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

0B payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "Status",
        "v": 0
    },
    {
        "n": "MinTemp",
        "u": "Cel",
        "v": 0.64
    },
    {
        "n": "MaxTemp",
        "u": "Cel",
        "v": 0.8
    },
    {
        "n": "MinHum",
        "u": "%RH",
        "v": 69
    },
    {
        "n": "MaxHum",
        "u": "%RH",
        "v": 85
    },
    {
        "n": "MaxBaro",
        "u": "P",
        "v": 0.00127
    },
    {
        "n": "MinBaro",
        "u": "P",
        "v": 0.00035
    },
    {
        "n": "RunHrs",
        "u": "Count",
        "v": 291
    },
    {
        "n": "distance",
        "u": "m",
        "v": 801000
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

0C payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "Mod",
        "v": 1
    },
    {
        "n": "RepMod",
        "v": 2
    },
    {
        "n": "Count",
        "u": "Count",
        "v": 55588351
    },
    {
        "n": "Timer",
        "u": "Count",
        "v": 69616
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

0D payload

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1.482354922E9,
        "n": "Mod",
        "v": 1
    },
    {
        "n": "RepMod",
        "v": 2
    },
    {
        "n": "Count",
        "u": "Count",
        "v": 55588351
    },
    {
        "n": "Timer",
        "u": "Count",
        "v": 69616
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

= Raw LoRa payload encoding

  • Protocol: LoRa downlink

  • Description: Send raw LoRa payload to your device.

  • Multiple commands in one downlink: No

Input mapping:

  • Name: payloadHex (raw input)

Elsys ERS

Specification for Elsys ERS / ERS-lite / ERS-CO2 / ERS-sound.

  • Supported network type(s): KPNLORA

  • Device Specification ID: supported-elsys-ers

  • Device Specification UUID: 9e95ec32-cbd5-4202-b62b-1b8eb9d85a6d

Decoders
decoderSpecificationUUID
Description
Encoders
encoderSpecificationUUID
Description

+ LoRa Geolocation data

Add data to messages where location could be calculated.

= Raw LoRa payload

Forward the raw LoRa payload and port number without decoding.

Expected SenML records

name
type
unit

= Raw LoRa payload (v2)

Forward the raw LoRa payload and port number without decoding.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

› Decoded Elsys ERS v9 payload

Decoder for v9 Elsys ERS payload.

Expected SenML records

name
type
unit

› Decoded Elsys ERS v9 payload (v2)

Decoder for v9 Elsys ERS payload, fixed repeating base name and rename CO2 to CO2Concentration (updated 20-10-2020).

Expected SenML records

name
type
unit

› Decoded Elsys ERS v9 payload (v3)

Decoder for Elsys ERS payloads. Fixes bugs in '› Decoded Elsys ERS v9 payload (v2)':

  • distance was incorrectly converted to dm instead of m. Now the containing value is in meters.

  • soundAverage was decoded incorrectly, resulting in a number that is way too large.

  • soundPeak was decoded incorrectly, resulting in a number that is way too large.

  • The grideye fields were decoded incorrectly, where most results would be too big.

  • Time offsets were added as positive ts instead of negative ts.

  • acceleration values were processed as unsigned values, but they should have been processed as signed values.

This decoder also decodes data.

The following SenML records can be present, amongst others:

name
type
unit
example
description

Example SenML

SenML can be structured in different ways, and we do not guarantee the examples below will look the same as what you will receive on your Destination. To make sure you can handle the SenML optimally, take a look at our documentation about .

Long payload

Short payload

= Raw LoRa payload

  • UUID: 377f294c-ae4b-4249-8c74-9e8fc26209e4

  • Description: Forward the raw LoRa payload and port number without decoding.

  • Exchange: decoder.lora.passthrough.exchange

Expected SenML outputs

Unknown

+ LoRa Geolocation data

95197b23-49c6-4eef-b913-f3691c9c0f5d

Add LoRa Geolocation data to messages where location could be calculated.

= Raw LoRa payload

377f294c-ae4b-4249-8c74-9e8fc26209e4

Forward the raw LoRa payload and port number without decoding.

= Raw LoRa payload (v2)

dd25eca2-76cf-51ae-a3d9-c28352f5717f

Forward the raw LoRa payload and port number without decoding.

› Decoded Elsys ERS v9 payload

997b395e-c008-42a6-8aac-5b41f1796044

Decoder for v9 Elsys ERS payload.

› Decoded Elsys ERS v9 payload (v2)

0dbc06c3-0704-4ab3-8160-682bd470587b

Decoder for v9 Elsys ERS payload, fixed repeating base name and rename CO2 to CO2Concentration (updated 20-10-2020).

› Decoded Elsys ERS v9 payload (v3)

43d4d3cf-e9f9-51d3-bf36-127d9778dce9

Decoder for Elsys ERS payloads. Fixes bugs in '› Decoded Elsys ERS v9 payload (v2)'

= Raw LoRa payload

69e64131-877e-4f25-ac0b-6e04bd61f1ae

Send raw LoRa payload to your device.

payload

string

port

number

payload

string

"4D985C495AC4D8C9682CFD"

The LoRa hex payload

port

number

200

The LoRa port used to send this uplink

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "payload",
        "vs": "4D985C495AC4D8C9682CFD"
    },
    {
        "n": "port",
        "v": 1
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]

CO2

number

ppm

Pulse2

number

count

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

analog1

number

V

analog2

number

V

batteryVoltage

number

V

digitalExternal

boolean

digitalIn2

boolean

distance

number

m

grideye

number

Cel

grideye0-0

number

Cel

grideye0-1

number

Cel

grideye0-2

number

Cel

grideye0-3

number

Cel

grideye0-4

number

Cel

grideye0-5

number

Cel

grideye0-6

number

Cel

grideye0-7

number

Cel

grideye1-0

number

Cel

grideye1-1

number

Cel

grideye1-2

number

Cel

grideye1-3

number

Cel

grideye1-4

number

Cel

grideye1-5

number

Cel

grideye1-6

number

Cel

grideye1-7

number

Cel

grideye2-0

number

Cel

grideye2-1

number

Cel

grideye2-2

number

Cel

grideye2-3

number

Cel

grideye2-4

number

Cel

grideye2-5

number

Cel

grideye2-6

number

Cel

grideye2-7

number

Cel

grideye3-0

number

Cel

grideye3-1

number

Cel

grideye3-2

number

Cel

grideye3-3

number

Cel

grideye3-4

number

Cel

grideye3-5

number

Cel

grideye3-6

number

Cel

grideye3-7

number

Cel

grideye4-0

number

Cel

grideye4-1

number

Cel

grideye4-2

number

Cel

grideye4-3

number

Cel

grideye4-4

number

Cel

grideye4-5

number

Cel

grideye4-6

number

Cel

grideye4-7

number

Cel

grideye5-0

number

Cel

grideye5-1

number

Cel

grideye5-2

number

Cel

grideye5-3

number

Cel

grideye5-4

number

Cel

grideye5-5

number

Cel

grideye5-6

number

Cel

grideye5-7

number

Cel

grideye6-0

number

Cel

grideye6-1

number

Cel

grideye6-2

number

Cel

grideye6-3

number

Cel

grideye6-4

number

Cel

grideye6-5

number

Cel

grideye6-6

number

Cel

grideye6-7

number

Cel

grideye7-0

number

Cel

grideye7-1

number

Cel

grideye7-2

number

Cel

grideye7-3

number

Cel

grideye7-4

number

Cel

grideye7-5

number

Cel

grideye7-6

number

Cel

grideye7-7

number

Cel

humidity

number

%RH

illuminance

number

lx

lattitude

number

lat

longitude

number

lon

motion

number

count

occupancy

number

count

pressure

number

Pa

pulse

number

count

pulseAbsolute

number

count

pulseAbsolute2

number

count

soundAverage

number

dB

soundPeak

number

dB

temperature

number

Cel

temperatureExternal1

number

Cel

temperatureExternal2

number

Cel

temperatureIRExternal

number

Cel

temperatureIRInternal

number

Cel

waterLeak

number

count

CO2Concentration

number

ppm

Pulse2

number

count

accelerationX

number

m/s2

accelerationY

number

m/s2

accelerationZ

number

m/s2

analog1

number

V

analog2

number

V

batteryVoltage

number

V

digitalExternal

boolean

digitalIn2

boolean

distance

number

m

grideye

number

Cel

grideye0-0

number

Cel

grideye0-1

number

Cel

grideye0-2

number

Cel

grideye0-3

number

Cel

grideye0-4

number

Cel

grideye0-5

number

Cel

grideye0-6

number

Cel

grideye0-7

number

Cel

grideye1-0

number

Cel

grideye1-1

number

Cel

grideye1-2

number

Cel

grideye1-3

number

Cel

grideye1-4

number

Cel

grideye1-5

number

Cel

grideye1-6

number

Cel

grideye1-7

number

Cel

grideye2-0

number

Cel

grideye2-1

number

Cel

grideye2-2

number

Cel

grideye2-3

number

Cel

grideye2-4

number

Cel

grideye2-5

number

Cel

grideye2-6

number

Cel

grideye2-7

number

Cel

grideye3-0

number

Cel

grideye3-1

number

Cel

grideye3-2

number

Cel

grideye3-3

number

Cel

grideye3-4

number

Cel

grideye3-5

number

Cel

grideye3-6

number

Cel

grideye3-7

number

Cel

grideye4-0

number

Cel

grideye4-1

number

Cel

grideye4-2

number

Cel

grideye4-3

number

Cel

grideye4-4

number

Cel

grideye4-5

number

Cel

grideye4-6

number

Cel

grideye4-7

number

Cel

grideye5-0

number

Cel

grideye5-1

number

Cel

grideye5-2

number

Cel

grideye5-3

number

Cel

grideye5-4

number

Cel

grideye5-5

number

Cel

grideye5-6

number

Cel

grideye5-7

number

Cel

grideye6-0

number

Cel

grideye6-1

number

Cel

grideye6-2

number

Cel

grideye6-3

number

Cel

grideye6-4

number

Cel

grideye6-5

number

Cel

grideye6-6

number

Cel

grideye6-7

number

Cel

grideye7-0

number

Cel

grideye7-1

number

Cel

grideye7-2

number

Cel

grideye7-3

number

Cel

grideye7-4

number

Cel

grideye7-5

number

Cel

grideye7-6

number

Cel

grideye7-7

number

Cel

humidity

number

%RH

illuminance

number

lx

lattitude

number

lat

longitude

number

lon

motion

number

count

occupancy

number

count

pressure

number

Pa

pulse

number

count

pulseAbsolute

number

count

pulseAbsolute2

number

count

soundAverage

number

dB

soundPeak

number

dB

temperature

number

Cel

temperatureExternal1

number

Cel

temperatureExternal2

number

Cel

temperatureIRExternal

number

Cel

temperatureIRInternal

number

Cel

waterLeak

number

count

accelerationX

number

m/s2

0.31132222222222217

accelerationY

number

m/s2

15.566111111111107

accelerationZ

number

m/s2

13.231194444444442

analog1

number

V

35.124

External analog input voltage

analog2

number

V

49.287

batteryVoltage

number

V

3.596

CO2Concentration

number

ppm

638

CO2

number

ppm

638

contains the same value as CO2Concentration and is included for backwards compatibility

digitalExternal

boolean

false

digitalIn2

boolean

false

distance

number

m

261.42

grideye0-0

number

Cel

21.234

All the grideye fields combined make up the room infrared temperature.

grideye0-1

number

Cel

grideye0-2

number

Cel

grideye0-3

number

Cel

grideye0-4

number

Cel

grideye0-5

number

Cel

grideye0-6

number

Cel

grideye0-7

number

Cel

grideye1-0

number

Cel

grideye1-1

number

Cel

grideye1-2

number

Cel

grideye1-3

number

Cel

grideye1-4

number

Cel

grideye1-5

number

Cel

grideye1-6

number

Cel

grideye1-7

number

Cel

grideye2-0

number

Cel

grideye2-1

number

Cel

grideye2-2

number

Cel

grideye2-3

number

Cel

grideye2-4

number

Cel

grideye2-5

number

Cel

grideye2-6

number

Cel

grideye2-7

number

Cel

grideye3-0

number

Cel

grideye3-1

number

Cel

grideye3-2

number

Cel

grideye3-3

number

Cel

grideye3-4

number

Cel

grideye3-5

number

Cel

grideye3-6

number

Cel

grideye3-7

number

Cel

grideye4-0

number

Cel

grideye4-1

number

Cel

grideye4-2

number

Cel

grideye4-3

number

Cel

grideye4-4

number

Cel

grideye4-5

number

Cel

grideye4-6

number

Cel

grideye4-7

number

Cel

grideye5-0

number

Cel

grideye5-1

number

Cel

grideye5-2

number

Cel

grideye5-3

number

Cel

grideye5-4

number

Cel

grideye5-5

number

Cel

grideye5-6

number

Cel

grideye5-7

number

Cel

grideye6-0

number

Cel

grideye6-1

number

Cel

grideye6-2

number

Cel

grideye6-3

number

Cel

grideye6-4

number

Cel

grideye6-5

number

Cel

grideye6-6

number

Cel

grideye6-7

number

Cel

grideye7-0

number

Cel

grideye7-1

number

Cel

grideye7-2

number

Cel

grideye7-3

number

Cel

grideye7-4

number

Cel

grideye7-5

number

Cel

grideye7-6

number

Cel

grideye7-7

number

Cel

humidity

number

%RH

34

illuminance

number

lx

56273

motion

number

count

5

Number of detected PIR motions

occupancy

number

count

0

0: No detection 1: Entering/leaving 2:Occupied

pressure

number

Pa

102900

pulse

number

count

Relative value, reset every transmission

Pulse2

number

count

Relative value, reset every transmission

pulseAbsolute

number

count

Absolute value, never reset

pulseAbsolute2

number

count

Absolute value, never reset

soundAverage

number

dB

42

soundPeak

number

dB

80

temperature

number

Cel

23.5

temperatureExternal1

number

Cel

temperatureExternal2

number

Cel

temperatureIRExternal

number

Cel

24.9

temperatureIRInternal

number

Cel

23.3

waterLeak

number

count

[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1693136532.83,
        "n": "temperature",
        "t": -16,
        "u": "Cel",
        "v": 21
    },
    {
        "n": "humidity",
        "t": -10,
        "u": "%RH",
        "v": 32
    },
    {
        "n": "accelerationX",
        "u": "m/s2",
        "v": 0.15566111111111108
    },
    {
        "n": "accelerationY",
        "u": "m/s2",
        "v": 0.31132222222222217
    },
    {
        "n": "accelerationZ",
        "u": "m/s2",
        "v": 0.46698333333333325
    },
    {
        "n": "illuminance",
        "u": "lx",
        "v": 354
    },
    {
        "n": "CO2Concentration",
        "u": "ppm",
        "v": 478
    },
    {
        "n": "CO2",
        "u": "ppm",
        "v": 478
    },
    {
        "n": "batteryVoltage",
        "u": "V",
        "v": 3.245
    },
    {
        "n": "analog1",
        "u": "V",
        "v": 57.071
    },
    {
        "n": "pulse",
        "u": "count",
        "v": 61438
    },
    {
        "n": "pulseAbsolute",
        "u": "count",
        "v": 2144202751
    },
    {
        "n": "temperatureExternal1",
        "u": "Cel",
        "v": 21.7
    },
    {
        "n": "digitalExternal",
        "vb": true
    },
    {
        "n": "distance",
        "u": "m",
        "v": 4.643
    },
    {
        "n": "motion",
        "u": "count",
        "v": 255
    },
    {
        "n": "temperatureIRInternal",
        "u": "Cel",
        "v": 24.5
    },
    {
        "n": "temperatureIRExternal",
        "u": "Cel",
        "v": 23
    },
    {
        "n": "occupancy",
        "u": "count",
        "v": 2
    },
    {
        "n": "waterLeak",
        "u": "count",
        "v": 0
    },
    {
        "n": "grideye0-0",
        "u": "Cel",
        "v": 16
    },
    {
        "n": "grideye1-0",
        "u": "Cel",
        "v": 16.1
    },
    {
        "n": "grideye2-0",
        "u": "Cel",
        "v": 16.2
    },
    {
        "n": "grideye3-0",
        "u": "Cel",
        "v": 16.3
    },
    {
        "n": "grideye4-0",
        "u": "Cel",
        "v": 16.4
    },
    {
        "n": "grideye5-0",
        "u": "Cel",
        "v": 16.5
    },
    {
        "n": "grideye6-0",
        "u": "Cel",
        "v": 16.6
    },
    {
        "n": "grideye7-0",
        "u": "Cel",
        "v": 16.7
    },
    {
        "n": "grideye0-1",
        "u": "Cel",
        "v": 16.8
    },
    {
        "n": "grideye1-1",
        "u": "Cel",
        "v": 16.9
    },
    {
        "n": "grideye2-1",
        "u": "Cel",
        "v": 17
    },
    {
        "n": "grideye3-1",
        "u": "Cel",
        "v": 17.1
    },
    {
        "n": "grideye4-1",
        "u": "Cel",
        "v": 17.2
    },
    {
        "n": "grideye5-1",
        "u": "Cel",
        "v": 17.3
    },
    {
        "n": "grideye6-1",
        "u": "Cel",
        "v": 17.4
    },
    {
        "n": "grideye7-1",
        "u": "Cel",
        "v": 17.5
    },
    {
        "n": "grideye0-2",
        "u": "Cel",
        "v": 17.6
    },
    {
        "n": "grideye1-2",
        "u": "Cel",
        "v": 17.7
    },
    {
        "n": "grideye2-2",
        "u": "Cel",
        "v": 17.8
    },
    {
        "n": "grideye3-2",
        "u": "Cel",
        "v": 17.9
    },
    {
        "n": "grideye4-2",
        "u": "Cel",
        "v": 18
    },
    {
        "n": "grideye5-2",
        "u": "Cel",
        "v": 18.1
    },
    {
        "n": "grideye6-2",
        "u": "Cel",
        "v": 18.2
    },
    {
        "n": "grideye7-2",
        "u": "Cel",
        "v": 18.3
    },
    {
        "n": "grideye0-3",
        "u": "Cel",
        "v": 18.4
    },
    {
        "n": "grideye1-3",
        "u": "Cel",
        "v": 18.5
    },
    {
        "n": "grideye2-3",
        "u": "Cel",
        "v": 18.6
    },
    {
        "n": "grideye3-3",
        "u": "Cel",
        "v": 18.7
    },
    {
        "n": "grideye4-3",
        "u": "Cel",
        "v": 18.8
    },
    {
        "n": "grideye5-3",
        "u": "Cel",
        "v": 18.9
    },
    {
        "n": "grideye6-3",
        "u": "Cel",
        "v": 19
    },
    {
        "n": "grideye7-3",
        "u": "Cel",
        "v": 19.1
    },
    {
        "n": "grideye0-4",
        "u": "Cel",
        "v": 19.2
    },
    {
        "n": "grideye1-4",
        "u": "Cel",
        "v": 19.3
    },
    {
        "n": "grideye2-4",
        "u": "Cel",
        "v": 19.4
    },
    {
        "n": "grideye3-4",
        "u": "Cel",
        "v": 19.5
    },
    {
        "n": "grideye4-4",
        "u": "Cel",
        "v": 19.6
    },
    {
        "n": "grideye5-4",
        "u": "Cel",
        "v": 19.7
    },
    {
        "n": "grideye6-4",
        "u": "Cel",
        "v": 19.8
    },
    {
        "n": "grideye7-4",
        "u": "Cel",
        "v": 19.9
    },
    {
        "n": "grideye0-5",
        "u": "Cel",
        "v": 20
    },
    {
        "n": "grideye1-5",
        "u": "Cel",
        "v": 20.1
    },
    {
        "n": "grideye2-5",
        "u": "Cel",
        "v": 20.2
    },
    {
        "n": "grideye3-5",
        "u": "Cel",
        "v": 20.3
    },
    {
        "n": "grideye4-5",
        "u": "Cel",
        "v": 20.4
    },
    {
        "n": "grideye5-5",
        "u": "Cel",
        "v": 20.5
    },
    {
        "n": "grideye6-5",
        "u": "Cel",
        "v": 20.6
    },
    {
        "n": "grideye7-5",
        "u": "Cel",
        "v": 20.7
    },
    {
        "n": "grideye0-6",
        "u": "Cel",
        "v": 20.8
    },
    {
        "n": "grideye1-6",
        "u": "Cel",
        "v": 20.9
    },
    {
        "n": "grideye2-6",
        "u": "Cel",
        "v": 21
    },
    {
        "n": "grideye3-6",
        "u": "Cel",
        "v": 21.1
    },
    {
        "n": "grideye4-6",
        "u": "Cel",
        "v": 21.2
    },
    {
        "n": "grideye5-6",
        "u": "Cel",
        "v": 21.3
    },
    {
        "n": "grideye6-6",
        "u": "Cel",
        "v": 21.4
    },
    {
        "n": "grideye7-6",
        "u": "Cel",
        "v": 21.5
    },
    {
        "n": "grideye0-7",
        "u": "Cel",
        "v": 21.6
    },
    {
        "n": "grideye1-7",
        "u": "Cel",
        "v": 21.7
    },
    {
        "n": "grideye2-7",
        "u": "Cel",
        "v": 21.8
    },
    {
        "n": "grideye3-7",
        "u": "Cel",
        "v": 21.9
    },
    {
        "n": "grideye4-7",
        "u": "Cel",
        "v": 22
    },
    {
        "n": "grideye5-7",
        "u": "Cel",
        "v": 22.1
    },
    {
        "n": "grideye6-7",
        "u": "Cel",
        "v": 22.2
    },
    {
        "n": "grideye7-7",
        "u": "Cel",
        "v": 22.3
    },
    {
        "n": "pressure",
        "u": "Pa",
        "v": 27054496
    },
    {
        "n": "soundPeak",
        "u": "dB",
        "v": 64
    },
    {
        "n": "soundAverage",
        "u": "dB",
        "v": 40
    },
    {
        "n": "Pulse2",
        "u": "count",
        "v": 235
    },
    {
        "n": "pulseAbsolute2",
        "u": "count",
        "v": 122
    },
    {
        "n": "analog2",
        "u": "V",
        "v": 17.767
    },
    {
        "n": "temperatureExternal2",
        "u": "Cel",
        "v": 28.1
    },
    {
        "n": "digitalIn2",
        "vb": true
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
[
    {
        "bn": "urn:dev:DEVEUI:0123456789012345:",
        "bt": 1704798016.891,
        "v": 17,
        "n": "temperature",
        "u": "Cel"
    },
    {
        "v": 32,
        "n": "humidity",
        "u": "%RH"
    },
    {
        "v": 262,
        "n": "illuminance",
        "u": "lx"
    },
    {
        "v": 1391,
        "n": "CO2Concentration",
        "u": "ppm"
    },
    {
        "v": 1391,
        "n": "CO2",
        "u": "ppm"
    },
    {
        "v": 3.607,
        "n": "batteryVoltage",
        "u": "V"
    },
    {
        "n": "timeOrigin",
        "vs": "NETWORK"
    }
]
LoRa Geolocation
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Geolocation and Local Gateway
Understanding and Interpreting SenML Data
Elsys ERS
LoRa Geolocation