Optional services

In addition to the standard and built-in applications that come with Cumulocity, various additional applications are provided which you may subscribe to, i.e. integrated agents for several device types.

Cloud Fieldbus

Cloud Fieldbus is a Cumulocity application with the ability to collect data from fieldbus devices and remotely manage them. This section describes how to

It is supported out of the box by the following terminals:

OPC UA support is implemented in Java and runs on any system running JRE7 (Java Runtime Environment 7) or newer.

If you want to support Cloud Fieldbus with your terminal, please contact info@cumulocity.com for more information.

Connecting Fieldbus devices

For the following instructions, we assume you have a Cloud Fieldbus terminal available and it is registered as a device in your Cumulocity tenant. To register a terminal with Cumulocity, follow the instructions provided with the terminal.

Connecting Modbus/RTU devices

To connect a Modbus/RTU device:

  1. Physically wire the Modbus/RTU device through RS/485 or RS/232 to the terminal.
  2. Give the device a unique Modbus address according to the instructions provided with the Modbus device (e.g. by setting a jumper on the device).
  3. Check the serial communication settings of the device according to the instructions provided with the device (i.e. baud rates and communication protocol). These have to match with all devices on the bus.
  4. In the Device Management application, click All devices in the Devices menu in the navigator. In the device list, select the terminal and switch to the Modbus tab.
  5. Change the communication settings shown in the section Serial communication to match the settings on the bus, if needed.
  6. Change the transmit rate and the polling rate according to your requirements. The polling rate is the frequency at which the Modbus devices are polled for changes. The transmit rate is the frequency where measurements are sent to Cumulocity.
  7. Click Save changes if you made changes.
    Add Modbus device
  8. To start communication between the terminal and the Modbus device, click Add new device.
  9. Enter a name for the device and select the type of the device from the drop-down field. To add new device types, see Configuring Fieldbus device types below. Set the Modbus address of the connected device.
  10. Click Add. Cumulocity will now send a notification to the Modbus terminal that a new device is ready to be managed. This may take a few seconds.

After completion, a new child device has been added to the terminal and can now be managed. You can click on the name of the device in the table to navigate to the device. If you have not yet added Modbus devices to the terminal, you may have to reload your browser window to make the Child Devices tab visible.

Connecting Modbus/TCP devices

To connect a Modbus/TCP device:

  1. Make sure that the Modbus/TCP device is connected to the terminal, i.e. directly through an Ethernet cable or through a switch. If you are using a Modbus gateway, configure the gateway in a way it can communicate with the Modbus devices behind the gateway.
  2. Check the network settings of the device using the instructions provided with the device.
  3. In the Device Management application, click All devices in the Devices menu in the navigator. In the device list, select the terminal and switch to the Network tab. Verify that the LAN settings of the terminal match the settings of the device so that TCP communication can be established.
  4. Switch to the Modbus tab.
  5. Change the transmit rate and the polling rate according to your requirements. The polling rate is the frequency at which the Modbus devices are polled for changes. The transmit rate is the frequency at which measurements are sent to Cumulocity.
  6. Click Save changes if you made changes.

Adding child devices

  1. To start communication between the terminal and the Modbus device, click Add new device.
  2. Enter a name for the device and select the type of the device from the dropdown field. To add new device types, see Configuring Fieldbus device types below. Set the Modbus address and the IP address of the connected device.
  3. Click Add.

Cumulocity will now send a notification to the Modbus terminal that a new device is ready to be managed. This may take a few seconds.

Add Modbus device

We assume that all Modbus/TCP communication uses the standard Modbus/TCP port 502. On the NTC-6200, the port to be used can be configured through the variable "service.cumulocity.plugin.lua__modbus.port" using, for example, Device Shell or the local web user interface of the device.

Connecting CAN devices

To connect a CAN device:

  1. Physically wire the CAN device through to the terminal.
  2. Check the serial communication baud rate of the device according to the instructions provided with the device. These have to match all devices on the bus.
  3. In the Device Management application, click All devices in the Devices menu in the navigator. In the device list, select the terminal and switch to the CAN bus tab.
  4. Change the baud rate setting shown in the section CAN bus communication to match the settings on the bus, if needed.
  5. Change the transmit rate according to your requirements. The transmit rate is the frequency where measurements are sent to Cumulocity.
  6. Click Save changes if you made changes.

Adding child devices

  1. To start communication between the terminal and the CAN device, click Add CAN device.
  2. Enter a name for the device and select the type of the device from the dropdown field. To add new device types, see Configuring Fieldbus device types below.
  3. Click Add.

Cumulocity will now send a notification to the Fieldbus terminal that a new device is ready to be managed. This may take a few seconds.

After completion, a new child device has been added to the terminal and can now be managed. You can click on the name of the device in the table to navigate to the device. If you have not yet added Fieldbus devices to the terminal, you may have to reload your browser window to make the "Child Devices" tab visible.

Add CAN device

Connecting OPC UA servers

To connect an OPC UA server to Cumulocity, you need a gateway or industrial PC running the Cumulocity OPC UA agent.

  1. Make sure that the OPC UA server is connected to the gateway or PC, i.e. directly through an Ethernet cable or through a switch.
  2. Check the network settings of the gateway and make sure that the OPC UA server is reachable from the gateway.
  3. In the Device Management application, click All devices in the Devices menu in the navigator. In the device list, select the gateway and switch to the OPCUA tab.
  4. In the URL field, enter the URL of the OPC UA server as seen from the gateway.
  5. Set the username and password to access the OPC UA server.
  6. Change the transmit rate and the polling rate according to your requirements. The transmit rate is the frequency at which measurements are sent to Cumulocity. The polling rate is the frequency at which the OPC UA server polls for changes. Note that not all OPC UA servers support setting a polling rate. In such cases, the OPC UA server sends data usually whenever it changes.
  7. Click Save changes if you made changes.

Adding child devices

  1. To start communication between the gateway and the OPC UA server, click Add OPCUA device. An OPC UA server may host many devices as part of its object model.
  2. Enter a name for the OPC UA device.
  3. Enter the absolute Browse path of the OPC UA device. The browse path of the device is configured on the OPC UA server and represents the "root" of the OPC UA device in the OPC UA server object model.
  4. Select the type of the child device from the drop-down box. To add new device types, see Configuring Fieldbus device types below.
  5. Click Add.

Cumulocity will now send a notification to the OPC UA agent that a new device is ready to be managed. This may take a few seconds.

After completion, a new child device has been added to the gateway and can now be managed. You can click on the name of the device in the table to navigate to the device.

Add OPCUA device

Connecting Profibus devices

Connecting Profibus differs slightly from the regular Plug & Play approach of Cloud Fieldbus. The gateway device acts as slave on the Profibus so it can easily be integrated into existing infrastructure. This means that Profibus data must be actively sent to the gateway though. Typically this is done by programming a PLC to actively send information to the gateway via it’s configured Profibus slave address.

  1. Physically wire the Profibus device to the terminal.
  2. In the Device Management application, click All devices in the Devices menu in the navigator. In the device list, select the terminal and switch to the "Profibus" tab.

    Profibus settings

  3. The baud rate is automatically detected by the gateway and is just being displayed here.
  4. Change the transmit rate according to your requirements. The transmit rate is the interval at which measurements are sent to Cumulocity.
  5. Set the slave address of the terminal.
  6. Configure your Profibus Master device to communicate to that slave address. To do so, refer to the gateway manual (e.g. SmartBox DP).
  7. Click Save to update the gateway with the new settings.

Adding child devices

  1. To start communication between the gateway and the Profibus device, click Add Profibus device.
  2. Enter a name for the new device.
  3. Select the type of the child device from the drop-down box. To add new device types, see Configuring Fieldbus device types below.
  4. Click Add to confirm and notify the gateway.

Add device

Now A child device will be created containing the data configured in the selected device type.

Cumulocity will notify the gateway to send data for the newly created child device.

Managing Fieldbus devices

Once connected, you can now manage your device. Switch to the Child devices tab of a device to list the connected Fieldbus devices and navigate to a Fieldbus device. Depending on the capabilities of the device and its configuration in Cumulocity, you can:

Collecting measurements

If the device type of the Fieldbus device is configured to collect measurements, these will be visible in the Measurements tab. They will also be available for usage in the Data Explorer and in Dashboard widgets.

Data is collected according to the interval specified in the "transmit rate" property of the terminal as described above. To optimize the data traffic, data that is exactly the same as collected previously may not be sent again.

Fieldbus measurements

Monitoring alarms

If the device type of the Fieldbus device is configured to send alarms, these will be visible in the Alarms tab and usable in widgets. To determine the alarm status, the Fieldbus devices are monitored for changes according to the "polling rate" setting of the terminal. If a particular coil or register is non-zero, an alarm will be raised. If the value goes back to zero, the alarm will be cleared.

Fieldbus alarms

Logging events

Similar to alarms, changes in Fieldbus devices can be monitored and logged as events. Each time, the value of the monitored coil or register changes, an event is created. You can see the events in the "Events" tab of the device or use them in widgets. You can inspect the new value of the monitored coil or register by clicking on the event and unfolding the event details.

Fieldbus events

Monitor a device status

The status of devices can be monitored in real time using dashboard widgets in the Cockpit application. Navigate to the Cockpit application, create a dashboard or report, and add widgets as described in the Cockpit section in the User guide. The Cloud Fieldbus has two new widgets: The "Fieldbus Device" widget and the "SCADA" widget.

Monitoring device status using the Fieldbus Device widget

The Fieldbus Device widget provides you with a tabular display of the status of a device. The status of the device can also be modified through the widget.

To use the Fieldbus Device widget, follow these steps:

  1. Select a dashboard and click Add widget in the top menu bar.
  2. Select the Fieldbus Device Widget and edit the title of the widget.
  3. Choose the device that should be shown in the widget in the Target assets or devices section.
  4. Select the coils and registers that should be shown on the widget.

Adding the Fieldbus Device Widget

In the widget, the selected coils and registers are grouped into display categories as configured in the device type. The Fieldbus Device Widget updates automatically as soon as there is new data available. You do not need to click on reload.

Use the Fieldbus Device Widget

Registers and coils that can be changed are represented by active widgets. For example, in the screenshot above, the "Master switch" coil and the "Mode" register are editable. If you click a switch, an operation to change the corresponding coil or register is sent to the terminal. Similar, if you change a value and click Set, an operation is created. The terminal will then carry out the configuration change on the device, as requested through the operation. While the operation is being processed, a progress indicator is shown.

Monitoring status using the SCADA widget

The SCADA widget provides you with a graphic representation of the status of a device.

To use the SCADA widget, follow these steps:

  1. Select a dashboard and click Add widget in the top menu bar.
  2. Select the SCADA widget and edit the title of the widget.
  3. Choose the device that should be shown in the widget in the Target assets or devices section.
  4. Upload an SVG file with the graphic representation of the device. SVG files are vector graphics that have to be specifically prepared with placeholders for the status information. See Preparing SVG files for the SCADA widget below.
  5. Assign placeholders to devices. Note that multiple devices can be taken as source.
  6. You now need to assign each placeholder to a property of the device. Hover over each placeholder and select Assign device property or Assign fieldbus property. A dialog box comes up, in which you can choose basic device properties or fieldbus properties (i.e. status coils and registers). Select the desired property and click Select.
  7. After assigning all placeholders, a preview of the widget with the current values of the properties is shown. Click Save to place the widget on the dashboard.

Adding the SCADA Widget

Preparing SVG files for the SCADA widget

The SCADA widgets inspect uploaded SVG files for placeholders. These placeholders are replaced by actual values from devices. Placeholders have a specific syntax and can be used anywhere in the SVG file. To add a placeholder, enter the name of the placeholder in double curly braces using your design application or a text editor.

When creating svg files, we recommend you to use "https://boxy-svg.com/". It is easy to use, quality chrome extension.

<text class="text" xt-anchor="middle" x="100" y="236.982125" width="200" ...>
    {{batteryValue}}
</text>

Configuring Fieldbus device types

New Fieldbus device types can be set up in the Device database page which you open from the Device Types menu in the navigator.

Click New in the top menu bar. In the Device type field, select the protocol of your device and enter a name for it.

Now you can start adding coils and register definitions to the device type, depending on the selected protocol (see the descriptions below).

Device Database

Configuring Modbus data

Adding a coil definition

Click Add at the top right of the Coils (discrete inputs) section, to add a coil definition. This will open a dialog to specify the coil. Enter the following information:

  1. Enter the name of the coil as being displayed in the user interface.
  2. Optionally, enter the display category to structure your data in widgets.
  3. Enter the number of the coil in the Modbus device.
  4. Select the Show status checkbox if you want to show the coil's current value in the Fieldbus Device Widget. In this case, you can enter the text that the Fieldbus Device Widget should show for unset and set coils.
  5. Select the Update status checkbox if you want to be able to edit the coil from the Fieldbus Device Widget.
  6. Select the Raise alarm checkbox if an alarm should be raised when the coil is set in the device. In this case, you can specify the type of the alarm that is raised, its text and its severity. Note that there can only be one alarm active of a particular type for a particular device.
  7. Select the Send event checkbox if an event should be generated each time the value of the coil changes. If Send event is selected, you can specify the type of event and the text in the event.
  8. Click OK to finish editing the coil.

Add coil

The same functions are available for discrete inputs. However, it is not possible to update the status of a discrete input.

Adding a register definition

Click Add at the top right of the Holding registers section, to add a register definition. This opens a dialog to enter the details of the register definition:

  1. Enter the name of the register being displayed in the user interface.
  2. Optionally, enter the display category to structure your data in widgets.
  3. Enter the number of the register in the Modbus device. You can indicate a subset of bits to be used from a register by providing a start bit and a number of bits. This allows you to split a physical Modbus register into a set of "logical registers".
  4. To scale the integer value read from the Modbus device, you can enter a multiplier, a divisor and a number of decimal places. The register value is first multiplied by the "multiplier", then divided by the "divisor" and then shifted by the number of decimal places. Note, that the terminal may use integer arithmetic to calculate values sent to Cumulocity. For example, if you use a divisor of one and one decimal place, a value of 231 read from the terminal will be sent as 23.1 to Cumulocity. If you use a divisor of ten and no decimal places, the terminal may send 23 to Cumulocity (depending on its implementation).
  5. Indicate the unit of the data, for example, "C" for temperature values.
  6. Select the Signed checkbox if the register value should be interpreted as signed number.
  7. Select the Enumeration type checkbox if the register value should be interpreted as enumeration of discrete values. If Enumeration type is selected, you can click Add value to add mappings from a discrete value to a text to be shown for this value in the widget. Click Remove value to remove the mapping.
  8. Select the Show status checkbox if you want to show the current value of the register in the Fieldbus Device Widget.
  9. Select the Update status checkbox if you want to be able to edit the register from the Fieldbus Device Widget. If Update status is selected, two additional fields Minimum and Maximum appear. Using these fields, you can constrain numerical values entered in the widget.
  10. Select the Send measurement checkbox if you want the values of the register to be regularly collected according to the transmit interval (see above). In this case, add a measurement type and a series to be used. For each measurement type, a chart is created in the Measurements tab. For each series, a graph is created in the chart. The unit is used for labelling the measurement in the chart and in the Fieldbus Device Widget.
  11. Select the Raise alarm checkbox if an alarm should be raised when the register is not zero in the device measurement. In this case, you can specify the type of the alarm raised, its text and its severity. Note, that there can only be one alarm active of a particular type for a particular device.
  12. Select the Send event checkbox if an event should be generated each time the value of the register changes. If Send event is selected, you can specify the type of event and the text in the event.
  13. Click OK to save your settings.

Add register

In the Options section, select the checkbox Use server time to create the time stamps for data on the server instead of on the terminal. If you need to support buffering of data on the terminal, leave this checkbox clear.

Finally, click Save to save your settings.

If you edit a device type that is currently in use, you may need to

  • restart the terminals that use the device type,
  • reconfigure dashboards and widgets that use the device type.

Configuring CAN bus data

CAN device types can be configured in a very similar way as Modbus device types. For more information, see Configuring Modbus data above. The differences are:

  • Holding registers are used to describe the different pieces of data inside CAN messages.
  • Enter the CAN message ID of the specific message the data should be extracted from. Use a hexadecimal number for the message ID.
  • Conversion of values is extended by an offset parameter. This will be added or substracted from the register value, depending on its sign. The offset calculation is done after applying multiplier and divisor, and before performing decimal shifting.

Add CAN register

Configuring OPC UA data

OPC UA device types can be configured in a very similar way as Modbus device types. For more information, see Configuring Modbus data above.

The main difference is how data is addressed. OPC UA servers provide a hierarchical object model of connected nodes. The nodes are addressed by the browse path from the root of the object model to the respective node.

To simplify configuration, the browse path is split into two parts in Cloud Fieldbus:

  • From the root to the OPC UA device (configured above).
  • From the OPC UA device to a node with data of that device.

When you click Add, enter the second part of the path into the ** field as shown in the image below. Note that the OPC UA agent currently only supports nodes of type "Variable". The description of the paths should be either provided with your OPC UA server or with your devices.

Add OPCUA register

Configuring Profibus data

To configure a Profibus device type, select "Profibus" as device type from the dropdown list and enter a name for it.

In the Register section, click Add at the right to add one or more register definitions as described exemplarily for Modbus devices in Adding a register definition above.

In the Options section, select the checkbox Use server time to create the time stamps for data on the server instead of on the terminal. If you need to support buffering of data on the terminal, leave this checkbox clear.

Finally, click Save to save your settings.

If you edit a device type that is currently in use, you may need to

  • restart the terminals that use the device type,
  • reconfigure dashboards and widgets that use the device type.

Configuring CANopen data

There are two ways to create a new device type. Either manually from scratch via the “New” operation or via import of an EDS file for the corresponding device.

Manually creating a new device type from scratch

Navigate to the Device database page and click New. The following window will open:

New device type

Select “CANopen” as fieldbus type and enter a name for your device type. Specific to CANopen is the CANopen device type field which accepts a hex number.

In the Variables section, you determine the CANopen variables. Variables inside the “Object Dictionary”(OD) of the CANopen device can be accessed later by adding the variables to the device type definition. Via the Add button at the right of the Variables section, new variables can be configured.

New variable

The following fields can be observed:

  • Name: The name of the variable.
  • Display category: This field is used to group variables into sections in the visualization.
  • Index: Index of the variable in the OD of the device.
  • Sub-index: Sub-Index of the variable in the OD of the device.
  • Data type: The type of the variable (e.g. boolean, unsigned).
  • Access type: E.g. read only, write only, etc.
  • Unit: Logical unit of the variable.
  • Show status: Defines how the variable is shown in the inventory.
  • Update status: Defines how the variable is updated in Cumulocity.
  • Send measurement: Create a measurement when the value of the variable is changed.
  • Raise alarm: Create an alarm if a given mask matches with the value of the variable ((value & mask) == mask). Therefore, it is possible to raise alarms on single bits of e.g. an Unsigned8 variable, like the Error-Register.
  • Raise event: Create an event, whenever the value of the variable is changed.

After adding variables to the new device type, they are listed in the Variables section of the device type. All variables are grouped by the given display category, i.e. variables with same category are grouped together.

category view

After completing your configuration, click Save to save your settings. The device type can be used now to add CANopen devices to the platform. The device type can be updated after creation.

Importing a device type

To import a new device type, see the Exporting and importing device types section.

After importing the EDS file, all variables defined in the file are listed in the Variables section of the device type. The user can then enrich the imported variable configurations by opening the configuration dialog for each variable (e.g. the missing display category can be set or mappings can be defined).

Configuring CANopen device data

To configure CANopen device data navigate to the desired device and switch to the CANopen tab.

In the CANopen communication section, the following parameters can be configured:

  • Baud rate: This field must match with the used baud rate in the CANopen network.
  • Polling rate: The rate at which the agent sends requests to the CANopen devices. to determine changes in variables.
  • Transmit rate: The transfer rate, i.e. the rate at which the terminal sends regular measurements to Cumulocity.

In the CANopen section, up to 127 CANopen devices can be added to the gateway as child devices by giving the following parameters:

  • Name: The name of the device used for visualization.
  • Device type: The device type of the CANopen device. The user can select from a list of all CANopen device types which are stored in the device database.
  • Node ID: The CANopen node ID of the device. It is used for addressing the device inside the CANopen network.

The device type and node ID need to match with the real CANopen device, otherwise setting up the communication is not possible or wrong values will be transmitted.

Exporting and importing device types

To manage device types more conveniently, you can export device types to a file once they are edited in the user interface. The file can be re-imported to set up other Cumulocity accounts easily or to restore the types from a backup. The import functionality also supports importing ready-made device types provided by device manufacturers.

To export a device type, hover over the device type that you would like to export and click Export. Your browser will download a file named "<device type>.json" with the device type definition.

Export device type

To import a device type, click Import in the top menu bar. This will open a dialog that lets you choose between importing a ready-made device type and uploading a previously exported device type. You can change the name of the device type during import using the New device type name field.

Import device type

Cloud Sensor App

Overview

The Cumulocity IoT Cloud Sensor App sends sensor measurements from an Android smartphone, an iOS smartphone or a Texas Instruments (TI) Sensor Tag to Cumulocity to be securely processed and managed. Additionally, all devices can be remote-controlled by Cumulocity.

Info: The TI Sensor Tag is a low energy wireless device manufactured by Texas Instruments © http://www.ti.com/.

To use the Cloud Sensor App for Android you need a smartphone with Android version 5.0 or higher.

To use the Cloud Sensor App for iOS you need a smartphone with iOS version 11.0 (or higher).

Info: The screenshots are exemplarily taken from an Android smartphone. Unless mentioned otherwise the screens look similar in the Cloud Sensor App for iOS.

Installing the Cloud Sensor App

On an Android smartphone

To install the Cloud Sensor App on your Android smartphone, open the Cockpit application in your Cumulocity IoT tenant, expand the right drawer and click Add smartphone from the quick links.

Quick Links

This will start a wizard showing the QR code for downloading the Cloud Sensor App.

Install App

Scan this QR code with any scanning application on your smartphone.

You will then be navigated to the Google Play Store for the installation of the Cloud Sensor App for Android.

On an iOS smartphone

To install the Cloud Sensor App on your iOS smartphone, navigate to the App Store, search for Cumulocity IoT Sensor App and install the app on your smartphone.

Registering the Cloud Sensor App to your tenant

From an Android smartphone

Their are two ways to register your Android smartphone as a new device in your tenant:

  • Option 1: Scan a QR code with encrypted registration credentials (only available for Android smartphones)
  • Option 2: Use web-based registration

The QR code registration process (option 1) uses credentials derived from the username and password of the user who is currently logged into the IoT tenant while in the web-based registration process (option 2) unique device credentials are used.

Info: Just in case you want to re-register your smartphone, and you change from option 1 to option 2 (or vice versa), you first must delete the smartphone object in Device Management.

Registering using a QR code with credentials

Click Next in the Cockpit wizard to display the QR code with credentials to register your smartphone to your Cumulocity IoT tenant.

Register phone QR

Your smartphone will be added to the devices list in the Device Management application, which can be accessed by navigating to All devices in the Devices menu in the navigator.

All devices

Moreover it will be added to the group “Phones” (which will be created if not available yet). You will find the group in the Group menu in the navigator. This feature is only available in case of QR code registration.

Info: Until you scan the registration credentials QR code, the button will remain in the pending state showing the message “Waiting...”. Scanning the QR code will complete the registration process.

Important: The registration credentials are encrypted. However, we highly recommend to use specific demo user accounts on your tenant for large public presentations. Do not use this method for production tenants or for tenants containing sensitive data.

Registering using web-based registration

To register your smartphone manually, follow these steps.

  1. Press the Web-based Registration link on the Cloud Sensor App Welcome screen on your smartphone.

    Action bar

  2. Select the instance on which your IoT Sensor Demo tenant is hosted, e.g. cumulocity.com.

    Select Instance

  3. Press Register device to start the registration. A device ID will be displayed which needs to be entered during device registration in the Cumulocity tenant.

    Get device ID

Next, go to your Cumulocity tenant.

  1. In the Device Management application, click Registration from the Devices menu, click Register device and in the upcoming window select General device registration.

    Register device

  2. Enter the devide ID provided by the app on your smartphone.

    Register device

  3. A message will show up that your device has been successfully registered. Click Complete to proceed.

    Register device

  4. Finally, click Accept to complete the registration process.

    Accept device

Your smartphone will be registered and added to the devices list in the Device Management application, which can be accessed by navigating to All devices in the Devices menu in the navigator.

All devices

For further information about registering a device on the platform manually, refer to Connecting devices in the Device Management section.

Next, you need to accept several permission requests allowing for accessing data (photos, media and files) on your device, make and manage phone calls and access the location (including network information and GPS data) to let the smartphone transfer network and GPS data to the cloud. This requests only show up once.

Once your smartphone is registered, the device name, which identifies your smartphone in the platform, is displayed on the screen of the Cloud Sensor App. You may edit this name here.

edit name

From an iOS smartphone

To register your iOS smartphone as a new device to the Cumulocity platform, process the following steps.

Info: In case of an iOS smartphone, no QR-code-based registration is provided.

  1. On the start screen of the Cumulocity IoT Sensor App, press Connect to Cumulocity, to connect your device to Cumulocity.

    Start screen

  2. If you connect to Cumulocity for the first time, you need to register your device next.
    In the Account details page of the Cumulocity IoT Sensor App, provide the relevant details for the Cumulocity account you want to register the device to, i.e. username and password, tenant and the instance on which your IoT Sensor Demo tenant is hosted, e.g. cumulocity.com. The instance can be selected from a drop-down list.

    Account details

  3. Press Connect to connect to the Cumulocity platform.

Next, go to your Cumulocity tenant.

  1. In the Cumulocity platform, a message will show up that your device has been successfully registered. Click Complete to proceed.

    Register device

  2. Click Accept to complete the registration process.

    Accept device

Your smartphone will be registered and added to the devices list in the Device Management application, which can be accessed by navigating to All devices in the Devices menu in the navigator.

All devices

For further information about registering a device on the platform manually, refer to Connecting devices in the Device Management section.

Pressing the "i" symbol in the upper right corner of the start screen of the Cumulocity IoT Sensor App will open the "About" information of the application.

About

Viewing sensor data

On an Android smartphone

Press View sensors to view the data from sensors on your Android smartphone.

View sensors

The sensor data (i.e. gyroscope, location, acceleration, magnetic field and barometer data), will be shown on the smartphone.

Example 1

GPS sensor

Example 2

Acceleration sensor

On an iOS smartphone

Press View sensors to view the data from sensors on your iOS smartphone.

View sensors

The sensor data (i.e. gyroscope, location, acceleration, magnetic field and barometer data), will be shown on the smartphone.

Example 1

GPS sensor

Example 2

Acceleration sensor

Info: Note, that on on IoS smartphone you can view sensor data without being connected to Cumulocity. However, only on connecting your phone to Cumulocity the sensor data is being sent to the platform.

Sending sensor data to Cumulocity

The measurements from the sensors of your smartphone will automatically start being sent to your Cumulocity tenant when your smartphone is connected to the platform.

The data points will be displayed in the graphs on the Info tab of your smartphone device in the Device Management application.

map in cockpit

A 3D rotation widget on this dashboard will depict the data from a gyroscope sensor on your smartphone if present.

To save battery power, the Cloud Sensor App sends measurements to Cumulocity only when the data change is significant, or every 20 minutes by default. This interval can be changed in the Device Management application.

Switch to the Configuration tab of your device and specify the interval in milliseconds.

configuration interval

Connecting TI Sensor Tag to the Cloud Sensor App

The Cloud Sensor App connects to both TI Sensor Tag version 1.20 and 1.30 via bluetooth.

On an Android smartphone

Use the Scan devices button in the Cloud Sensor App to connect a Sensor Tag.

Scan devices button

On an iOS smartphone

Press the Add Tag button in the Cloud Sensor App to connect a Sensor Tag.

Add Tag

All Sensor Tags which are discoverable are displayed. To make a Sensor Tag discoverable, press the red button next to it. The Sensor Tag will start blinking to show that it is ready to connect. It should immediately appear in the list of visible bluetooth devices in the Cloud Sensor App.

Connect Sensor Tag

Press Connect next to the Sensor Tag of your choice. The Bluetooth connection between the Sensor Tag and your smartphone will be established. Once the Sensor Tag is paired with your smartphone, you will see it as a record on the Cloud Sensor App’s screen:

Sensor Tag Card

Observing information and sensor data from the TI Sensor Tag is possible by pressing View sensors on its card.

Sensor Tag Info

In your Cumulocity tenant, the data points for the Sensor Tag will be displayed on the graphs in the dashboard of your smartphone and as measurements in the Device Management application.

Sensor tag data points

To detach the Sensor Tag from your smartphone, press Remove on its card.

Device control

The Cloud Sensor App can receive real-time control commands from Cumulocity.

The Messaging widget, for example, can be used to send text notifications to the smartphone. The vibration relay control can be used to turn on/off the vibration motor.

Create a dashboard for your smartphone device as described in Creating a dashboard in the Cockpit section.

Add the Messaging widget to the dashboard, for details see Widgets collection.

To send a message from Cumulocity, enter a text into the Messaging widget and click Send.

message widget

The message will appear as a pop-up on the screen of your smartphone.

Hello World Message

If the vibration switch is turned on, the smartphone will start vibrating until the switch is turned off again.

Info: The smartphone must remain connected to the platform to receive these commands.

Cloud Remote Access

The Cumulocity Cloud Remote Access microservice allows you to remotely access operating panels and other devices via a web browser.

When to use Cloud Remote Access

To provide the best level of control, remote devices should be represented as devices in the Device Management of Cumulocity, with the corresponding reporting, remote control and real-time functionality.

In some cases however, it is not possible or not economic to implement every aspect of a machine or remote device in a Cumulocity agent. For example, it might be a legacy device that does not have APIs for accessing certain parts of the functionality, or it may have many very low-level configuration parameters that would be very involved to map to Cumulocity.

In this case, you can use Cloud Remote Access to securely manage remote devices. The benefit is that you manage the device in the same way as if you had it physically close to you.

Important: Be aware that using Cloud Remote Access includes administrative intervention:

  • Often, devices have no detailed permission management, so you give a user very fundamental access to the device.
  • When using Cumulocity IoT to remotely operate machinery, make sure that all remote operations follow the safety standards.

Supported protocols and gateways

The following protocols are supported:

  • Remote Desktop (VNC)
    • Shares the desktop of the remote device
    • Mouse and keyboard for interaction
  • Secure Shell (SSH)
    • Console for command line access
    • Keyboard for interaction
  • Terminal (Telnet)
    • Protocol used for old device types
    • Console for command line access
    • Keyboard for interaction

The following gateways are supported:

  • Netcomm NTC 6200
    • Gateway router device
    • Latest Firmware (4.2.1)
    • VNCProxy plugin
  • Linux agent
    • Can be used on any linux-based gateway device
    • Latest version required
  • Third-party devices
    • Many third-party devices are supported, for details see Devices guide

How Cloud Remote Access works

Cloud Remote Access is a secure way to directly access remote devices through a web browser.

VNC

The following protocols are supported:

  • Remote Desktop (VNC)
  • Secure Shell (SSH)
  • Terminal (Telnet)

Cloud Remote Access works as in the illustration below. The remotely controlled device runs a VNC, SSH or Telnet server and is connected to a gateway compatible with Cloud Remote Access. This gateway must be registered as a device within the Device Management application in Cumulocity. More information about registering devices and instructions can be found in Device Management > Device Registration in the User guide.

VNC2

With Cloud Remote Access users can

  • view status visualizations and track updates of remote devices directly in the same way as if you were at the device location,
  • connect to remote devices easily as complex VPN setups are not required,
  • establish connection via Telnet or SSH to the gateway itself or to any device in the local area network.

VNC1b

The connection to remote devices is securely encrypted through TLS technology. Additionally, passwords are encrypted in your Cumulocity account, so that you do not need to manage them elsewhere.

Using Cloud Remote Access

Cloud Remote Access is available in the Device Management application.

To use Cloud Remote Access, the following prerequisites have to be met:

  • a Cloud Remote Access compatible gateway connected to your Cumulocity account;
  • a remote device with a VNC, SSH or Telnet server that is connected to the gateway and reachable from the gateway;
  • "Remote access" permission granted to the tenant user;
  • Cloud Remote Access microservice included into your subscription plan.

Click All devices and select the desired gateway from the device list.

Device list

When you open the gateway you will find the Remote access tab in its tab list.

Remote access tab

In the Remote Access tab, you can configure devices for remote control, so-called "endpoints", and connect to remote devices.

Connections can be established to the gateway itself (localhost) or to any device in the local area network reachable by the device.

Info: If the prerequisites are met and you do not see the Remote access tab in the tab list of your gateway, please contact sales@cumulocity.com.
Info: If you are a gateway manufacturer and would like to support Cloud Remote Access on your gateway, please contact support@cumulocity.com.

Configuring endpoints

The "endpoint" is the IP address and port of the VNC, SSH or Telnet server running on the remote device. The IP address and port need to be reachable from the gateway.

Endpoints

To configure new remote devices, click Add endpoint. Follow the descriptions below for configuring the various types of endpoints.

Info: To be able to configure an endpoint, you need ADMIN permission for "Remote access" and "Device control". To read data, a READ permission is sufficient. For more information on permissions, refer to Administration > Managing permissions in the User guide.

Adding remote access endpoints via VNC

To configure a remote access endpoint via VNC, enter a description for the remote access endpoint, the IP address and port, and the password of the VNC server. Click Save to add the endpoint to the list.

Remote access endpoint

Once the connection is established, a new browser tab will open displaying the front screen or operating panel of the remote device you are connected to. The top bar of the screen will show “starting VNC handshake” when the process is starting.

Adding remote access endpoints via Telnet

Enter the name of the endpoint. Select the Telnet protocol from the dropdown menu. Enter the IP address and the port. When ready, click Save.

Remote access Telnet endpoint

Important: Be aware, that Telnet is considered to be an insecure protocol lacking built-in security measures. For network communication in a production environment we highly recommend to use the SSH protocol instead.

Adding remote access endpoints via SSH

To configure a remote access endpoint via SSH, enter the name of the endpoint, select the "SSH" protocol from the dropdown list, and enter the IP address and the port. There are two Sign-in methods to be selected:

  • Username and password: If this method is selected, it is mandatory to enter username and password.

    SSH username and password sign in

  • Public/private keys: Automatically generate public and private keys or simply paste pre-generated keys. The keys can also be uploaded from a file.

    SSH public/private keys sign in

Info: The public key needs to be installed on the remote device as authorized_key.

Optionally, you can also add a host key to ensure connection to the correct device. This key can also be uploaded from a file.

Click Save to save your settings.

The following formats are supported when adding new keys:

  • OpenSSHv1
  • OpenSSHv2
  • PEM
  • SSH2

The following algorithms are supported when adding new keys:

  • RSA
  • DSA
  • ECDSA
  • ED25519

Editing or removing endpoints

To edit or remove an endpoint, click the menu icon at the right of a row and select Edit or Remove from the context menu.

Edit endpoints

Auto-saving host key

A host key is a public key of the server which is generated when an SSH server is installed. It is used to verify the identity of the server.

By enabling the auto-saving host key functionality you will no longer need to enter the host key after each connection. Instead, the host key can be automatically saved after the first successfully established connection to a remote access endpoint.

In order to enable the auto-save host key functionality, navigate to the Remote access page under the Settings menu in the Administration application. Activate the checkbox and then click Save.

Save host key

Connecting to endpoints

To connect to configured endpoints, choose an endpoint in the Remote access tab and click Connect.

Connect Endpoint

The connection to the configured remote device is established and the VNC, SSH or Telnet screen is shared in the client area.

Telnet connection

To terminate the connection, click Disconnect.

Audit logs

Audit logs are available for each gateway device.

For each connection the Cloud Remote Access microservice creates an operation in scope of the current user. The operation then will be updated by the device to reflect the current status. Finally the operation will be in state SUCCESSFUL or FAILED.

The audit logs can be found in the Control tab of the gateway device.

Display Audit logs

Compatibility and limitations

VNC protocol

The following versions of the VNC protocol are currently supported:

  • RFB 003.003
  • RFB 003.007
  • RFB 003.008

The functionality has been tested on the following VNC servers:

  • Real VNC 5.3.2
  • Tiger VNC 1.6.0/1.7.0
  • TightVNC 1.3.9
  • EfonVNC 4.2
  • Vino

The following operating systems/browsers are currently supported:

Operating system Browser Touch Swipe Keyboard Pointer
Windows 10 Edge 38 Yes Yes Yes Minor
Windows 10 Internet Explorer 11.5.6.7 Yes Yes Yes Minor
Windows 10 Firefox 51 Yes Yes Yes Yes
Ubuntu 16.04 Chrome 56 Minor Yes Yes Yes
Ubuntu 16.04 Firefox 51 Minor Yes Yes Yes
MacOS Safari Yes Yes Yes Yes
iOS 10.2.1 Safari Yes Minor No n/a
Android 6.0.1 Chrome Yes Minor No n/a
Android 6.0.1 Stock browser 5.0 Yes Minor No n/a

Telnet protocol

The following limitations apply to Cloud Remote Access for Telnet:

Area Scrolling Reflow on width change Bitmap fonts Vector fonts Mouse tracking Application keypad Tabs Split screen
Console Yes No Yes Yes Yes Yes ? Yes
xterm Yes No Yes Yes Yes Yes No No

SSH protocol

For Cloud Remote Access for SSH the same limitations as mentioned for Telnet apply (see above). Also the following additional limitations are known:

  • International characters are not to be supported yet.
  • Only limited number of control characters are working. For example interrupt (CTRL+c) is not working yet.
  • Mouse movements are not supported.
  • Only SSHv2 protocol is supported.

Troubleshooting

Endpoints cannot be set up

If you cannot set up new endpoints, check if you have sufficient permissions.

To set up new endpoints, you need ADMIN permission for "Device control" to be able to register a device and ADMIN permission for "Remote access" to be able to add an endpoint.

To establish a connection to a remote operating panel, a READ permission for "Remote access" is sufficient.

For more information on permissions, refer to Administration > Managing permissions in the User guide.

Connection fails

The connection via a gateway to a remote VNC, SSH or Telnet server can fail because of network problems. In this case you need to contact your network administrator.

Unsupported protocol version

In case of Real VNC, if you get an error message stating that you are using an unsupported protocol version (e.g. 005.00x), try the following workaround:

  1. Open VNC.
  2. Navigate to Options.
  3. Select the Export tab.
  4. Search for "ProtocolVersion".
  5. Enter "3.8" as protocol version.

Connectivity

The Connectivity agent, which works from within the Cumulocity Device Management application, provides basic information on mobile devices and additional connectivity details.

Cumulocity integrates with the SIM connectivity management platform Jasper. For the SIM connectivity management platforms Comarch and Ericsson, Cumulocity provides an experimental implementation. For more details, please contact our support team.

The following features are supported by these providers:

Feature Jasper Ericsson Comarch
Check the status of the SIM card in the device x x x
Check the online status of the device as reported by the network x x x
Change SIM card status, for example activate or deactivate it x x x
Disconnect SIM card from current session x
Communicate with the device through text messages, for example, to set APN parameters x x
View summary usage of data traffic, text messages and voice calls x x x
View usage details of data traffic, text messages and voice calls x x
View the history of data sessions and any changes to the SIM card or traffic x  

As you can see, Jasper currently is the most feature-rich provider.

The following description is primarily based on Jasper, but the same configuration and usage also applies to the other providers. If there are any differences, they will be stated explicitly.

Jasper architecture

The following sections describe:

The following steps describe how to create a dedicated user in the Jasper Control Center. This user is used for all access from Cumulocity to Jasper Control Center, so the permissions of the user have influence on functionalities available in Cumulocity.

Info: In a similar way, we recommend to set up a dedicated user for Ericsson or Comarch to get the credentials required to connect to Cumulocity. Ask your administrator or our support team for further information.

Besides the user, you also need a so-called API license key (only required for Jasper) and API server URL. To determine your API license key and API server URL, use a Control Center administrator user to log in to your Control Center account and click API integration on the Control Center home page. Your API license key and the API server URL are displayed on the top left.

To create a user in Jasper Control Center perform the following steps:

  1. As an admin user, navigate to Admin and Users.
  2. Click Create New.
  3. Enter the user name and further details of the user.
  4. If you want to be able to activate and deactivate SIM cards from Cumulocity, or to send SMS from Cumulocity, use the role ACCOUNTUSER. Otherwise, use the role ACCOUNTREADONLY.
  5. Click OK to create the user, then enter your admin password and click OK again.

Jasper user management

The user is now created but does not have a password yet. Follow the instructions emailed to you by Control Center to set a password.

Configuring the connectivity for the SIM provider in Cumulocity

Process the following step to configure the connectivity in Cumulocity:

  1. Use a Cumulocity administrator user to log into the Cumulocity platform.
  2. Switch to the Administration application.
  3. Click Connectivity in the Settings menu of the navigator. If the menu item is not displayed, make sure that your user has ADMIN permission for Connectivity. If the menu item is still not available, contact support to make the Connectivity agent available in your tenant.
  4. Switch to the SIM provider settings tab.
  5. Select a provider from the drop-down list.
  6. Enter the credentials (URL, key (in case of Jasper), username and password) for the respective SIM provider account. If you do not have any credentials, ask your administrator.
  7. Click Save to save your settings.

Jasper settings

The Connectivity agent is now set up.

Switch to the Device Management application and navigate to a device that is connected through a SIM card managed by the SIM provider of your choice. The device should have a Connectivity tab. If this tab is not shown,

  • your user does not have permissions for Connectivity,
  • the device is not linked to a SIM card,
  • the device is linked to a SIM card, but the card is not managed by the respective SIM provider account.

To assign permissions, navigate to the Administration application and make sure that your user has a role assigned with READ or ADMIN permission for Connectivity.

Connectivity permission settings

Jasper and Comarch identify SIM cards through their ICCID (Integrated Circuit Card Identifier). Ericsson is using MSISDN (Mobile Station International Subscriber Directory Number) instead. In most cases, devices will report the ICCID and MSISDN of their SIM card automatically to Cumulocity.

If the ICCID is not shown automatically check the following:

  • Determine the ICCID of the SIM card. It is printed on the SIM card and is visible in Control Center.
  • Enter the ICCID in the Info tab, then click Save.
  • Click Reload in the tab menu bar to make the Connectivity tab appear.

Note that it may take a few seconds until the tab appears for the first time on a device, as Cumulocity checks if the particular SIM card is managed by the SIM provider.

Connectivity tab

In the Connectivity tab you will find the following sections:

  • Status
  • SMS
  • Sessions
  • Audit logs

Connectivity tab

Info: Some sections may not appear or may be empty. For example, if there have been no SMS sent and you do not have permission to send SMS, you will not see the SMS section.

The Status section lists summary information for the SIM card.

Status section

The first row shows if the device is currently running a data session. If it is, the start of the session and the current WAN IP address of the device is displayed.

The second row shows further status information: The ICCID of the SIM card, the activation state of the SIM card and, if set, the fixed IP address assigned to the SIM card. Provided you have ADMIN permission for Connectivity, you can change the activation state by using the drop-down menu.

At the bottom you will find usage information for the current month, i.e. from the first of the month till today. Hovering over the tooltip shows the covered time period, including the usage during the past month.

The SMS section shows the text messages sent to the device and received from the device, including information on

  • when the message was sent or received
  • where it was sent from and where it was sent to
  • the delivery status of the message:
    • For messages to the device: "Pending", if it was not yet received by the device, or "Delivered", if it was received by the device.
    • For messages from the device: "Received", if it was received by the SIM provider, or "Cancelled", if it was not yet received by the SIM provider.
  • What the direction of the message is: MT ("Mobile terminated"), if it went to the device, or MO ("Mobile originated") if it came from the device.

Provided you have ADMIN permission for Connectivity, you can also send text messages to the device by entering the text and clicking Send SMS.

SMS section

The Sessions section shows the log of data sessions carried out by the device. It lists when the session started, how long it took and how much data traffic was consumed.

Sessions section

The Audit logs section lists all changes to the SIM card and its tariff. It shows the type of change, old and new values when the change was carried out by whom, and if it was successful.

Audit logs section

The Connectivity tab does not update in real-time. To show current data, click the Reload in the top menu bar.

Checking connectivity

If you suspect that a device is not correctly reporting to Cumulocity, or it is not receiving commands, you can verify the connectivity status of the device.

In the Connectivity tab, check if

  • the SIM is activated. If the SIM card is not activated, you can activate it selecting "Activated" from the status drop-down menu.
    Activate SIM card
    It may take a while until the SIM card is activated in the network. There may be a reset of the device needed to make it dial up to the network again.
  • The device is connected to the network. If the device is not connected to the network, this may have several reasons:
    • The device is in a location without mobile network coverage. If the device reports network quality parameters, you can navigate to the Measurements tab of the device and verify the last reported signal strength and error rate parameters.
    • There is a network or hardware problem (antenna, modem). For the Jasper Control Center, for example, click the cogwheel icon on the top right and select SIM details, then open the Jasper Control Center diagnostics tool. If the device is not attempting to connect to the network, it may be broken.
  • The device is in a data session. If the device is not in a data session, this may, again, have several reasons:
    • The APN settings are incorrectly configured in the device.
    • The SIM card is over traffic limit.
    • Data roaming is disabled on the device and the device is not in the SIM card's home network.
    • Data roaming for the particular network is not included in the SIM card's plan.
    • The SIM configuration was changed.

Data connectivity can be analyzed in various places:

  • If the device reports its network configuration, navigate to the Network tab and verify, potentially edit, APN settings.
  • If the device supports shell, navigate to the Shell tab and verify, potentially edit, APN settings and roaming configuration.
  • Check the Sessions section on the Connectivity tab to see if the device has been communicating earlier and how much traffic it used.
  • Check the Audit logs section on the Connectivity tab to see if there were any recent changes to the SIM card.
  • Finally, click the cogwheel on the top right and select SIM details to navigate to the SIM configuration in Jasper Control Center.

The SIM details menu item requires you to have a login for Jasper Control Center. This login is independently provided by your administrator.

If the device is still not reporting to Cumulocity, there may be a configuration or software problem on the device.

  • The device may have lost its credentials, for example, due to a factory reset or full loss of power. In this case, you can re-register the device.
  • There may be a configuration or software problem with the device, which has to be analyzed in a device-specific way.

IMPACT

This document describes

IMPACT Integration

Cumulocity offers an integration with the Nokia IMPACT Data Collector which is designed to collect data from heterogeneous devices. Integrating Cumulocity with IMPACT, enables you to make use of existing Cumulocity features like connectivity monitoring, data visualization or real-time analytics with IMPACT devices.

Info: Currently only the integration of LWM2M devices has been tested.

The IMPACT agent in Cumulocity registers itself at the Nokia IMPACT platform. Similarly, it subscribes to events such as devices coming online or reporting data at IMPACT.

The following illustration provides an overview on the Cumulocity IMPACT integration.

IMPACT integration

Info: Your subscription needs to include the IMPACT feature. If you do not see the functionality described in this document, please contact the Cumulocity support.

To be able to communicate with a device through IMPACT the device must be registered in IMPACT. How to register a device in IMPACT is not in the scope of this document.

Device lifecycle integration

IMPACT devices do not need to be registered again in Cumulocity. Cumulocity’s device lifecycle integration automatically handles the following events:

Event type Description Actions triggered in IMPACT agent
Registration A new device has been registered at IMPACT. Create device in Cumulocity.
Obtain list of resources provided by device (either from request or by querying device).
Subscribe to all resources that are mapped as “Auto-Observe” in the corresponding object mapping.
Deregistration A device has been deleted in IMPACT. At IMPACT, unsubscribe from all resources for this device.
Expiration A device registration in IMPACT has expired. Mark device in Cumulocity as disabled.

IMPACT device protocols

To process data from IMPACT devices, Cumulocity uses device protocols. Through device protocols you can observe your resources and perform other actions like creating alarms.

Device protocols are accessible through the Devices types menu in the Device Management application. For details on the general usage see Device protocols.

Device protocols

How to add an IMPACT device protocol

To add a new IMPACT device protocol follow these steps:

  1. In the Device Management application, navigate to the Device protocol page, accessible from the Device types menu in the navigator.
  2. Click Add device protocol in the top menu bar.
  3. In the upcoming window select IMPACT as device protocol type.

    Add protocol
  4. In the next dialog, enter a unique ID, a name and an optional description for the device protocol.

    Add protocol
  5. Click Create to create the new device protocol.

The device protocol will open in a new page.

Protocol page

In the Device protocol page you will see the description at the top left and the ID, the creation date and date of the last update at the top right.

Below a list of resources configured for the device will be listed (which is empty when creating a new protocol), showing the ID, name and potentially configured functionalities for each resource.

Example: Resource list for the device protocol "Temperature Measurement":

Protocol page

How to add a resource to a device

Click Add resource at the bottom of the resource list to add a new resource to your device.

For each resource you may specify the following parameters:

Field Description Required
ID The ID of the resource. Must be unique within one protocol object. Mandatory
Name Name for the resource. Mandatory
Type The parameter type. May be one of BOOLEAN, STRING, INTEGER or FLOAT. Mandatory
Unit The parameter unit, e.g. Celsius, meter. Optional
Instance Type The instance type for the parameter. May be one of "Single" or "Multiple". The default value is "Single". Optional
Description A more detailed description of the resource. Optional

Optionally, you may turn on several functionalities for the resource:

Functionalities

Send measurements

Turn on Send measurements to specify a measurement.

  • In the Type field, enter the type of the measurement, for example “c8y_AccelerationMeasurement”.
  • Series are any fragments in measurements that contain a “value” property. In the Series field you can enter for example “c8y_AccelerationMeasurement.acceleration”.
  • The Unit field specifies the unit of the given measurement, for example “m/s” for velocity.

Create alarm

Turn on Create alarm if you want to create an alarm out of the resource. Specify the following parameters (all mandatory):

  • In the Severity field, select a severity for the alarm. May be one of CRITICAL, MAJOR, MINOR, WARNING.
  • The Type field is a text field which is used for duplicating alarms and for configuring the priority of alarms in the Administration application.
  • In the Status field, select an alarm status. may be one of ACTIVE, ACKNOWLEDGED, CLEARED.
  • In the Text field, provide a textual description for the alarm.

Send event

Turn on Send event to send an event each time a certain condition has been triggered. Specify the following parameters:

  • In the Type field, enter the type of the event, for example "com_cumulocity_model_DoorSensorEvent".
  • In the Text field, enter the text which will be sent, for example "Door sensor was triggered".

Auto observe

Enabling Auto observe for a resource means, that each time the device with this particular resource appears, Cumulocity will automatically receive all values. It is not necessary, to subscribe to it manually.

Info: At least one functionality must be set to enable Auto observe.

Finally, click Save to create the resource. The resource will be added to the resource list.

In the resources list you can see if functionalities have been turned on for a resource. Active functionalities are indicated by the related icons. In the example below, Send measurements and Auto observe are turned on.

Functionalities

LoRa Actility

Cumulocity can interface with LoRa devices through Actility's ThingPark Wireless. You can:

  • Provision and deprovision LoRa devices easily using the Cumulocity Device Management. No interaction in the ThingPark user interface is required.
  • Decode upstream payload packets using a web-based user interface.
  • Debug and postprocess raw device data through Cumulocity events.
  • Send downstream data to the device using Cumulocity operations.
  • Make use of existing Cumulocity features with LoRa devices, for example: connectivity monitoring, device management, data visualization with dashboards, real-time analytics and more.

The following illustration gives an overview of the Cumulocity LoRa Actility integration.

Cumulocity LoRa Actility integration

The following sections describe how to:

Note that your subscription needs to include this feature. If you do not see the functionality described in this document, please contact support.

Configuring ThingPark account credentials and application EUI

Before using LoRa devices with Cumulocity, you need to configure your ThingPark account details in the Administration application. In order to create new credentials or replace existing ones, go to the Administration application and select Connectivity in the Settings menu in the navigator.

Creating new account credentials

If you go to Connectivity for the first time, you will be asked to provide credentials and application EUI which is used for LoRa device provisioning.

Enter the following information:

  • profile ID: This depends on your ThingPark account and environment. If you are using, for example, the Dev1 ThingPark environment your profile ID will be "dev1-api". Multiple tenants can have the same profile ID.
  • username: your ThingPark user name
  • password: your ThingPark password
  • application EUI: This is a global application ID in the IEEE EUI64 address space that uniquely identifies the application provider of the device. It is a 16 character (8 byte) long hexadecimal number. There can be only one application EUI for a tenant but multiple tenants can have the same application EUI.

Do not use the same ThingPark login (username and password) for other tenants. The profile ID, username and password are used to retrieve an access token to send further requests to the ThingPark platform. It is possible to renew the access token by replacing the account credentials.

Setting provider credentials

Click Save. If everything is okay, there will be a message "Credentials successfully saved".

Replacing account credentials

In order to replace your credentials, click Replace credentials.

Enter your profile ID, username, password and application EUI (for details on profile ID and application EUI see Creating new account credentials.

Replace credentials

Click Save. Your old credentials will now be replaced with the new ones.

Creating device protocols

To process data from LoRa devices, Cumulocity needs to understand the payload format of the devices. Mapping a payload data to Cumulocity data can be done by creating a LoRa device protocol.

During the device registration, you can associate this device protocol. The received uplink callbacks for this device with a hexadecimal payload will then be mapped to the ones you have configured in your device protocol. If a device protocol has been changed after being associated to a device, the reflection of the change can take up to 10 minutes because of the refresh mechanism of the Actility Server Side Agent.

Info: Device protocol mapping only supports decoding for fixed byte positions based on the message type.

In order to create a device protocol, navigate to the Device Management application and select Device protocols in the Device types menu in the navigator. You can either import an existing device protocol or create a new one.

Importing a predefined device protocol

In the Device protocols page, click Import.

Select the predefined device type, for example "LoRaWAN Demonstrator" or upload from a file. Click Import.

Import device protocol

Alternatively, you may also load the device protocol from a file and import it.

Creating a new device protocol

In the Device protocols page, click New device protocol in the top menu bar. The following window will open:

Create new LoRa protocol

Select LoRa as the device protocol type, provide a name for it and click Create.

Under Message types, specify the message types. LoRa devices can send messages of different types with different encodings per type.

Select the way the message type is encoded in the Source dropdown box:

  • FPort: if the message type can be determined by looking at the FPort parameter of a message
  • Payload: if the message type can be determined by looking at the subset of the message payload itself

In the following example payload structure, the first byte indicates the message type source (as highlighted).

Example payload: message type source

In the user interface you can enter this type of message type source information as follows: In the Start bit field, indicate where the message type information starts in the payload and in the Number of bits field, indicate how long this information is, for example start bit = "0" and number of bits = "8".

LoRa protocol payload

Click Add value to create the value configuration.

LoRa protocol add value

In the upcoming window, configure the relevant values as shown in this example.

LoRa protocol add new value

LoRa protocol add new value

The value configuration maps the value in the payload of a message type to the Cumulocity data.

Under Message type, configure the Message ID according to your device message specification and map it to the Cumulocity data. The message ID is the numeric value identifying the message type. It will be matched with the message ID found in the source specified on the device protocol main page (i.e. Payload or FPort). The message ID needs to be entered in decimal numbers (not hex).

In this example payload structure the message ID is "1".

Example payload: message type source

LoRa bits

Under General, specify a name for the value and the category under which it will be displayed in the values list. The associated name for this value will be displayed under the Display category given.

Under Value selection, define from where the value should be extracted. In order to do so, indicate where the value information starts in the Start bit field and how long this information is in the Number of bits field.

In this example the "Channel 1 Type" information starts in byte 2 (i.e. start bit = "16") and is 1 byte long (i.e. number of bits = "8").

Example payload: value selection

LoRa bits

The hexadecimal value is converted to a decimal number and afterwards a "value normalisation" is applied.

Under Value normalisation define how the raw value should be transformed before being stored in the platform and enter the appropriate values for:

  • Multiplier: This value is multiplied with the value extracted from the Value selection. It can be decimal, negative and positive. By default it is set to 1.
  • Offset: This value defines the offset that is added or subtracted. It can be decimal, negative and positive. By default it is set to 0.
  • Unit (optional): A unit can be defined which is saved together with the value (e.g. temperature unit "C" for degree Celsius).

For detailed information on how to decode the payload, refer to the documentation of the device.

Info: "Little endian" support to decode the payload has been added.

Under Options, select on of the following options, if required:

  • Signed - if the value is a signed number
  • Packed decimal - if the value is BCD encoded

Under Functionalities, specify how this device protocol should behave:

  • Send measurement: Creates a measurement with the decoded value
  • Raise alarm: Creates an alarm if the value is not equal to zero
  • Send event: Creates an event with the decoded value
  • Update managed object: Updates a fragment in a managed object with the decoded value

You can also have a nested structure with several values within a measurement, event or managed object fragment. In case of a measurement all the properties of the same type will be merged to create a nested structure. In case of an event or a managed object all the properties with the same fragment are merged to create a nested structure. Also refer to the example of a nested structure for a "Position" device protocol below.

Click OK to add the values to your device protocol.

Value configurations of created device protocol

After clicking Save, your device protocol is created with the values you defined.

Example with single property

The following image shows an example for a message which sends a measurement when the battery level changes.

Battery level changes example

Battery level changes example

Example with nested structure

The following image shows an example of a nested structure for a device protocol reporting the current position of a GPS device. The display category is named "Position" and contains values for longitude and latitude.

The message ID should be the same for all the values. Enter the rest of the parameters according to the instructions above. Enter "c8y_Position" in the Managed object fragment field and create a new value for each: longitude and latitude.

Value creation: Longitude-nested

Value creation: Latitude-nested

This will be the result:

Value configuration in detail: nested structure

Registering LoRa devices

To register a LoRa device, navigate to the Device Management application and click Registration in the Devices menu in the navigator. Click Register device.

In the upcoming window, click Custom device registration and select LoRa:

Register devices

Cumulocity fully supports the LoRa device provisioning with Over-the-Air Activation (OTAA) which is the preferred and most secure way to connect with the LoRa network. If Activation by Personalization (ABP) is required to be used, refer to the LoRa device registration with ABP section.

In the next window fill in the required information:

  • Device profile: Select the appropriate device profile from the dropdown list.
  • Device protocol: Select the appropriate device protocol from the dropdown list.
  • Device EUI: This is the unique identifier for the device. It is a 16 character (8 byte) long hexadecimal number. You can find it on the device itself.
  • Application key: This is an AES-128 application key specific for the device that is assigned to the device by the application owner and is responsible to encrypt. The application key is a 32 character (16 byte) long hexadecimal number. JOIN communication. You can find this key on the device itself.
  • Connectivity plan: Select the appropriate connectivity plan from the dropdown list.

Register devices

Click Next to submit the device registration request and create the device.

You can verify that the device is really connected by checking that events are actually coming in. You can do so by clicking on a device and opening the Events tab. All events related to this device are listed here.

The provision status is shown under Device data in the Info tab of the device.

Device data

For more information on viewing and managing your connected devices, also refer to Device Management.

LoRa device registration process

A device is created based on the above workflow.

First it is checked, if the device already exists. If no device exists with the same device EUI in the ThingPark account, the device is first provisioned on the ThingPark platform and then created on the Cumulocity platform with a link to the device in the ThingPark platform. If the device exists in the ThingPark account, a validation will be applied to compare these devices based on application EUI (for OTAA activation) and device profile. If the validation is successful, the device is created only in Cumulocity with a link to the device in the ThingPark platform. If the validation fails, a failure message will be shown (see troubleshooting section for device registration) and the device is not created in Cumulocity.

LoRa device registration with Activation by Personalization (ABP)

Activating the device by personalization is not recommended and not fully supported in Cumulocity LoRa device registration.

However, if you would like to create a device with this activation type in Cumulocity and use the LoRa features - such as sending operations to a device, deprovisioning a device and setting LoRa device protocol type with custom device protocol configuration - you must first provision the device in the ThingPark platform. Moreover you have to create "AS Routing Profile" for Cumulocity using destination "http://actility-server.cumulocity.com" as a "Third Party AS (HTTP)" and assign it to your devices manually. Afterwards, you can register this device using LoRa device registration. In this case, the Application key field in the LoRa device registration is invalid.

Limitations for LoRa devices created with general device registration

The general device registration for LoRa devices is no longer supported.

Existing LoRa devices that have been created in Cumulocity with the general device registration process have limitations. For those devices, it is not possible to send operations to the device, deprovision the device and set the LoRa device protocol type with custom device protocol configuration.

It is recommended to delete and re-register these devices using LoRa device registration to fully use the LoRa feature.

Deprovisioning LoRa devices

You can deprovision a LoRa device in the ThingPark platform. This means that the device will no longer be connected to the network. Its history data will still be available in Cumulocity, but the device will be deleted in ThingPark.

To deprovision a device, navigate to the respective device in the Device Management application under All devices. Click More in the top right and select Deprovision device.

Deprovision device

After confirming the deprovisioning, the device will be deprovisioned in ThingPark.

To provision the device again, the device should be deleted and re-registered using LoRa device registration.

Sending operations

If a LoRa device supports receiving hexadecimal commands, you can send them using shell operations. Notice that these commands are not serial monitor commands. In order to send an operation, navigate to the device you want to send an operation to in the Device Management application under All devices. Switch to the Shell tab.

In the following screenshot you can find some examples of a device protocol's predefined commands and their format.

Predefined shell commands

Enter the shell command or view/edit the predefined command in the >_Command field.

If you enter the command without defining a port, it will be sent to the default target port (i.e. 1) of the device. If you enter the command and define a port (format "command:port"), it will be sent to the specified target port instead of the default port.

Port configuration

Click Execute. The operation will be sent to the device. The timing depends on Actility ThingPark.

The status of the operation is set to SUCCESSFUL when the operation has successfully been sent to the ThingPark platform. The status of the operation is set to FAILED when a problem occurred with the validation of the command or after the operation has been sent to the Thingpark platform.

ThingPark API availability monitoring

The ThingPark API is monitored and if it is not reachable, an alarm is created to notify all subscribed tenants using this feature. The alarm is cleared right after the ThingPark API is reachable again.

ThingPark API monitoring alarm

Troubleshooting

Connectivity

Authorization to the provider´s platform failed

This warning message shows up if a provided profile ID, username or password is invalid.

Account credentials

To resolve this, provide correct credentials and try again.

Device registration

Access to device denied

This warning message shows up when there already exists a provisioned device in ThingPark with the same device EUI used for device registration and the validation comparing those devices based on application EUI (for OTAA activation) and device profile has failed.

Device registration failure for comparison validation

To resolve this, provide the correct application EUI from Connectivity application and device profile and try again.

No LoRa provider settings found

This warning message shows up when there are no credentials set up for the ThingPark account.

Device registration failure without credentials

To resolve this, refer to Configure ThingPark credentials.

Getting device profiles from provider failed

This warning message shows up when the tenant's access token to Thingpark becomes invalid. Invalidation of the token might happen when the same ThingPark credentials are used for another tenant.

Device registration failure with invalidated token

This issue can be solved by reconfiguring the ThingPark credentials to renew the access token. Refer to configure ThingPark credentials for reconfiguration of the credentials.

No device protocols configured

This warning message shows up when no LoRa device protocol exists to be used for device registration.

No device protocol given for LoRa

To resolve this, configure at least one device protocol using Device database.

No connectivity plans with free slots available

This warning message shows up when the connectivity plan in ThingPark has reached the limit for the device count.

No free slots by device registration

To resolve this, either contact ThingPark on the device quota limits for your connectivity plans or remove unused devices from ThingPark and retry registering the device in Cumulocity.

LightweightM2M

Lightweight M2M (LWM2M) is a traffic and resource-optimized protocol to remotely manage IoT devices. The protocol is standardized by the Open Mobile Alliance. For more information, see http://openmobilealliance.org/iot/lightweight-m2m-lwm2m.

You can connect any device supporting LWM2M to Cumulocity without programming. Instead, you configure how LWM2M devices are mapped to Cumulocity using device protocols.

Device protocols

Registering LWM2M devices

To connect LWM2M devices, you need to upload a CSV file with registration data. This data is required to enable LWM2M communication. The CSV holds all information for factory bootstrap and client-initiated bootstrap. In the factory bootstrap mode, the LWM2M client has been configured with the necessary bootstrap information prior to the deployment of the device. The client initiated bootstrap mode requires a LWM2M bootstrap-server account pre-loaded in the LWM2M client. Below, you can see two CSV examples:

CSV example 1

In the first CSV example you can see the following fields:

Field Description
ID Unique ID of the device. For example, the ID could be an IMEI, serial number, etc.
IDTYPE The type of the device.
CREDENTIALS The content of this field is not used by LWM2M.
NAME The name of the device. In this case the name of the device is the same as the device ID.
TYPE This field needs to have the value "c8y_lwm2m”.
SHELL To enable “Shell”, the value of this field must be “1”. If you want to disable “Shell” the value must be “0”. For more info about the shell commands, see Shell commands.
com_cumulocity_model_Agent This field needs to have the value "1".
endpoint id Indicates the LWM2M client’s “Endpoint ID” in order to allow the LwM2M bootstrap to provision the bootstrap information for the LWM2M client.
lwm2m server url The URL the server is using for bootstrap. The LWM2M bootstrap server is used to provision the LWM2M client with the information required to contact the LWM2M servers. If you are using the Cumulocity service the hostname of the LWM2M server is "lwm2m.cumulocity.com". The bootstrap server port is "5683" and the LWM2M port is "5783". Note, that these values can be different for other services.
securityMode In this example the value of the security mode is “NO_SEC” which means that there is no security. It is highly recommended to always protect the LWM2M protocol. However, there are scenarios in which the LWM2M protocol is deployed in environments where the lower layer security mechanisms are provided. Currently Cumulocity supports only “NO_SEC” and “PSK”. With “PSK”, the client and server have a common secret symmetric cryptography. In the next example you will see how the CSV file should look when the security mode value is “PSK”.
| CSV example 2.1 CSV example 2.2 In this CSV example, the security mode value is “PSK”, hence additional fields are required. The table below reflects the full set of possible fields.
Field Type Description Mandatory
lwm2m psk_key String For security mode PSK: The key used by the device for LWM2M in PSK mode. Will be delivered to the device during bootstrap. Mandatory for PSK. Should not be set for NO_SEC
lwm2m psk_id String For security mode PSK: The ID used by the device for LWM2M in PSK mode. Will be delivered to the device during bootstrap. Mostly the same as the endpoint name. Mandatory for PSK. Should not be set for NO_SEC
endpoint id String The name of the LWM2M endpoint. Yes
bootstrap psk_id String For security mode PSK: The ID used by the device for bootstrapping in PSK mode. Yes for PSK
bootstrap psk_key String For security mode PSK: The key used by the device for bootstrapping in PSK mode. Yes for PSK
lwm2m server url String The URL of the LWM2M server to be sent to the devices during bootstrap. If you are using the Cumulocity service the hostname of the LWM2M server is "lwm2m.cumulocity.com". The bootstrap server port is "5683" and the LWM2M port is "5783". Note, that these values can be different for other services. Yes, for LWM2M bootstrap
securityMode String, “NO_SEC” or “PSK The LWM2M security mode to be used. Possible values are PSK and NO_SEC. Yes
serverPublicKey String The public key of the server. Optional
generateBootstrapServerConfig Boolean Toggles if Cumulocity generates a server config for the LWM2M bootstrap server and writes that back during bootstrap. Default is false. Optional
securityInstanceOffset Integer The first instance to be used during bootstrap to which entries are written. "0" is default. If set e.g. to "3", the first instance will be three. Optional
bootstrapShortServerId Integer The short server ID to be used for the bootstrap server. Default is "0". Optional
lwm2mShortServerId Integer The short server ID to be used for LWM2M server. Default is "1". Optional
registrationLifetime Integer The registration lifetime that is sent to the device during bootstrap. Overrides global agent configuration. Optional
defaultMinimumPeriod Integer The default minimum period to configure during bootstrap. See LWM2M Spec for explanation. Optional
defaultMaximumPeriod Integer The default max period to configure during bootstrap. See LWM2M Spec for explanation. Optional
bindingMode String The LWM2M binding mode to be reported to the device. Supported are “UQ” (default, queuing) and “U” (unqueued). Note, that Cumulocity will always queue operations. Optional
notificationIfDisabled (true/false) Boolean See LWM2M spec. Default: Not configured. Optional, defaults to Leshan default behavior
disableTimeout (true/false) Boolean See LWM2M spec. Default: Not configured. Optional, defaults to Leshan default behavior
external-c8y_BootstrapPskId String The ID being used to find a device during bootstrap. Optional

Info: Firmware updates are also supported. For more information, see Device Management > Managing device data in the User guide.

After creation, the bootstrap parameters can be viewed and changed in the LWM2M bootstrap parameters tab in the Device details page, see LWM2M bootstrap parameters.

LWM2M device protocols

To process data from LWM2M devices, Cumulocity uses device protocols. Device protocols are accessible through the Devices Types menu in the Device Management application. For details on the general usage, see Device Management > Managing device types.

Creating LWM2M device protocols

Once you have registered a device with the proper CSV file, you can manage LWM2M device protocols. Each piece of information available by the LWM2M client is a resource. The resources are further logically organized into objects. The LWM2M client can have any number of resources, each of which belongs to an object. In the device protocols you can observe your resources. Furthermore, you can choose whether to create measurements, events or alarms out of those resources.

To add a new LWM2M device protocol follow these steps:

  1. In the Device Management application, move to the Device protocol page.
  2. Click Add device protocol in the top menu bar.
  3. In the upcoming dialog select LWM2M as device protocol type.

Add new protocol

  1. Next, upload an appropriate DDF or XML file. DDF or XML files describe the data provided by your device. They are typically provided by the manufacturer or by standards bodies such as IPSO. There are also 3 "special" device protocols (DDF files) for standard OMA objects: 6 (location tracking), 5 (firmware update) and 3 (device information). If these files are not uploaded, then neither location tracking nor firmware updates will work. By default, the LWM2M agent adds mappings to these objects and knows how to "handle" their information without any additional configuration. The XML schema used by LWM2M can be found here.
    If the DDF files for the default mappings are uploaded in the management tenant, all subscribed user tenants will inherit this behavior.

Upload DDF file

  1. In the next dialog, you can see the name and description of the protocol. Click Continue to create the new device protocol.

Upload DDF file

The device protocol will open in a new page.

Example protocol

In the device protocol page, you will see the description at the top left and the ID, the creation date and date of the last update at the top right.

Below, a list of resources configured for the device will be listed (which is empty when creating a new protocol), showing the ID, name and potentially configured functionalities for each resource.

Info: LWM2M protocol resources cannot be edited.

Example: In the following screenshot you can see an example device protocol. This object should be used with a temperature sensor to report a temperature measurement. It also provides resources for minimum/maximum measured values and the minimum/maximum range that can be measured by the temperature sensor. An example measurement unit is “degrees Celsius”.

Example protocol2

Adding additional functionalities to a resource

The functionalities that you may enable are the following:

Resource functionalities

Send measurement

Turn on Send measurement to specify a measurement.

  • Enter the type of the measurement. For example, “c8y_AccelerationMeasurement”.
  • Series are any fragments in measurements that contain a “value” property. For example, in the series field you can enter: “c8y_AccelerationMeasurement.acceleration”
  • The “Unit” field specifies the unit of the given measurement. For example, “m/s” for velocity.

Create alarm

Turn on Create alarm if you want to create an alarm out of the resource. Specify the following parameters (all mandatory):

  • Severity - one of CRITICAL, MAJOR, MINOR, WARNING
  • Type
  • Status - one of ACTIVE, ACKNOWLEDGED, CLEARED
  • Text

Send Event

Turn on Send event to send an event each time you receive a resource value. Specify the following parameters:

  • Enter the type of the event. For example, "com_cumulocity_model_DoorSensorEvent".
  • Enter the text which will be sent. For example, "Door sensor was triggered".

Custom Actions

Turn on Custom Actions to map LWM2M data into Cumulocity using custom data processing actions. For specialized integration use cases, it is required to perform customized data processing on LWM2M data. One example are LWM2M resources of the OPAQUE data type that contain proprietary, binary data, CBOR, XML or alike.

Custom actions

Cumulocity LWM2M allows the set of custom actions to be extended using decoder microservices. A decoder microservice is an ordinary Cumulocity microservice that implements a simple decoder interface. The LWM2M agent calls this microservice for decoding data in a customer-specific way. We are providing an according example how to write such a decoder microservice in our public Bitbucket repository.

Auto observe

If Auto-Observe is turned on for a resource, the LWM2M server observes a specific resource for changes.

Info: At least one functionality must be set to enable "Auto observe".

Resource

LWM2M device details

Info: In the Device management application, you can view all details of a device. The following details are specific to LWM2M devices. For information on general details refer to Device details in the Device management section.

Objects

In the Objects tab of a LWM2M device, you can view all objects, resources and instances of the device. Additionally, you can create new operations, see all currently pending operations and view the history of all previous operations.

Objects view

Info: In order to see resources in the Objects tab, the resources first have to be added in the Device Protocols page.

The following operations may be available in each instance:

  • Read Object: Reads all instances for the selected object and lists all available resources for each instance.

    Read Objects

  • Read Instance: Reads the current instance of the given object and lists all available resources.

    Read Instance

  • Create Instance: Creates a new instance for the selected object.
  • Delete Instance: Deletes the selected instance.

Info: Some instances do not have all of the listed operations.

Some object cards show additional operations which can be performed. These operations become available after reading the object/instance, for example, device Update. In order to perform the operation, click Execute.

Execute operation

More information can be acquired for each resource by hovering over the tooltip icon.

Tooltip

Additional information on recent operations can be viewed by clicking the operations button located on the right side of an instance card. The button is only visible if any operation has been performed. The number of unread operations can be seen on the top right of the button. In the example below there is only one.

Recent operations Recent operations 2

To view the history of all operations, simply click View history. Note, that you will be redirected to the Control tab.

View History control tab

Audit Configuration

In the Audit configuration page you can audit the current device by comparing it to a selected reference device. It is also possible to sync properties to the values of the referenced device.

Click Audit configuration in the right of the top menu bar to navigate to the Audit configuration page.

Audit configuration

To sync properties, select the desired reference device from the dropdown list. Check the properties that you wish to sync and click Sync selected properties.

Info: The numbers in the green circles represent the number of properties in the instance which have the same value in both devices. Respectively, the numbers in the red circles represent the number of properties which have different values compared to the values of the referenced device. If an instance is expanded, you can select only specific properties which can be synced.

Sync properties

LWM2M bootstrap parameters

In the LWM2M bootstrap parameters tab, bootstrap parameters of the current device can be viewed and changed. To modify a parameter, enter the desired value in a field of your choice and click Save.

Bootstrap customization

Important: Currently only the "NO_SEC" and "PSK" security modes are supported.

For further information on the fields in the LWM2M bootstrap parameters tab, see Registering LWM2M devices.

Handling LWM2M shell commands

In the Shell tab of a device, LWM2M shell commands can be performed. Each command has a different functionality. Find all available placeholders (e.g. “objectID”, “instanceID”) and commands with their respective descriptions below:

Placeholder Description
objectID The ID of the object.
instanceID The ID of the instance. Some objects can have multiple instances. For example, “3300” is a temperature sensor object. Each device can have up to 10 sensors. In this case the instance ID would be 3300/1...10 depending on the sensor that you would like to focus.
resourceID The ID of the desired resource. The resources describe the characteristics of each object. All instances of a given object have the same resources, but the value of the resources may be different.
Firmware version The current version of the firmware.
Firmware url The URL from which the new version of the firmware will be downloaded.

In the next table you will see all available commands and a brief description of their functionality.

Command Description
read /// Reads a resource path
observe /// Enables the observe functionality
execute /// Executes a resource on the device
cancelobservation /// Cancels the observation functionality from the desired resource
delete //[/] Deletes a given object/instance/resource
discover /// Shows all resources of the given object
create / [JSON] Creates a new object. The JSON argument is optional
writeattr /// {pmin=}{&pmax=}{&greater=}{&less=}{&step=}{&cancel} Writes additional attributes to the object. Typically used for conditional observes
fwupdate ///<firmware_ur>/l Updates the firmware of the agent

Adding validation rules to resources

Validation rules are used to verify that the data a user enters in a resource meets the constraints you specify before the user can save the resource.

Validation rules can only be added to resources which have “write” permissions. Resources which can have validation rules are marked by the following icon:

Validation rule icon

When hovering over the icon, you can see whether there are defined validation rules.

Add a new validation rule by clicking on the desired resource and then click Add validation rule.

Add validation rule

Validation rules can have the following types:

  • Date: Simply enter a date and choose your desired rule.
  • Number: Only values of “Integer” or “Float” type are allowed depending on the resource.
  • ObjectLink: Reference to another object using the format “/Object/Instance/Resource”.
  • Regex: Add a string which describes the validation pattern. For example, “.*dd” means that the string must end with “dd”.
  • String: Enter a string value which can be either “True” or “False".

After selecting a type, the following rules can be chosen:

  • Greater than
  • Lower than
  • Equals
  • Equals not
  • Greater or equals than
  • Lower or equals than

Info: Not all rules are available to each type.

To delete a rule, simply click on the delete icon:

Remove lwm2m rule

Click Save to save your settings.

Complex rulesets

In order to enable more complex conditions, multiple validation rules can be defined for a resource:

  • Multiple rules can be defined in a validation rule group. A user input is only valid if each of the rules in the validation rule group is satisfied (logical AND).
  • It is possible to declare multiple validation rule groups. If multiple validation rule groups are declared, user input is valid if any of the validation rule groups is satisfied (logical OR).

The screenshot above provides an example for the use of validation rule groups: User input is valid if the given string does not match “test” (equals not). It is also valid if it ends with “asd” and it matches the contents of the LWM2M resource /3/0/15.

Complex rulesets are based on Boolean Disjunctive Normal Form, which allows arbitrary complex rules to be defined.

MQTT-SN

MQTT-SN is a publish/subscribe messaging protocol for wireless sensor networks (WSN), with the aim of extending the MQTT protocol beyond the reach of TCP/IP infrastructure for Sensor and Actuator solutions. For more information, see MQTT-SN specification.

The MQTT-SN implementation looks similar to MQTT in most parts and the MQTT-SN gateway plays the role of translating the messages between them.

The following sections describe how to use MQTT-SN:

  • Hello MQTT-SN provides an easy introduction to the Cumulocity MQTT-SN protocol using a popular MQTT-SN client
  • MQTT-SN implementation gives a detailed reference of protocol-level aspects in the Cumulocity implementation of MQTT-SN
  • SmartREST 2.0 provides a reference for SmartREST 2.0 payload format
  • MQTT static template provides a reference of pre-defined payload formats that you can use straight away

Hello MQTT-SN

In this section, you will learn how to use MQTT-SN with Cumulocity using pre-defined messages (called "static templates").

Prerequisites

Make sure you have installed MQTT-SN-TOOLS.

Registration of devices

MQTT-SN has no authentication mechanism. Therefore the device can only send its IMEI (or other kinds of UID). The device registration is done via the standard Cumulocity registration process described in Connecting devices.

Sending data

Creating the device

After successfully registering the device(s), you can start sending messages. The following command can be used to create your device:

./mqtt-sn-pub -h <host> -p <port> -i SN_DEVICE -T 1 -m 100,SN_DEVICE,c8y_MQTTSNDevice -d

The following command options may be used:

Option Description
-i ID to use for this client. The ID used here corresponds to the external ID of the device in Cumulocity and the device should be registered with this ID in the platform.
-T MQTT-SN topic name to publish to. “1” here corresponds to the pre-defined topic.
-m Message payload to send. The message used here is a standard Cumulocity static template, see MQTT-SN static template.
-d Increase debug level by one. -d can occur multiple times.

The template "100" will create a new device. Afterwards, you will find this device in the Device Management application as a new device. If you switch to the Identity tab of the device you will notice that there was an identity created automatically to link the device to the MQTT-SN client ID.

If the command fails for the first time with CONNACK 0x02 as illustrated, it means the registered device has not yet been accepted.

Failed device creation

Once the device is accepted, re-run the command and you should be able to communicate.

Creating child devices

The following command can be used to create your child devices:

./mqtt-sn-pub -h <host> -p <port> -i SN_DEVICE -T 2 -m 101,SN_CHILD-DEVI CE,SN_CHILD-DEVICE,c8y_MQTTSNDevice -d

Here, the parent device is being used to create the child device. -T 2 corresponds to the pre-defined topic. The message payload used here is a standard Cumulocity static template, see MQTT-SN static template.

Creating measurements
./mqtt-sn-pub -h <host> -p <port> -p 20000 -i SN_DEVICE -T 2 -m 200,myCustomTemperatureMeasurement,fahrenheit,75.2,F -d

After a reload in the Device Management application you should see graphs with the newly added measurements in the Measurements tab of your device. The message payload used here is a standard Cumulocity static template, see MQTT-SN static template.

Receiving data

Receiving operations

At the current state, the UI does not show any tabs for operations. Up to this point, it is unknown what exactly the device supports. But the list of supported operations can be modified with the template "114".

In order to be able to receive messages from the platform, execute the command below which adds support for the configuration and shell:

./mqtt-sn-pub -h <host> -p <port> -i SN_DEVICE -T 2 -m 114,c8y_Command,c8y_Configuration -d

After executing this command, you should now see these tabs:

Shell UI

Next, we will subscribe to the static operation templates for the device by executing the following command:

./mqtt-sn-sub -h <host> -p <port> -i SN_DEVICE -t s/ds -d

After executing this command, the client starts listening for messages from the server. The output of the command is illustrated below:

Subscription

To understand what “511,SN_DEVICE,Hello from Server” means, refer to MQTT-SN static template. Note that operations are dropped if the client is not subscribed to the topic.

MQTT-SN implementation

This section will list the implementation details for the MQTT-SN protocol. The Cumulocity implementation supports MQTT-SN Version 1.2.

Connecting via MQTT-SN

Cumulocity supports MQTT-SN protocol via UDP. By default, it uses port 20000.

Supported MQTT-SN features

MQTT-SN client ID

The MQTT-SN client ID uniquely identifies each connected client. The Cumulocity implementation also uses the client ID to link the client directly to a device.

MQTT-SN Quality of Service

The following QoS levels are supported:

  • QoS 0: At most once
  • QoS 1: At least once

For subscriptions, currently only QoS 0 is supported.

Pre-defined topic IDs

A “pre-defined” topic ID is a topic ID whose mapping to a topic name is known in advance by both the client’s application and the gateway. When using pre-defined topic IDs, both sides can start immediately with sending PUBLISH messages; there is no need for the REGISTER procedure as in the case of ”normal" topic IDs. The following are default pre-defined topics that you can start publishing to:

Topic ID Cumulocity topic Description
1 s/us Cumulocity static template publish topic. This topic should only be used for Device creation (100).
2 s/us/myChildDeviceIdentifier Cumulocity static template publish topic. This topic should be used for all other purposes like publishing data and creation of child devices.
Topic name registration

To register a topic name a client must send a REGISTER message to the gateway. If the registration could be accepted, a topic ID is assigned and sent as part of the REGACK message to the client. If the registration could not be accepted, a REGACK is returned to the client with the failure reason encoded in the ReturnCode field. After having received the REGACK message with ReturnCode=“accepted”, the client can start using the assigned topic ID to publish data of the corresponding topic name. If however, the REGACK contains a rejection code, the client may try to register later again.

SmartREST 2.0

The MQTT-SN gateway supports the SmartREST 2.0 payload format which is described in detail in SmartREST 2.0 in the Device SDK guide.

Usage

The following example shows how to publish to the SmartREST 2.0 topic:

./mqtt-sn-pub -h <host> -p <port> -i <clientId> -t s/uc/<X-ID> -m <message> -d

In this example as the full topic is specified via -t option, MQTT-SN-TOOLS first attempts to register the topic name and then uses the assigned topic ID to publish the message, see also Topic name registration.

The MQTT-SN gateway also supports subscription for responses.

Limitations

Currently, MQTT-SN gateway does not support TRANSIENT, QUIESCENT or CEP Processing Modes.

MQTT static template

To ease device integration, Cumulocity supports a number of static templates that can be used by any client without the need for creating own templates. For further information on MQTT static templates refer to MQTT static templates in the Device SDK guide.

The usage of MQTT static templates is described in Hello MQTT-SN.

Limitations

Currently, the MQTT-SN gateway does not support TRANSIENT, QUIESCENT or CEP processing modes.

Sigfox

Cumulocity can interface with Sigfox devices through the Sigfox Cloud. You can:

  • Provision Sigfox devices easily using Cumulocity Device Management.
  • Decode upstream payload packets using a web-based user interface.
  • Debug and post-process raw device data through Cumulocity events.
  • Send downstream data to the device using Cumulocity operations.
  • Make use of existing Cumulocity features with Sigfox devices, for example: connectivity monitoring, device management, data visualization with dashboards, real-time analytics and more.

The following illustration grants you a quick overview of the Cumulocity Sigfox integration:

Cumulocity Sigfox integration

The following sections describe how to:

Moreover, check out the Troubleshooting section in case of any issues.

Info: To be able to use the Sigfox agent, your tenant needs to be subscribed to the following applications: sigfox-agent, feature-fieldbus4. In case of any issues, please contact support.

Managing the connectivity settings

Before you register a device, you need to configure Sigfox Cloud credentials in the Connectivity page in the Administration application. You have to set up these Sigfox Cloud credentials in Sigfox.

Before you create API access to Cumulocity, you need to have an “Associated user” which is added to the Cumulocity group in Sigfox Cloud and has the following profiles:

  • Customer [R]
  • Device Manager [W]

Important: Without the profiles described below, the required Sigfox API access can not be set up.

Step 1

If you already have an associated user make sure it has the profiles mentioned below and proceed to step 2.

The group name is not constrained. "Cumulocity" is used as a sample group name throughout the remaining steps.

First, enter into your Sigfox Cloud account and create a new user. Add the user to the group and select the “Customer [R]” and “Device Manager [W]” profiles.

New user

Step 2

After creating an “Associated user” with the proper group and profiles navigate to the Groups page. In the API access tab, create a new entry and add the following profiles:

  • Customer [R]
  • Device Manager [W]

API access page

Step 3

After the API access entry has been created, you can connect your Sigfox Cloud account to Cumulocity via the Connectivity page in the Administration application. Navigate to the Connectivity page and switch to the Sigfox provider settings tab.

The following information has to be provided:

  • Login: The login token is located in the API access entry in the Sigfox Cloud.
  • Password: The password token is located in the API access entry in the Sigfox Cloud next to Password.
  • Parent Group ID: This ID is written in your URL when you are logged into your Sigfox account and you have selected the “Cumulocity” group. For example, “https://backend.sigfox.com/group/**9823ruj29j9d2j9828hd8**/info”.

Info:The group name in the screenshot below is only an example. It does not necessarily have to be "Cumulocity".

API access page

API access page

Click Save credentials to save your settings. If everything is correct, a message "Credentials successfully saved" will be displayed.

If you wish to overwrite your previous credentials, click Replace credentials and add your new credentials.

Creating device protocols

To process data from Sigfox devices, Cumulocity needs to understand the payload format of the devices. Mapping payload data to Cumulocity data can be done by creating a Sigfox device protocol.

During the device registration, you can associate this device protocol. The received uplink callbacks for this device with a hexadecimal payload will then be mapped to the ones you have configured in your device protocol.

If a device protocol has been changed after being associated to a device, the reflection of the change can take up to 10 minutes because of the refresh mechanism of the Sigfox microservice.

Info: Device protocol mapping only supports decoding for fixed byte positions based on the message type.

To create device protocols, select Device protocols in the Device types menu in the navigator of the Device Management application. You can either import an existing device protocol or create a new one.

Importing a device protocol

In the Device protocols page, click Import.

Select the desired predefined device type or upload it from a file. When ready, click Import again.

Creating a new device protocol

In the Device protocols page, click New device protocol and select Sigfox from the options list.

New Sigfox protocol

Provide a name for the device protocol an and optional description, and click Create.

Under Message types, specify the message types. Sigfox devices can send messages of different types with different encodings per type. Depending on the device, the type can be determined by looking either at the FPort parameter of a message (Source: FPort) or at the subset of the message payload itself (Source: Payload).

In the Source field, select the way the message type is encoded:

  • Payload: if the message type can be determined by looking at the subset of the message payload itself

In the following sample payload structure, the first byte indicates the message type source (as highlighted).

Example payload: message type source

In the user interface, you can enter this type of message type source information as follows: In the Start bit field, indicate where the message type information starts in the payload. In the Number of bits field, indicate how long this information is. For example, start bit = "0" and number of bits = "8".

Sigfox protocol

Configuring values

Click Add value to create the value configuration.

Sigfox protocol add value

In the following window, configure the relevant values as shown in this example.

LoRa protocol add new value

LoRa protocol add new value

The value configuration maps the value in the payload of a message type to the Cumulocity data.

Under Message type, configure the Message ID according to your device message specification. The message ID is the numeric value identifying the message type. It will be matched with the message ID found in the source specified on the device protocol main page (i.e. Payload or FPort). The message ID needs to be entered in decimal numbers (not hex).

In this sample payload structure the message ID is "1".

Example payload: message type source

LoRa bits

Under General, specify a name for the value and the category under which it will be displayed in the values list.

Under Value selection, specify from where the value should be extracted. In the Start bit field, indicate where the value information starts and in the Number of bits field, indicate the length of the information.

In this example, the "Channel 1 Type" information starts in byte 2 (i.e. start bit = "16") and is 1 byte long (i.e. number of bits = "8").

Example payload: value selection

LoRa bits

The hexadecimal value is converted to a decimal number and afterwards a "value normalization" is applied.

Under Value normalization, specify how the raw value should be transformed before being stored in the platform and enter the appropriate values for:

  • Multiplier: This value is multiplied with the value extracted from the Value selection. It can be decimal, negative or positive. By default it is set to 1.
  • Offset: This value defines the offset that is added or subtracted. It can be decimal, negative or positive. By default it is set to 0.
  • Unit (optional): A unit can be defined which is saved together with the value (e.g. temperature unit "C" for degree Celsius).

For detailed information on how to decode the payload, refer to the documentation of the device.

Under Options, select on of the following options, if required:

  • Signed - if the value is a signed number
  • Packed decimal - if the value is BCD encoded

Under Functionalities, specify how this device protocol should behave:

  • Send measurement: creates a measurement with the decoded value
  • Raise alarm: creates an alarm if the value is not equal to zero
  • Send event: creates an event with the decoded value
  • Update managed object: updates a fragment in a managed object with the decoded value

You can also have a nested structure with several values within a measurement, event or managed object fragment. In case of a measurement, all the properties of the same type will be merged to create a nested structure. In case of an event or a managed object all the properties with the same fragment are merged to create a nested structure. (Also refer to the example of a nested structure for a "Position" device protocol below.)

Click OK to add the values to your device protocol.

Value configurations of created device protocol

Click Save to create the device protocol.

Example with single property

The following images show an example for a message which sends a measurement when the battery level value changes.

Battery level changes example

Battery level changes example

Example with nested structure

The following images show an example of a nested structure for a device protocol, reporting the current position of a GPS device. The device protocol is named "Position" and contains values for longitude and latitude.

The message ID should be the same for all the values. Enter the rest of the parameters according to the instructions above. Enter "c8y_Position" in the Managed object fragment field and create a new value for each: longitude and latitude.

Value creation: Longitude-nested

Value creation: Latitude-nested

This will be the result:

Value configuration in detail: nested structure

Registering Sigfox devices

To register a Sigfox device, navigate to the Registration page in the Devices menu in the Device Management application and click Register devices. In the upcoming window, select Custom device registration and then Sigfox.

Register devices

Info: If Sigfox is not one of the available options, your tenant is not subscribed to the relevant applications, see information at the top.

In the next window, fill in the required information:

  • ID: Unique device ID. The value must be a hexadecimal number.
  • PAC: Porting authorization code for your device. The value must be a hexadecimal number.
  • Contract: Choose your desired contract.
  • Device protocol: Select your desired device protocol from the drop-down list.
  • Product certificate key: This key can be located in https://partners.sigfox.com/. Navigate to your device and copy the certificate key.

Info: The term "Device type" is used both by Sigfox and Cumulocity, but with different meaning. In Sigfox, a device type specifies how to route data from devices. In Cumulocity, a device type describes the data that is sent by devices of a particular type.

Register devices1

After clicking Next the device registration request will be submitted and the device will be created.

You can verify that the device is really connected by checking that events are actually coming in. You can do so by clicking on a device and opening its Events tab. All events related to this device are listed here.

For more information on viewing and managing your connected devices, also refer to Device Management.

Updating devices registered with the general device registration

If devices have previously been registered via the general device registration the following URLs have to be manually changed in the Sigfox Cloud:

Info: General device registration for Sigfox devices is no longer supported.

Sending operations

If the device supports sending hexadecimal commands, you can send commands from the “Shell”. In the Device Management application, navigate to the device you want to send an operation to in the All devices page. Switch to the Shell tab.

Info: Operations do not go to executing state immediately. They go to executing state when the device is expecting the downlink message. Afterwards, the pending operation which is created first goes to executing state.

Troubleshooting

No contracts available

No contracts available error

In order to resolve this error, please contact support.sigfox.com to create a contract for your Sigfox account.

Sigfox callbacks in backend.sigfox.com are not created correctly

Callback information

The information for the callback setup is retrieved by a microservice.

To verify whether your setup is correct, execute the following REST API request:

```http
GET {{url}}/tenant/currentTenant 
```

Info: The request above is simply an example API request that could be used. For more info on REST API requests, refer to the Tenants in the Reference guide.

Issues with alarm provisioning

!Failed operation

If the "transfer operation failed" alarm is triggered, the device is already provisioned in the Sigfox platform and changing the device type in the Sigfox platform failed. In order to fix this issue, you have to manually change the device type in the Sigfox platform to the intended one.

Provisioned status is set to false

!False provision

In case of this alarm, you can see that the Provisioned status is set to "false" which means that no data is coming from the Sigfox platform. In the alarm message there is more information regarding the error. In this case the PAC code given during registration was invalid.

Info: If the provisioning process has been completed, but has failed, information is returned as an alarm with the reason of the failure provided.

The Provisioned status is set to true when the device provisioning process is completed and success information is received from the Sigfox platform. Additionally, it is set to true when uplink messages are retrieved from the device.

Info: The status is updated asynchronously which means that sometimes you might have to wait a bit until it is set to true.

Tenant SLA Monitoring

Overview

The Tenant SLA Monitoring service lets service providers monitor the availability and response time of tenants and sub-tenants.

In detail, it offers the following features:

  • monitoring of the availability for each tenant
  • information on the current availability status of tenants (yes/no)
  • information on the tenants availability in percentage
    • during the last day
    • during the last week
    • during the last month

By using Tenant SLA Monitoring, service providers can instantly check

  • if any tenant is currently down,
  • if all tenants are fully functional,
  • the current response time for each tenant,
  • the current status of a specific tenant,
  • the availability KPIs (key performance indicators) of all tenants in the last day/week/month.

Info: The tenant SLA monitoring service is only available to the management tenant.

Use the the Device Management application to visualize Tenant SLA Monitoring data.

Using Tenant SLA Monitoring

Prerequisites

The management tenant needs to be subscribed to the application “Tenant-sla-monitoring” to see any monitoring results.

Tenant Monitoring application

For details on application subscription, refer to Administration > Managing Tenants > Subscribing to applications in the User guide.

How the service works

Every 5 minutes, the Tenant SLA Monitoring service probes for the response time of each tenant, and all its sub-tenants (if not disabled), and stores the results.

To be able to do so, the service automatically subscribes to all sub-tenants of a subscribed tenant, to get its credentials and gain access to its API.

Moreover, for each subscribed tenant (i.e. management tenant), a source in the Device Management application is created in which the monitoring results, including those of the sub-tenants, are stored as measurements.

Viewing measurements

To view the measurements showing the monitoring results, open the management tenant´s source (device) in All devices in the Device Management application and switch to the Measurements tab.

Tenant Monitoring measurements

In the API Response Time diagram, you see the response time of the tenants in milliseconds.

Additionally, you will find diagrams showing the average availability values for the tenants for the following periods:

  • Api Availability Day Average - 24 hours
  • Api Availability Week Average - 7 days
  • Api Availability Month Average - 30 days

These average values are calculated by summing up the timespan of all timeout and response time alarms (e.g. created if data is missing, see below) for the specific time period and divide it by the total timespan.

Tenant Monitoring Day Average

For further details on measurements refer to Device Management > Device details > Measurements in the User guide.

Creating alarms

The Tenant SLA Monitoring service will create alarms in case of the following scenarios:

  • Unavailability of a tenant - Whenever a tenant is not reachable, the service will not store any measurement but will leave gaps in the measurement series. When the tenant becomes available again, the service will search for the last measurement stored for the tenant and create an alarm for the calculated time of unavailability.
  • High response times - If the required response time is not met (defaults to 300ms). This alarm will be active until the response time drops below the defined limit again.
  • Time spans which have not been monitored

These alarms are used to calculate the availability of the system in percentage, shown as measurements (see above).

To view recent alarms, switch to the “Alarms” tabs of the management tenant´s source.

webMethods Integration Cloud

Since 2018, webMethods Integration Cloud can be used to integrate with Cumulocity IoT. With the launch of a common Software AG Cloud platform, the integration has been further enhanced by providing single sign-on access between webMethods Integration Cloud and Cumulocity IoT for a seamless experience.

More information on the webMethods Integration Cloud is available at https://www.softwareag.cloud/site/product/webmethods-integration.html.

Info: Related to this, support for the Cumulocity Zapier integration will be discontinued. No new subscriptions are possible with immediate effect. Functionality for existing customers is not affected.