Bosch IoT Device Management

2020-09-17 - Required configuration changes

The latest Bosch IoT Suite for Device Management release brings news and improvements regarding:

Apache Kafka

Bosch IoT Suite for Device Management now uses Apache Kafka to ensure reliable message delivery. Therefore, all subscriptions to the package made before September 23rd 2020 require some manual configuration changes in order to continue to work as expected with devices provisioned via the Bosch IoT Manager UI or the Developer Console.

The new configuration is applied automatically for subscriptions made after that date, therefore no changes are required for them.

If you have a subscription for Bosch IoT Suite for Device Management created before September 23rd 2020 , please go through the following steps:

Create a Kafka connection in your Bosch IoT Things solution

For that purpose, go to the Bosch IoT Things HTTP API, Solutions section.

By default, any changes there can be made with your Bosch User and apiToken authentication, unless the solution policy has been changed so as to authorize another user for that as well.Find the method POST /solutions/{solutionId}/connections

In it use the following request body:

{
"name": "Device Management",
"connectionType": "kafka",
"connectionStatus": "open",
"uri": "ssl://msk-01.eu1.bosch-iot-suite.com:9991",
"targets": [
{
"address": "{PREFIX}.things2di/{{ thing:id }}",
"topics": [
"_/_/things/twin/events"
],
"authorizationContext": [
"integration:{SOLUTION_ID}:iot-manager"
],
"headerMapping": {
"service-instance-id": "{SERVICE_INSTANCE_ID}",
"correlation-id": "{{ header:correlation-id }}"
}
}
],
"specificConfig": {
"bootstrapServers": "msk-01.eu1.bosch-iot-suite.com:9991,msk-01.eu1.bosch-iot-suite.com:9992,msk-01.eu1.bosch-iot-suite.com:9993",
"saslMechanism": "PLAIN"
}
}

In the request body, replace {PREFIX}, {SOLUTION_ID} and {SERVICE_INSTANCE_ID} with:

{PREFIX} - for free plans replace it with Shared, whereas for paid plans replace it with the Service Instance ID as described below

{SERVICE_INSTANCE_ID} - the Service Instance ID of the respective subscription for which the connection is being made

{SOLUTION_ID} - The Bosch IoT Things Solution ID, which you can find on the Things Dashboard (see screenshot)

images/confluence/download/attachments/1634789581/dm_di_solution_id_things_dashboard.png


or on the Service Subscriptions page after clicking Show Credentials (see screenshot).


images/confluence/download/attachments/1634789581/dm_di_credentials.png

Complement the policy of each registered device

Using the Bosch IoT Things HTTP API, add the following section into each registered device policy via the PUT /policies/{policyId}/entries/{label} method:

"DEVICE-MANAGEMENT": {
"subjects": {
"iot-suite:/service-instance.{SERVICE_INSTANCE_ID}.iot-things@iot-manager": {
"type": "suite-auth"
},
"iot-suite:/service-instance.{SERVICE_INSTANCE_ID}.iot-things@iot-rollouts": {
"type": "suite-auth"
},
"iot-suite:/service-instance.{SERVICE_INSTANCE_ID}.iot-things@developer-console": {
"type": "suite-auth"
},
"integration:{SOLUTION_ID}:iot-manager": {
"type": "iot-things-integration"
}
},
"resources": {
"thing:/": {
"grant": [
"READ",
"WRITE"
],
"revoke": []
},
"message:/": {
"grant": [
"READ",
"WRITE"
],
"revoke": []
}
}
}

In it, replace{SERVICE_INSTANCE_ID} and {SOLUTION_ID} with:

{SERVICE_INSTANCE_ID} - the Service Instance ID of the respective subscription

{SOLUTION_ID} - The Bosch IoT Things Solution ID, which you can find as described above.


Software Updatable v.2.0

In addition, Bosch IoT Suite for Device Management now officially supports the https://github.com/eclipse/vorto/tree/development/models/org.eclipse.hawkbit.swupdatable-SoftwareUpdatable-2.0.0.fbmodel Vorto model.

Digital twin model mapping

As part of the new release, the format of the commands sent to a device now follows the official Specification digital twin model mapping. This introduces some changes to the operation parameters used in commands. If you rely on the current operation parameter schema, where parameters are sent as arg_0, arg_1, … you will need to apply some changes to their format. As part of the aforementioned specification you need to set the parameter order in а x-things-parameter-order header.

See Specification digital twin model mapping for more information and examples.

Change in the device attributes

Bosch IoT Suite for Device Management now introduces a standard "Info" attributes section for managing core device information used throughout the Suite. Use "Info" as a fixed top-level Thing object attribute with the following entries:

optional displayName as string

"Short general purpose descriptive name"

optional tags as dictionary[string, boolean]

"Assigned tags of this entity as dictionary of name of the tag to a boolean that expresses if this tag applies."

optional groupPath as string

"Path indicating on which nested grouping structure this entity is located in; path should start with slash '/' and nested groups are also seperated with slash '/' "

optional gateway as boolean

"Indication if this device/thing is representing a gateway"

optional gatewayId as string

"If this device/thing is not a gateway, then optionally the reference to a gateway device/thing is represented with this property"

optional softwareUpdatable as boolean

"Is this device/thing able to update software/firmware versions?"

As a result of these attribute changes, all previously created tags, directories, filters etc. will be visualised as common devices. In order to be properly visualised their data needs to be converted by adding a definition following one of the three new Vorto models, which mark the respective:

Due to the change in the structure of the attributes associated with devices, which are used internally by the Bosch IoT Rollouts service, all running rollout campaigns and assignments need to be cancelled and re-created.

Feel free to contact us, if you need any assistance.