Bosch IoT Insights

Playback widget

The Playback widget can be used to load time series data of other widgets on your dashboard. For some widgets, Playback can be defined in the data source settings to replay the data.

The Playback widget can only be placed once on a dashboard.

The Playback widget can be used in combination with the following widgets:

Example

images/confluence/download/attachments/1083888369/Widget_Playback_Example_2020_07_28-version-1-modificationdate-1602594226000-api-v2.png

Proceed as follows

  1. Select the Playback widget in the widget list.
    → The widget configuration page is displayed.

    images/confluence/download/attachments/1083888369/Widget_Playback_Configuration-version-1-modificationdate-1675333770000-api-v2.png
  2. Configure the settings as described below.

  3. Click the Add button.
    → The widget is added to the dashboard.

Dashboard Settings

Open the Dashboard Settings pane to set how the widget is displayed in the dashboard.

  1. In the Size drop-down list, decide how much space the widget should take in the form of columns.

  2. In the Visibility drop-down, set whether the widget should be visible or hidden. You can also define for which specific roles the widget will be shown or not. This setting allows you to customize dashboards for specific user groups that have a certain role.

    Visible: The widget is visible for all (default)
    Visible for roles: The widget is visible if any of the selected roles matches one of the user's project role
    Hidden: The widget is hidden for all
    Hidden for roles: The widget is hidden if any of the selected roles matches one of the user's project role

  3. In the Layout behavior drop-down list, decide how the size of the widget should be adapted in the dashboard.

  4. In the Title field, enter a title for the widget.

    For a dynamic title, you can add placeholders with the ${...} notation. Possible placeholder sources are filterParams (if a filter widget exists on the dashboard, e.g. ${filterParams.paramName}) or data from the data source (if source is specified, e.g. ${[0].payload.value}), insights (user context), dashboardName or widgetId.

General Settings

Open the General Settings pane to configure some general aspects for the widget.

  1. In the Widget Refresh Interval in Seconds field, enter a value in seconds after which the widget should be refreshed.

  2. In the Lazy Loading drop-down list, select whether you want to enable or disable lazy loading.

    Lazy loading is enabled by default. That way, widgets are only loaded when they are visible on screen. This prevents slower loading of the dashboard and performance issues.

Data Sources

Open the Data Sources pane to configure the data source for the widget.

You can select a maximum of five data sources.

You can choose between a new data source and an existing data source, i.e. a data source which has already been configured on another widget on the same dashboard. The shared data source's configuration can be edited on any of the widgets that are using it, and such changes will be reflected on all respective widgets. Likewise, when one of these widgets is refreshed, the new data will be displayed on all widgets which use the same data source.

The fact that a data source is shared is indicated by aimages/confluence/download/thumbnails/1083888369/link-version-1-modificationdate-1750920736000-api-v2.png link icon next to its label. Using a shared data source will improve the dashboard's performance, ensure faster loading times and avoid redundant calls to the backend.

To avoid conflicts, every data source must have a unique label within the dashboard.

  1. Click the + Add Source button to add a data source.

  2. Select any of the following options further explained underneath:

Query Template

  1. Click the edit icon next to the data source label to define a unique label within the dashboard, if needed.
    images/confluence/download/thumbnails/1083888369/edit_label_data_source-version-1-modificationdate-1750920736000-api-v2.png

  2. In the Query Template drop-down list, select a query template that you configured under Explore > Data Explorer, refer to Template Designer.

    A query template is a template that has been created, parameterized, and provided for others. It is similar to an SQL View and shows data in a table view.

    To connect the widget with the Filter widget you created for this dashboard, click the Available references icon images/confluence/download/thumbnails/1083888369/icon_reference-version-1-modificationdate-1602594226000-api-v2.png and select the Filter.

    If you have a time parameter, you can choose between absolute time and relative time by clicking the time icon images/confluence/download/thumbnails/1083888369/icon_absolute_relative_time-version-1-modificationdate-1616506559000-api-v2.png .

  3. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  4. Click the Save Data Source button.

Single Device

  1. Click the images/confluence/download/thumbnails/1083888369/edit-version-1-modificationdate-1750920736000-api-v2.png edit icon next to the data source label to define a unique label within the dashboard, if needed.

  2. In the Default Device ID drop-down list, select a Device ID.

    To connect the widget with the Filter widget you created for this dashboard, click the Available references icon images/confluence/download/thumbnails/1083888369/icon_reference-version-1-modificationdate-1602594226000-api-v2.png and select the Filter.

  3. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  4. Click the Update Source button.

Multiple Devices

  1. Click the images/confluence/download/thumbnails/1083888369/edit-version-1-modificationdate-1750920736000-api-v2.png edit icon next to the data source label to define a unique label within the dashboard, if needed.

  2. In the Select Device Types drop-down list, select a device type.

  3. Click the Advanced Settings button to narrow down the output.

  4. In the Start field, enter a value to specify the device to start with.

    Example: If you select 3, the first two devices are skipped.

  5. In the Limit field, enter a value to specify the last device.

    The maximum is 200 devices.

  6. In the Fields field, enter the fields whose information shall be retrieved from Device Management.

  7. In the Sort field, enter a field configured in Device Management according to which the data shall be sorted.

  8. In the Namespaces field, add namespaces separated by a comma.

  9. In the DefaultFilter field, add a filter to narrow down the search results.

    To connect the widget with the Filter widget you created for this dashboard, click the Available references icon images/confluence/download/thumbnails/1083888369/icon_reference-version-1-modificationdate-1602594226000-api-v2.png and select the Filter.

  10. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  11. Click the Update Source button.

Device Count

The Device Count data source is based on the counting functionality in Device Management and is used to count things.

  1. Click the images/confluence/download/thumbnails/1083888369/edit-version-1-modificationdate-1750920736000-api-v2.png edit icon next to the data source label to define a unique label within the dashboard, if needed.

  2. In the Select Device Type drop-down list, select the device types/devices to be used as data source.

    • All Devices: Counts all devices regardless of the fact that they have a device type or not

    • All Device Types: Counts the devices that have the thing attribute type which means that the device belongs to a device type

    • Without Device Type: Counts the devices without the thing attribute type

    • Device Type xy: Counts the devices of the selected device types

  3. Click the Advanced Settings button to narrow down the output.

  4. In the Namespaces field, add namespaces separated by a comma.

  5. In the DefaultFilter field, add a filter to narrow down the search results.

    To connect the widget with the Filter widget you created for this dashboard, click the Available references icon images/confluence/download/thumbnails/1083888369/icon_reference-version-1-modificationdate-1602594226000-api-v2.png and select the Filter.

  6. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  7. Click the Update Source button.

Devices from Filter Selection

Devices will be loaded that match the Device filter type configured in the Filter widget.

  1. Click the images/confluence/download/thumbnails/1083888369/edit-version-1-modificationdate-1750920736000-api-v2.png edit icon next to the data source label to define a unique label within the dashboard, if needed.

  2. In the Pagination Limit field, enter a limit of devices that shall be displayed per page.

  3. In the Sort field, enter a property according to which the devices shall be sorted.

  4. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  5. Click the Update Source button.

External Data Source

Using the external data source, an external endpoint can be specified to reference data.

  1. Click the images/confluence/download/thumbnails/1083888369/edit-version-1-modificationdate-1750920736000-api-v2.png edit icon next to the data source label to define a unique label within the dashboard, if needed.

  2. Select an HTTP method.

  3. In the Request URL field, enter the URL of the request.

  4. In the Type drop-down list, select the type of authorization.

  5. Click the Set Configuration button to set up the selected authorization.

    1. For Basic Auth:

      1. In the Username field, enter the username.

      2. In the Password field, enter the password.

    2. For OAuth 2.0

      1. In the Grant Type drop-down list, select the type of credentials.

      2. Enter the Access Token URL.

      3. Enter the Client ID.

      4. Enter the Client Secret.

      5. If you selected Password Credentials as Grant Type, also enter the Username and the Password .

    3. For OAuth 2.0 (On-behalf grant type)

      1. In the Grant Type drop-down list, select Azure AD On-Behalf.

      2. Configure the scopes of your application API as described in External data source: on-behalf-of (OBO) flow.

  6. If you selected the GET HTTP method:

    1. In the Headers pane, enter a key and a value to specify the header information of the external system.

    2. Activate the Secret Header checkbox to flag the header as secret.

      When editing the data source, the header information has to be provided.

    3. In the Test Parameters pane, enter a filter parameter to test it.

      This pane can be used if a filter widget is configured for the dashboard. The filter values can be referenced as described in this pane within the URL and Headers.

      Modifiers can be used to manipulate referenced filter values. The following modifiers are available:

      • noencode: Only used in URLs. The value is not encoded as it is done by default.

      • join: Concatenates multiple values in one string separating them with the provided separator.

      • replace: Replace multiple occurrences of a search pattern with a specified replacement pattern.

      • queryParams: Creates an entry with the provided parameterName for each value.

      • relativeTimestamp: Calculates a relative time according to the current time. It offers a way to dynamically change the time range with the use of the Filter widget, e.g. gt{$filterParams.dateTime.from | relativeTimestamp}

      • addTime:<insert number in milliseconds>: Calculates the relative time according to the given time from insights.timestamp and using the number from addTime, e.g. gt{insights.timestamp | addTime:-300000}. This modifier is designed for static usage so that a Filter widget is not required. A positive number is also allowed if relevant.

      • prefix: Allows to dynamically add parameters to a value, by means of a prefix, e.g. ${parameter2 | prefix: '&qp1='}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      • suffix: Allows to dynamically add parameters to a value, by means of a suffix, e.g. ${parameter2 | suffix: '&_qp1'}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      Usage examples:

      Example filter context:

      {

      "multi": ["v1", "v2"],

      "mixedValues": ["v1", undefined, "v2"]

      }

      join:

      ${filterParams.multi | join: ','} will result in v1,v2

      replace:

      ${filterParams.mixedValues | replace: 'undefined','N/A'} will result in ["v1","N/A","v2"]

      queryParams:

      ${filterParams.multi | queryParams: 'multiParam'} will result in multiParam=v1&multiParam=v2

      prefix:

      ${filterParams.multi | prefix: 'pre='} will result in pre=v1,pre=v2

      suffix:

      ${filterParams.multi | suffix: '_suffix'} will result in v1_suffix,v2_suffix

      Independently from the test parameters, user-specific information and randomly generated sequences (UUID v4, alphanumeric or hex string) can be referenced.

  7. If you selected the PUT HTTP method:

    1. In the Body pane, select the type of data in the Type drop-down list.

    2. Activate the Secret Header checkbox to flag the header as secret.

      When editing the data source, the header information has to be provided.

    3. In the Test Parameters pane, enter a filter parameter to test it.

      This pane can be used if a filter widget is configured for the dashboard. The filter values can be referenced as described in this pane within the URL, Headers and the Body.

      Modifiers can be used to manipulate referenced filter values. The following modifiers are available:

      • noencode: Only used in URLs. The value is not encoded as it is done by default.

      • join: Concatenates multiple values in one string separating them with the provided separator.

      • replace: Replace multiple occurrences of a search pattern with a specified replacement pattern.

      • queryParams: Creates an entry with the provided parameterName for each value.

      • relativeTimestamp: Calculates a relative time according to the current time. It offers a way to dynamically change the time range with the use of the Filter widget, e.g. gt{$filterParams.dateTime.from | relativeTimestamp}

      • addTime:<insert number in milliseconds>: Calculates the relative time according to the given time from insights.timestamp and using the number from addTime, e.g. gt{insights.timestamp | addTime:-300000}. This modifier is designed for static usage so that a Filter widget is not required. A positive number is also allowed if relevant.

      • prefix: Allows to dynamically add parameters to a value, by means of a prefix, e.g. ${parameter2 | prefix: '&qp1='}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      • suffix: Allows to dynamically add parameters to a value, by means of a suffix, e.g. ${parameter2 | suffix: '&_qp1'}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      Usage examples:

      Example filter context:

      {

      "multi": ["v1", "v2"],

      "mixedValues": ["v1", undefined, "v2"]

      }

      join:

      ${filterParams.multi | join: ','} will result in v1,v2

      replace:

      ${filterParams.mixedValues | replace: 'undefined','N/A'} will result in ["v1","N/A","v2"]

      queryParams:

      ${filterParams.multi | queryParams: 'multiParam'} will result in multiParam=v1&multiParam=v2

      prefix:

      ${filterParams.multi | prefix: 'pre='} will result in pre=v1,pre=v2

      suffix:

      ${filterParams.multi | suffix: '_suffix'} will result in v1_suffix,v2_suffix

      Independently from the test parameters, user-specific information and randomly generated sequences (UUID v4, alphanumeric or hex string) can be referenced.

  8. If you selected the POST HTTP method:

    1. In the Body pane, select the type of data in the Type drop-down list.

    2. Activate the Secret Header checkbox to flag the header as secret.

      When editing the data source, the header information has to be provided.

    3. In the Test Parameters pane, enter a filter parameter to test it.

      This pane can be used if a filter widget is configured for the dashboard. The filter values can be referenced as described in this pane within the URL, Headers and the Body.

      Modifiers can be used to manipulate referenced filter values. The following modifiers are available:

      • noencode: Only used in URLs. The value is not encoded as it is done by default.

      • join: Concatenates multiple values in one string separating them with the provided separator.

      • replace: Replace multiple occurrences of a search pattern with a specified replacement pattern.

      • queryParams: Creates an entry with the provided parameterName for each value.

      • relativeTimestamp: Calculates a relative time according to the current time. It offers a way to dynamically change the time range with the use of the Filter widget, e.g. gt{$filterParams.dateTime.from | relativeTimestamp}

      • addTime:<insert number in milliseconds>: Calculates the relative time according to the given time from insights.timestamp and using the number from addTime, e.g. gt{insights.timestamp | addTime:-300000}. This modifier is designed for static usage so that a Filter widget is not required. A positive number is also allowed if relevant.

      • prefix: Allows to dynamically add parameters to a value, by means of a prefix, e.g. ${parameter2 | prefix: '&qp1='}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      • suffix: Allows to dynamically add parameters to a value, by means of a suffix, e.g. ${parameter2 | suffix: '&_qp1'}. This modifier can also be used as part of an external data source. Undefined parameters will not resolve as "undefined" but will be omitted.

      Usage examples:

      Example filter context:

      {

      "multi": ["v1", "v2"],

      "mixedValues": ["v1", undefined, "v2"]

      }

      join:

      ${filterParams.multi | join: ','} will result in v1,v2

      replace:

      ${filterParams.mixedValues | replace: 'undefined','N/A'} will result in ["v1","N/A","v2"]

      queryParams:

      ${filterParams.multi | queryParams: 'multiParam'} will result in multiParam=v1&multiParam=v2

      prefix:

      ${filterParams.multi | prefix: 'pre='} will result in pre=v1,pre=v2

      suffix:

      ${filterParams.multi | suffix: '_suffix'} will result in v1_suffix,v2_suffix

      Independently from the test parameters, user-specific information and randomly generated sequences (UUID v4, alphanumeric or hex string) can be referenced.

  9. In the Duration in seconds field under Caching, specify the caching duration in seconds.

  10. Click the Source data preview icon images/confluence/download/thumbnails/1083888369/refresh%281%29-version-1-modificationdate-1750920736000-api-v2.png to open a preview.

  11. Click the Save Data Source button.


Data Transformation

With the data transformation activated, you can select entries from arrays in arrays or a specific range of arrays.

Also refer to the JMESPath documentation.

Open the Data Transformation pane to activate the data transformation to JMES.

  1. Activate the toggle switch.

  2. In the Filter field, add a string to filter the data, e.g. [0] to display only the first item or [?contains(thingId,'yourThingName')] to filter by contains in the thingId property.

  3. Click the Transformed data preview icon images/confluence/download/thumbnails/1081316247/refresh%281%29-version-1-modificationdate-1725282802000-api-v2.png to open a preview.
    → The data transformation is activated for the widget.

If you selected more than one data source, the Data Aggregator pane is displayed.

  1. Activate the toggle switch.

  2. In the Data Aggregator drop-down list, select an aggregation method with which each entry of the same index is merged into one result.

  3. Activate the Merge Properties checkbox to merge the properties of the index.

  4. In the Filter field, add a string to filter the data, e.g. [0] to display only the first item or [?contains(thingId,'yourThingName')] to filter by contains in the thingId property.

  5. Click the Transformed data preview icon images/confluence/download/thumbnails/1081316247/refresh%281%29-version-1-modificationdate-1725282802000-api-v2.png to open a preview.
    → The data transformation is activated for the widget.

Playback Settings

Open the Playback Settings pane to further set the Playback widget.

  1. In the Path to Frame Data drop-down list, select the base path for the time series data that shall be displayed in the widget.

    Only the specified time series data will be filtered and not the whole document.

    The iterator [i] is used for the path to traverse the elements of a data set.

  2. In the Path to Time Identifier drop-down list, select the path of the time element from your data.

  3. In the Default Speed drop-down list, select a speed for the widget.