Getting started with your own instance of Bosch IoT Rollouts on Bosch IoT Suite Portal

Introduction

Bosch IoT Rollouts can be booked in self service manner within in the Bosch IoT Suite portal. This document will guide you through the steps to:

Applicable to Rollouts customers of

  • Rollouts EU1 - Bosch IoT Suite portal

Creating the service over the Bosch IoT Suite portal

  • Go to the Bosch IoT Suite portal and click “Try now!”.
  • Click to subscribe for “Free” plan (which is feature complete but limited to 50 devices).
  • Register for a Bosch Account if you do not have one yet.
  • Log in as soon as you have an account.
  • Fill out the name of the Rollouts instance and click “Subscribe”.
  • Wait a few seconds and then click (repeatedly) the refresh button until your new instance is in the status “active”.

Try out the Management UI

First thing to try is the Management UI.

  • Click on the “Dashboard” button of your instance.
  • You should see an empty Management UI.

Management UI - Initial

  • Now go to the “Upload” view in the navigation.
  • Create your first Software Module of type OS by clicking on the “+” icon.
Management UI - New Software Module
  • Upload one or multiple files into your module.

Management UI - New Artifact

  • Now package your module into your very first Distribution by going to the “Distributions” view in the navigation.
  • Create a Distribution of type “OS only” and assign (Drag’n Drop) your module onto your set.
Management UI - New Set

Try out the Direct Device Integration API

The Direct device Integration API is one out of two ways to integrate devices with Bosch IoT Rollouts. We will use curl to demonstrate device access. However, every http client should work.

  • Go back to Management UI into “System Config” view to configure one device authentication mechanism. We will choose “gateway security token” authentication, useful for development and testing purposes.
Management UI - Gateway Token
  • We will use Rollouts Plug and Play mechanism (i.e. an authenticated device that does not exist yet is automatically registered). For that run again a curl command against DDI.

In this example:

$ curl --header "Authorization: GatewayToken 749d1b2c25740f177dfc44c6d5e4144b" https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice


{
  "config": {
    "polling": {
      "sleep": "00:05:00"
    }
  },
  "_links": {
    "configData": {
      "href": "https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice/configData"
    }
  }
}
  • Now go back to Management UI into Deployment view and assign (Drag and Drop) your distribution to the device .

Management UI - Deploy

  • You should see an active action in the history.
  • The update is visible to the device under the deploymentBase resource:
$ curl --header "Authorization: GatewayToken 749d1b2c25740f177dfc44c6d5e4144b" https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice


{
   "config":{  
      "polling":{  
         "sleep":"00:05:00"
      }
   },
   "_links":{  
      "deploymentBase":{  
         "href":"https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice/deploymentBase/385?c=1945083496"
      },
      "configData":{  
         "href":"https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice/configData"
      }
   }
}

$ curl --header "Authorization: GatewayToken 749d1b2c25740f177dfc44c6d5e4144b" https://device.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/controller/v1/myVeryFirstTestDevice/deploymentBase/385

{  
   "id":"385",
   "deployment":{  
      "download":"forced",
      "update":"forced",
      "chunks":[  
         {  
            "part":"os",
            "version":"1.0",
            "name":"MyFrstFirmware",
            "artifacts":[  
               {  
                  "filename":"myFirmwarePackage.tar.gz",
                  "hashes":{  
                     "sha1":"65f22b9804140e902c5bc17d28e021014db90184",
                     "md5":"f2a4fc1c824b0f8859b88c2db0b27808"
                  },
                  "size":48111836,
                  "_links":{  
                     "download":{  
                        "href":"https://cdn.eu1.bosch-iot-rollouts.com/CD817143-94A0-423B-BA2A-AC3C0163F020/65f22b9804140e902c5bc17d28e021014db90184?Expires=1520514036&Signature=Fj3l6YJngdzN4khSS-UjaDurJqCWpg5eA0hIGqA5wTGJWoSBFcWZvDzLeMT9eZ6przYC4z3xRNmqAjozC7leUO1gd3DFp7o88PxqIxk-wdrVXM~6ZvDPvh8st1LB-rsDusq6svHDCwz8fVFM6TTKvvIGmXE0TLAQqUUMN-3FLwMGqHVEVfwsVY7ChC1rVZ4HOQnELa72bd3Evw0r7YmY2uZwXgqRturf721N4zFX79ug9zRdqnVNUqqiXuzWTosXKriNAjwdfMsAMcgNcFKVk67ue9ATBRt8Xexe7ySFp3fvbUnA~P-FGyhpykN4W5YUDaOo~Jj57347RVMsD33MvA__&Key-Pair-Id=APKAJ7V55VK3Y2WFZOHQ"
                     }
                  }
               }
            ]
         }
      ]
   }
}

Optional: Try out the Management API

API and UI are feature compatible, i.e. every management operation can be executed either by API or UI. In this tutorial we will briefly read (GET) all Software Modules in the instance. We will use again curl to demonstrate.

  • Go back to your suite portal account and click now (instead of “Dashboard”) the “Tokens” button.
  • In the provided JSON document you will find necessary credentials to access the API.
  • By using these credentials you will now be able to login to Bosch IoT Rollouts by Management API or UI.

For example:

...
"mgmt-https" : {
      "password" : "55eab1b0-0df0-4d35-89dc-addbefa98381",
      "port" : "443",
      "host" : "api.eu1.bosch-iot-rollouts.com",
      "dashboard_url" : "https://console.eu1.bosch-iot-rollouts.com/login/oauth2/ciam?tenant=CD817143-94A0-423B-BA2A-AC3C0163F020&type=CLOUD_USER",
      "uri" : "https://CD817143-94A0-423B-BA2A-AC3C0163F020\\24c2128a-8e1a-4946-ba8a-79e3bb095507:55eab1b0-0df0-4d35-89dc-addbefa98381@api.eu1.bosch-iot-rollouts.com:443",
      "tenant" : "CD817143-94A0-423B-BA2A-AC3C0163F020",
      "username" : "24c2128a-8e1a-4946-ba8a-79e3bb095507"
    },
...
  1. Run a REST query against Software Module resource

In this example:

$ curl https://CD817143-94A0-423B-BA2A-AC3C0163F020\\24c2128a-8e1a-4946-ba8a-79e3bb095507:55eab1b0-0df0-4d35-89dc-addbefa98381@api.eu1.bosch-iot-rollouts.com:443/rest/v1/softwaremodules

{
  "content": [
    {
      "createdBy": "CIAMkai.zimmermann@bosch-si.com",
      "createdAt": 1517920035784,
      "lastModifiedBy": "CIAMkai.zimmermann@bosch-si.com",
      "lastModifiedAt": 1517920159475,
      "name": "MyFrstFirmware",
      "description": "My very first software module.",
      "version": "1.0",
      "type": "os",
      "vendor": "Bosch Software Innovations",
      "_links": {
        "self": {
          "href": "https://api.eu1.bosch-iot-rollouts.com/rest/v1/softwaremodules/1269"
        }
      },
      "id": 1269
    }
  ],
  "total": 1,
  "size": 1
}

What’s next?

Also have a look to the User Guides.

.. or API specifications:

For Management API and Direct Device Integration API see:

For Device Management Federation API see: