• Home
  • Resources
    • User Guides
    • Concepts Articles
    • API References
    • Client Libraries & SDKs
    • Product Updates
  • FAQs
    • General
    • IoTConnect
      • Device Rules
      • Devices
      • Settings
      • Device Commands
      • Device Templates
      • Device Firmware
      • Device Onboarding
    • Security
  • Contact Us
  • Home
  • Resources
    • User Guides
    • Concepts Articles
    • API References
    • Client Libraries & SDKs
    • Product Updates
  • FAQs
    • General
    • IoTConnect
      • Device Rules
      • Devices
      • Settings
      • Device Commands
      • Device Templates
      • Device Firmware
      • Device Onboarding
    • Security
  • Contact Us

Client Libraries & SDKs

home/Documentation/Client Libraries & SDKs
  • Device SDK Reference
    • Overview
    • Device Authentication Options
    • Data Flow
    • Public Methods
      • Device Connection
      • Send Telemetry
      • Get Attributes
      • Send acknowledgment
      • Update Twin
    • SDKs (Message version 1.0)
      • DOT NET (C#)
      • Node.js
      • Java
      • Python
      • iOS
      • Android
      • Embedded
      • C language
      • Build Your Own SDK
      • Node-RED
        • IoTConnect Node-red 1.0.9
        • IoTConnect Node-red 1.0.8
      • Node-RED Subflow
        • Single Device
        • Multiple Device
    • SDKs (Message version 2.1)
      • Python
      • DOT NET (C#)
      • C language
        • IoTConnect Generic C SDK
          • Linux Build Instructions
          • Windows Build Instructions
      • Python 1.1
    • Code Samples
      • Node.js
        • TPM 3.1
        • Standard SDK 3.0
        • Standard
        • TPM
        • Standard SDK 3.0.1
        • Standard 2.0
      • Java
        • Standard
        • Standard 2.0
        • Standard 3.0
      • Python
        • Standard 2.0
        • TPM 2.1
        • Standard 3.0.1
        • Standard
        • TPM
          • TPM 3.0.1
        • TPM 3.0
        • Standard 3.0.2
        • Standard 3.0.3
        • Standard 3.0.4
        • Python SDK
      • iOS
        • ios1.0.1
      • C Language
        • nRF9160 DK
        • STM32L4
        • ESP32
        • Standard 3.0
        • Standard 2.0
        • Standard 3.1
      • Android
        • Standard 3.0
        • Standard 2.0.6
        • Standard 2.0.0
      • DOT NET (C#)
        • Standard
        • Standard 2.0
        • Standard 3.0
    • Device Message 1.0
      • D2C (Device to Cloud)
        • IoTConnect SDK
        • Custom SDK
      • C2D (Cloud to Device)
        • IoTConnect SDK
        • Custom SDK
      • Troubleshooting & Response codes
      • Know Your Essentials
    • Device Message 2.1
    • AWS Device Message 2.1
    • SDK Deep-diving
Download PDF

TPM 3.0

Card Image

Pythnon TPM SDK

Version 3.0

Updated On 04/21

Sample Code for letest version of SDK

# Date Name Download
1 04/15/2020 TPM device Sample v3.0 ( preview ) Download

How to Run the Python sample code?

Prerequisite tools:

  1. Python version compatibility
    • Linux : Python version 2.7, 3.5 and 3.6
    • Windows : Python version 2.7
  2. pip : pip is compatible to the python version
  3. setuptools : It Requires to manage the python packages.

Installation 

  1. Extract the “iotconnect-python-tpm-sdk-v3.0.zip“ (You can download SDK file from here)
  2. If already exist the IoTConnect python SDK installed in your device then you need to uninstall old version before going to install updated version.
    • Note : make sure which pip you are use for install packege that you have to use for uninstall (pip,pip3)
    • pip list
    • find your package name(iotconnect-sdk)
    • pip uninstall <<package name>>
  3. To install the required libraries use the below command:
    • Goto SDK directory path using terminal/Command prompt
    • cd iotconnect-python-tpm-sdk-v3.0/
    • Python version 3.x :
      • pip3 install iotconnect-sdk-tpm-3.0.0.tar.gz
    • Python version 2.7 :
      • Extract the iotconnect-sdk-tpm-3.0.0.tar.gz
      • cd iotconnect-sdk-tpm-3.0.0/
      • python setup.py install
  4. Using terminal/command prompt goto sample folder
    • cd sample
  5. You can take the firmware file from the above location and update the following details
    • Prerequisite input data as explained in the usage section as below
    • Update sensor attributes according to added in IoTConnect cloud platform.
    • If your device is secure then need to configure the x.509 certificate path such as given below in SDK Options otherwise leave it as it is.
  6. Run Sample File (dowload from above list) :
    • Python 2.7 : python YOURSAMPLEFILE.py
    • Python 3.x : python3 YOURSAMPLEFILE.py

Public Method and Implementations

To initialize the SDK object need to import below sdk package

from iotconnect import IoTConnectSDK

Prerequisite Configuration

UniqueId = <<UniqueId>>
CpId = <<CPID>>
ScopeId = <<scopeId>>
Env = <<Env>>
  • UniqueId : Its device ID which register on IotConnect platform and also its status has Active and Acquired.
  • CpId : It is the company code. It gets from the IoTConnect UI portal “Settings->Key Vault”.
  • ScopeId : It need to get from the IoTConnect platform “Settings->Key Vault->DPS Info”.
  • Env : It is the UI platform environment. It gets from the IoTConnect UI portal “Settings->Key Vault”.

SdkOptions is for the SDK configuration and needs to parse in SDK object initialize call. You need to manage the below configuration as per your device authentication type.

  • If your device has an authentication type “Key” then no need any configuration. SDK will manage
    itself from device information.
  • “sdkOptions” is optional. Mandatory for SSL/x509 device authentication type only.
  • Standard json format for the “sdkOptions” is as below:

SdkOptions = {
	"offlineStorage": { 
		"disabled": false, # default value = false, false = store data, true = not store data 
		"availSpaceInMb": 1, # size in MB, Default value = unlimted
		"fileCount": 5 # Default value = 1
	}
}
  • offlineStorage” : Define the configuration related to the offline data storage.
    • disabled : false = offline data storing, true = not storing offline data
    • availSpaceInMb: Define the file size of offline data which should be in (MB)
    • fileCount : Number of files need to create for offline data

Note: sdkOptions is optional. Define proper setting or leave it NULL. If you do not provide offline storage, it will set the default settings as per defined above. It may harm your device by storing the large data. Once memory gets full may chance to stop the execution.

To Initialize the SDK object and connect to the cloud

IoTConnectSDK(CpId, UniqueId, ScopeId , DeviceCallback, TwinUpdateCallback, SdkOptions, Env) as sdk:

To receive the command from Cloud to Device(C2D)

def DeviceCallback(msg):
	if(data["cmdType"] == "0x01")
		# Device Command
	elif(data["cmdType"] == "0x02")
		# Firmware Command
	elif(data["cmdType"] == "0x16")
		# Device connection status Command

To receive the twin from Cloud to Device(C2D)

def TwinUpdateCallback(msg):
	print(msg)

To get the list of attributes with the respective device.

sdk.GetAttributes()

Note: you can checkout device attribute format with all device type click here

This is the standard data input format for Gateway and non Gateway device to send the data on IoTConnect cloud(D2C)

# For Non Gateway Device 
data = [{
    "uniqueId": "<< Device UniqueId >>",
    "time" : "<< date >>",
    "data": {}
}];

# For Gateway and multiple child device 
'''
data = [{
	"uniqueId": "<< Gateway Device UniqueId >>", # It should be must first object of the array
    "time": "<< date >>",
    "data": {}
},
{
	"uniqueId":"<< Child DeviceId >>", #Child device
    "time": "<< date >>",
    "data": {}
}]
'''
sdk.SendData(data)
  • time : Date format should be as defined # “2021-01-24T10:06:17.857Z”
  • data : JSON data type format # {“temperature”: 15.55, “gyroscope” : { ‘x’ : -1.2 }}

To update the Twin Property

key = "<<Desired property key >>"
value = "<< Desired Property value >>"
sdk.UpdateTwin(key, value)
  • key : Desired property key received from Twin callback message
  • value : Value of the respective desired property

To send the command acknowledgment from device to cloud.

data = {
    "ackId": "",
    "st": "",
    "msg": "",
    "childId": ""
}
msgType = "" # 5 ("0x01" device command), 11 ("0x02" Firmware OTA command)
sdk.SendAck(data, msgType)
  • ackId(*) : Command Acknowledgment GUID which will receive from command payload
    (data.ackId)
  • st(*) : Acknowledgment status sent to cloud
    4 = Fail
    6 = Device command[0x01]
    7 = Firmware OTA command[0x02])
  • msg : It is used to send your custom message
  • childId : It is used for Gateway’s child device OTA update only
    0x01 : null or “” for Device command
    0x02 : null or “” for Gateway device and mandatory for Gateway child device’s OTA update.
    How to get the “childId”?
    – You will get child uniqueId for child device OTA command from payload “data.urls[~].uniqueId”
  • msgType : Message type
    5 = Device command[0x01]
    11 = Firmware OTA command[0x02]

To disconnect the device from the cloud

sdk.Dispose()

Powered by Softweb – An Avnet Company.

Copyright ©2022 Avnet, Inc. All rights reserved.

Human Rights Privacy Terms of Use