Industrial IoT SDK for Node.js – Getting Started¶
Prerequisites to use the Industrial IoT SDK for Node.js¶
- Node.js version 8 or higher
- User authorization token or service credentials with required scopes for Industrial IoT Service APIs
Environment variable
HOST_ENVIRONMENTis set to current region. When hosting an application in Cloud Foundry, the variable must be added to the manifest file:env: HOST_ENVIRONMENT: eu1If not specified,
HOST_ENVIRONMENTdefaults toeu1in region Europe 1 SDK and tocn1in region China 1 SDK. * Environment variableHOST_BASEDOMAINis set optionally if domain is other that '*.mindsphere.io'. When hosting an application in Cloud Foundry, the variable must be added in the manifest file:env: HOST_BASEDOMAIN: example.orgname.comHint
Service credentials can be set as environment variables so the client can fetch a technical token automatically. Refer to Required Environment Variables for Fetching Technical Tokens for details on parameters to be configured.
Attention
You are responsible for keeping the credentials safe. You decide whether it is safe to supply the credentials via environment variables.
Installation Instructions¶
Downloading the Industrial IoT SDK for Node.js¶
Download the Industrial IoT SDK for Node.js from the Siemens Industry Online Support (SIOS) Portal.
Adding Industrial IoT SDK for Node.js Dependency¶
Copy the
.tgzfiles into a folder in the root of your project, e.g.repo.Install the
mindsphere-sdk-node-coremodule:
npm install {folder}\mindsphere-sdk-node-core-x.y.z.tgz
npm install repo\mindsphere-sdk-node-core-1.0.0.tgz
3.Install the service modules:
npm install {folder}\{service_name}-sdk-x.y.z.tgz
npm install repo\assetmanagement-sdk-3.9.0.tgz
Note
{x.y.z} is the version number of the Industrial IoT Core or Service SDK for Node.js (e.g. 1.0.0).
Further implementation of the SDK libraries 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-node-sdk-examples.
Service Client and Credentials Configuration¶
The lowest-level building blocks of the service client are ClientConfig and MindsphereCredentials. These objects can be shared between client instances.
Client Configuration¶
The following code block shows an example of how to build a ClientConfig object:
let config = new ClientConfig({ proxy: <proxy_value>, timeout: <timeout_value> });
The ClientConfig can be configured using the following optional parameters:
| Name | Description | Type | Default value |
|---|---|---|---|
proxy | Complete proxy URL | String | |
timeout | Connection timeout in ms | Integer | 10000 |
hostEnvironment | - | String | eu1 |
Default value for region China 1
For region China 1 SDK, default value for hostEnvironment is cn1.
MindsphereCredentials Configuration¶
MindsphereCredentials has the subclasses UserCredentials, AppCredentials and TenantCredentials. The available configuration parameters for these objects are listed below.
The following configuration parameters can be set programmatically for the UserCredentials object :
| Name | Description | Type | Use Case |
|---|---|---|---|
authorization | Bearer token, if available. | String | user token |
The following configuration parameters can be set programmatically for the TenantCredentials object:
| Name | Description | Type | Use Case |
|---|---|---|---|
clientId | Tenant service credential ID | String | technical token |
clientSecret | Tenant service credential ID | String | technical token |
tenant | Tenant service credential ID | String | technical token |
The following configuration parameters can be set programmatically for the AppCredentials object:
| Name | Description | Type | Use Case |
|---|---|---|---|
keyStoreClientId | App service credential ID | String | technical token |
keyStoreClientSecret | App service credential secret | String | technical token |
appName | Application name | String | technical token |
appVersion | Application version | String | technical token |
hostTenant | Host tenant | String | technical token |
userTenant | User tenant | String | technical token |
Refer to Code Samples to create MindsphereCredentials objects for more information.
Note
If the service credentials are set via environment variables, there is no need to build the MindsphereCredentials object.
Service Client Instantiation and Usage¶
A service client instance accepts the ClientConfig and MindsphereCredentials objects as well as its subclasses as optional parameters.
Note
UserCredentials, AppCredentials and TenantCredentials are subclasses of MindsphereCredentials. Developers may pass objects of these subclasses to clients, if the respective credentials are set programmatically.
Code sample using the IoT TimeSeries API client, placeholders are indicated by angle brackets < >:
// Require UserCredentials and ClientConfig from `mindsphere-sdk-node-core` module
const ClientConfig = require('mindsphere-sdk-node-core').ClientConfig;
const UserCredentials = require('mindsphere-sdk-node-core').UserCredentials;
// Require TimeseriesClient from `timeseries-sdk` module
const TimeSeriesClient = require('timeseries-sdk').TimeSeriesClient;
// Proxy value can be set in the ClientConfig object
let config = new ClientConfig({ proxy: <proxy_value>, timeout: <timeout_in_seconds> });
// Construct the UserCredentials object
let credentials = new UserCredentials({'authorization': '<user_token>'});
// Construct the TimeSeriesClient object using the config and credentials objects
let time_series_client = new TimeSeriesClient(config, credentials);
try {
let timeseries_data = await time_series_client.getTimeseries(
{
entity: <entity_id>,
propertysetname: <property_set_name>,
from: <from_date>,
to: <to_date>
}
);
} catch (err) {
//Exception Handling
}