The chat responses are generated using Generative AI technology for intuitive search and may not be entirely accurate. They are not intended as professional advice. For full details, including our use rights, privacy practices and potential export control restrictions, please refer to our Generative AI Service Terms of Use and Generative AI Service Privacy Information. As this is a test version, please let us know if something irritating comes up. Like you get recommended a chocolate fudge ice cream instead of an energy managing application. If that occurs, please use the feedback button in our contact form!
Skip to content
Insights Hub and Industrial IoT

Insights Hub drives smart manufacturing through the industrial Internet of Things. Gain actionable insights with asset and operational data and improve your processes.

IoT Time Series Client for Java¶

Introduction¶

The IoT TimeSeries Java client allows you to interact with time series data related to assets. Refer to IoT Time Series for more information about the service.

Further implementation of the IOT TimeSeries SDK library has been shown in a sample project that you can download and test in local or on Insights Hub application. Please refer to this repository: industrial-iot-java-sdk-examples

Hint

In the IoT context, assets are referred to as entity and aspects as propertyset.
Placeholders in the following samples are indicated by angular brackets < >.

Time Series Operations¶

Client Name: TimeSeriesOperationsClient

Create or update time series data for multiple unique asset-aspect (entity-property set) combinations¶

  • Create or update time series data for multiple unique combinations of assets (entities) and aspects (property sets). In case of an update of data at an already existing time, all properties at that time will be replaced by the ones provided in the request. All asset-aspect (entity-property set) combinations need to belong to the same tenant.

Request body limitations:

  1. A maximum of 5 asset-aspect (entity-property set) combinations can be provided
  2. The request body size must be equal or less than 100 kb
  3. A maximum of 100 time series data items can be provided overall
// Construct the PackageProvisioningClient object
  TimeSeriesOperationsClient ts = TimeSeriesOperationsClient.builder().
                                                          restClientConfig(config).build();

  CreateOrUpdateTimeseriesRequest createOrUpdateTimeseriesRequest = new CreateOrUpdateTimeseriesRequest();
  TimeSeries timeseries = new TimeSeries();
  TimeSeriesItem timeSeriesItem = new TimeSeriesItem();
  List<TimeSeriesItem> liSeriesItems = new ArrayList<TimeSeriesItem>();
  TimeSeriesItem timeSeriesItem1 = new TimeSeriesItem();
  timeSeriesItem1.setEntityId("5908ae5c5e4f4e18b0be58cd21ee675f");
  timeSeriesItem1.setPropertySetName("test_2020_11_11");
  TimeSeriesDataItem timeSeriesDataItem1 = new TimeSeriesDataItem();
  Map<String, Object> dataMap1 = timeSeriesDataItem1.getFields();
  dataMap1.put("test", 80);
  timeSeriesDataItem1.setTime("2020-11-11T02:52:00Z");
  List<TimeSeriesDataItem> lisDataItems1 = new ArrayList<TimeSeriesDataItem>();
  lisDataItems1.add(timeSeriesDataItem1);
  timeSeriesItem1.setData(lisDataItems1);
  liSeriesItems.add(timeSeriesItem1);
  timeseries.setTimeseries(liSeriesItems);
  createOrUpdateTimeseriesRequest.setTimeseries(timeseries);

     try {
       MultiStatusError multiStatusError = ts.createOrUpdateTimeseries(createOrUpdateTimeseriesRequest);
      } catch (MindsphereException e) {
      // Exception handling
      }

Create or update time series data¶

  • Create or update time series data for one combination of an asset (entity) and an(a) aspect (property set). In case of an update of data at an already existing time, all properties at that time will be replaced by the ones provided in the request.
  CreateOrUpdateTimeseriesDataRequest requestObject = new CreateOrUpdateTimeseriesDataRequest();
  requestObject.setEntityId("5908ae5c5e4f4e18b0be58cd21ee675f");
  requestObject.setPropertySetName("test_2020_11_11");
  TimeSeriesDataItem timeSeriesDataItem = new TimeSeriesDataItem();
  timeSeriesDataItem.setTime("2020-11-06T10:00:00Z");
  Map<String, Object> dataMap = timeSeriesDataItem.getFields();
  dataMap.put("test", 99);
  // dataMap.put("RLwheel", 98);
  List<TimeSeriesDataItem> lisDataItems = new ArrayList<TimeSeriesDataItem>();
  lisDataItems.add(timeSeriesDataItem);
  requestObject.setTimeseries(lisDataItems);

     try {
       ts.createOrUpdateTimeseriesData(requestObject);
      } catch (MindsphereException e) {
      // Exception handling
      }

Delete time series data¶

  • Delete time series data for one combination of an asset (entity) and an(a) aspect (property set). All property values within the given time range are deleted.
  DeleteUpdatedTimeseriesRequest requestObject = new DeleteUpdatedTimeseriesRequest();
  requestObject.setEntityId("5908ae5c5e4f4e18b0be58cd21ee675f");
  requestObject.setPropertySetName("test_2020_11_11");
  requestObject.setFrom("2020-11-12T15:10:00Z");
  requestObject.setTo("2019-11-13T16:18:00Z");

     try {
       ts.deleteTimeseries(requestObject);
      } catch (MindsphereException e) {
      // Exception handling
      }

Retrieve time series data¶

  • Retrieve time series data for one combination of an asset (entity) and an(a) aspect (property set). The maximum number of time series data items returned per request is defined by parameter <i>limit</i>. In case more time series data items are present in the requested time range, only a subset of data items will be returned and a header <i>link</i> is added to the response. The header value contains the request URL to fetch the next set of time series data items, by increasing the parameter accordingly. Returns the latest record if no range is provided.
  RetrieveTimeseriesRequest requestObject = new RetrieveTimeseriesRequest();
  requestObject.setEntityId("5908ae5c5e4f4e18b0be58cd21ee675f");
  requestObject.setPropertySetName("test_2020_11_11");


     try {
       List<TimeSeriesDataItem> response = ts.retrieveTimeseries(requestObject);
      } catch (MindsphereException e) {
      // Exception handling
      }