Bosch IoT Rollouts

SOUP From device to system updates

Table of contents:

Introduction

The System Software Update extension of Bosch IoT Rollouts (SOUP) extends the capabilities of IoT Rollouts for updating devices to update a set of devices working together as a system. This documentation shows how the existing concepts are extended to allow for updating systems.

Recap on updating devices with IoT Rollouts

In IoT Rollouts, each device is treated as a distinct entity, known as an IoT Rollouts (provisioning) target. A device can consist of multiple components, such as a WiFi chip, processor, or application, each of which can be updated independently. To update a device, you use a distribution set, which contains software modules tailored for the device's components. You can assign this distribution set to the device manually, using a target filter, or through a rollout.

images/confluence/download/attachments/4933343273/HC-NCSU-21-version-1-modificationdate-1730293148000-api-v2.jpg

From devices to systems

A system is a group of inter-dependent devices. Within a system, each device is referred to as a module. Modules that can be updated are managed as IoT Rollouts targets, while non-updatable modules are monitored for dependencies.

Example: HVAC System

Consider an HVAC system consisting of a gateway that communicates with the backend and connects to various modules, either via a bus or wirelessly. In this system, the gateway, heat pump, and buffer tank are updatable modules. Although thermostats and heating elements cannot be updated, they still have dependencies on the updatable modules. Therefore, they are also tracked by SOUP.

images/confluence/download/attachments/4933343273/HC-NCSU-18-version-1-modificationdate-1730278376000-api-v2.jpg

Updating systems

To update a system, you first need to provide a distribution set for each module that should be updated within the system. Then you need to identify each module within the system. For this, a filter query, also known as a match query, is used to identify the matching modules. Afterwards, a module update definition that groups the match query and the distribution set is created. For non-updatable modules, you create module update definitions without a distribution set. The collection of these module update definitions is referred to as a recipe, or system update definition. By analyzing the intersection of all match queries, SOUP identifies compatible systems for the given recipe.

Example: Updating an HVAC system

To update an HVAC system, you would create a module update definition for the gateway, heat pump, and buffer tank. Each referencing a distribution set containing the required artifacts to update the module. For non-updatable modules like thermostats and heating elements, you would ensure they have definitions without distribution sets. These definitions are then combined into a recipe to identify matching HVAC system and execute the system update on them.

images/confluence/download/attachments/4933343273/HC-NCSU-20-version-1-modificationdate-1730292375000-api-v2.jpg