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.

Industrial IoT SDK for Python– Getting Started¶

Prerequisites to use the Industrial IoT SDK for Python¶

  • Python version 3.0 or higher is available.
  • virtualenv is available.
  • User authorization token or service credentials with required scopes for Industrial IoT Service APIs are available.
  • Environment variable HOST_ENVIRONMENT is set to the current region. When hosting an application in Cloud Foundry, the variable must be added in the manifest file:

    env:
      HOST_ENVIRONMENT: eu1
    

    If not specified, HOST_ENVIRONMENT defaults to eu1. * Environment variable HOST_BASEDOMAIN is 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.com
    

Hint

Service credentials can be set as environment variables, so the client can fetch a technical token itself.

  • MINDSPHERE_CLIENT_ID
    Specifies service credentials ID

  • MINDSPHERE_CLIENT_SECRET
    Specifies service credentials secret

  • MINDSPHERE_TENANT
    Specifies tenant name

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 Python¶

Download the Industrial IoT SDK for Python from the Siemens Industry Online Support (SIOS) Portal.

Adding Industrial IoT SDK for Python Dependencies¶

  1. Copy the downloaded .whl files into a folder in the root of the project.
  2. Set up your environment and install the required dependencies using virtualenv:
# Create virtual environment
virtualenv venv

# Activate the virtual environment
. venv/bin/activate
# Create virtual environment
virtualenv venv

# Activate the virtual environment
\{path_to_virtualenv_scripts}\activate

3.Include the required modules in the requirements.txt of your project.

repo/mindsphere_core-x.y.z-py3-none-any.whl
repo/{servicename}-x.y.z-py3-none-any.whl
repo/mindsphere_core-1.0.0-py3-none-any.whl
repo/assetmanagement-3.9.0-py3-none-any.whl

4.Install the dependencies.

```cmd
pip install -r requirements.txt
```

Note

{x.y.z} is the version number of the Industrial IoT Core or Service module (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: mindsphere-python-sdk-examples

Service Client and Credentials Configuration¶

The lowest-level building blocks of the service client are RestClientConfig and the following credentials objects:

  1. UserToken
  2. AppCredentials
  3. TenantCredentials

These building blocks can be shared between clients.

Client Configuration¶

The following code block shows an example of how to build a RestClientConfig object:

# Import the RestClientConfig class from the mindsphere_core module
from mindsphere_core import RestClientConfig

clientConfig = RestClientConfig("<proxy_host>", <proxy_port>)

The RestClientConfig can be configured using the following optional parameters:

NameDescriptionTypeDefault value
connectionTimeoutInSecondsConnection timeout in secondsInteger100
socketTimeoutInSecondsSocket timeout in secondsInteger100
proxyHostHost address of the proxyString
proxyPortProxy portInteger
proxyUsernameUser name to login to the proxyString
proxyPasswordPassword to login to the proxyString
hostEnvironmentCurrent RegionStringeu1
proxySchemaSchema used by the proxyStringhttp

Credentials Configuration¶

A credentials object can be built with a user token or with service credentials to fetch a technical token.

The following configuration parameters are available for the credentials objects:

NameDescriptionTypeUse Case
authorizationBearer token, if availableStringuser token
keyStoreClientIdApp specific service credentials IDStringtechnical token
keyStoreClientSecretApp specific service credentials secretStringtechnical token
appNameApplication nameStringtechnical token
appVersionApplication versionStringtechnical token
hostTenantHost tenantStringtechnical token
userTenantUser tenantStringtechnical token

Refer to code samples for creating credentials objects for more information.

Service Client Instantiation and Usage¶

A Service client instance accepts the RestClientConfig and credentials objects as optional parameters.

Code sample using the IoT TimeSeries API client, placeholder are indicated by angular brackets < >:

# Import the RestClientConfig and UserToken from mindsphere_core module
from mindsphere_core import RestClientConfig
from mindsphere_core import UserToken

# Import the MindsphereError from mindsphere_core.exceptions module
from mindsphere_core.exceptions import MindsphereError

# Import TimeseriesClient from timeseries module
from timeseries.clients.time_series_client import TimeSeriesClient

# Import GetTimeseriesRequest from timeseries.models module
from timeseries.models import GetTimeseriesRequest

# Instantiate RestClientConfig and UserToken objects
clientConfig = RestClientConfig(proxy_host = "<proxy_host>", proxy_port = <proxy_port>)
credentials = UserToken(authorization = "<bearer_token>")

# Construct the TimeSeriesClient object using the clientConfig and credentials objects
timeseriesClient = TimeSeriesClient(rest_client_config = clientConfig, mindsphere_credentials = credentials)

try:
    request_object = GetTimeseriesRequest(
        _from="start_time",
        to="end_time",
        entity="entity_id",
        propertysetname="property_set_name"
    )

    timeseries = timeseriesClient.get_timeseries(request_object)

except MindsphereError as err:
    //Exception Handling