Link IoT Edge提供Python版本的SDK,名稱為lethingaccesssdk。本章為您介紹Python版本的SDK使用方法及相關SDK。
Python版本開源的SDK源碼請見開源的Python庫。
安裝和使用
- 您可以通過如下命令來安裝SDK。
pip3 install lethingaccesssdk
- 安裝完成后,您可以根據SDK接口進行驅動開發。 重要 完成驅動開發后,直接運行會提示錯誤,必須通過物聯網平臺控制臺,將已開發的驅動部署到網關中方可執行。部署驅動到網關的操作請參考驅動開發。
使用SDK開發驅動的示例代碼片段如下所示。
# -*- coding: utf-8 -*- import logging import time import lethingaccesssdk from threading import Timer # Base on device, User need to implement the getProperties, setProperties and callService function. class Temperature_device(lethingaccesssdk.ThingCallback): def __init__(self): self.temperature = 41 self.humidity = 80 def getProperties(self, input_value): ''' Get properties from the physical thing and return the result. :param input_value: :return: ''' retDict = { "temperature": 41, "humidity": 80 } return 0, retDict def setProperties(self, input_value): ''' Set properties to the physical thing and return the result. :param input_value: :return: ''' return 0, {} def callService(self, name, input_value): ''' Call services on the physical thing and return the result. :param name: :param input_value: :return: ''' return 0, {} def thing_behavior(client, device): while True: properties = {"temperature": device.temperature, "humidity": device.humidity} client.reportProperties(properties) client.reportEvent("high_temperature", {"temperature": 41}) time.sleep(2) try: thing_config = lethingaccesssdk.Config().getThingInfos() for config in thing_config: device = Temperature_device() client = lethingaccesssdk.ThingAccessClient(config) client.registerAndonline(device) t = Timer(2, thing_behavior, (client, device)) t.start() except Exception as e: logging.error(e) # don't remove this function def handler(event, context): return 'hello world'
Config
驅動相關配置信息。
- Config()
基于當前驅動配置字符串構造新的Config對象。
- getThingInfos()
返回所有設備相關信息。
返回值說明如下:
返回設備用于連接Link IoT Edge的配置信息的封裝。
表 1. 返回參數 名稱 類型 描述 ThingInfo List 設備信息。 表 2. ThingInfo參數說明 名稱 類型 描述 productKey String 產品唯一標識。 deviceName String 設備名稱。 custom Object 設備自定義配置。 - getDriverInfo()
返回驅動相關信息。
返回值:dict
ThingCallback
首先根據真實設備,命名一個類(如Demo_device)繼承ThingCallback,然后在該類(Demo_device)中實現setProperties、getProperties和callService三個函數。
- setProperties
設置具體設備屬性函數。
表 3. 請求參數 名稱 類型 描述 properties Dict 設置屬性,取值格式為: { "property1": "value1", "property2": "value2" }
表 4. 返回參數 名稱 類型 描述 code Integer 若獲取成功則返回0,失敗則返回非0錯誤碼。 output Dict 數據內容自定義,例如: { "key1": xxx, "key2": yyy, ... }
若無返回數據,則值為空
{}
。 - getProperties
獲取具體設備屬性的函數。
表 5. 請求參數 名稱 類型 描述 keys List 獲取屬性對應的名稱,取值格式為: ['key1', 'key2']
表 6. 返回參數 名稱 類型 描述 code Integer 若獲取成功則返回0,失敗則返回非0錯誤碼。 output Dict 返回值,例如: { 'property1': xxx, 'property2': yyy, ..}. }
- callService
調用設備服務函數。
表 7. 請求參數 名稱 類型 描述 name String 設備服務名稱。 args Dict 服務入參列表,取值格式為: { "key1": "value1", "key2": "value2" }
表 8. 返回參數 名稱 類型 描述 code Integer 若獲取成功則返回0,失敗則返回非0錯誤碼。 output Dict 數據內容自定義,例如: { "key1": xxx, "key2": yyy, ... }
若無返回數據,則值為空
{}
。
ThingAccessClient(config)
設備接入客戶端,您可以通過該客戶端來主動上報設備屬性或事件,也可被動接受云端下發的指令。
名稱 | 類型 | 描述 |
config | Dict | 包括云端分配的ProductKey和deviceName。 例如,
|
- registerAndOnline(ThingCallback)
將設備注冊到網關中并通知網關上線設備。設備需要注冊并上線后,設備端才能收到云端下發的指令或者發送數據到云端。
表 10. 請求參數 名稱 類型 描述 ThingCallback Object 設備的callback對象。 - reportProperties(properties)主動上報設備屬性。
表 11. 請求參數 名稱 類型 描述 properties Dict 屬性中包含的屬性key與value,取值格式為: { "key1": "value1", "key2": "value2" }
- reportEvent(eventName, args)主動上報設備事件。
表 12. 請求參數 名稱 類型 描述 eventName String 事件對應的名稱,與您在產品定義中創建事件的名稱一致。 args Dict 事件中包含的屬性key與value,取值格式為: { "key1": "value1", "key2": "value2" }
- getTsl()
返回TSL字符串,數據格式與云端一致。
返回值:TSL字符串
- getTslExtInfo()
返回TSL擴展信息字符串。
返回值:TSL擴展信息字符串
- online()
通知網關設備上線,該接口一般在設備離線后再次上線時使用。
- offline()
通知網關設備已離線。
- cleanup()
資源回收接口,您可以使用該接口回收您的資源。
- unregister()
移除設備和網關的綁定關系。請謹慎使用該接口。
getConfig()
獲取驅動相關配置信息。
返回值為驅動配置信息字符串。
文檔內容是否對您有幫助?