Link IoT Edge提供Python版本的SDK,名称为lethingaccesssdk。本章为您介绍Python版本的SDK使用方法及相关SDK。

Python版本开源的SDK源码请见开源的Python库

安装和使用

  1. 您可以通过如下命令来安装SDK:
    pip3 install lethingaccesssdk
    说明 您也可以通过物联网边缘计算提供的开发工具使用该SDK来开发驱动。
  2. 安装完成后,您可以根据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)中实现setPropertiesgetPropertiescallService三个函数。

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)

设备接入客户端,您可以通过该客户端来主动上报设备属性或事件,也可被动接受云端下发的指令。

表 9. 请求参数
名称 类型 描述
config Dict 包括云端分配的ProductKey和deviceName。
例如,
{
    "productKey": "xxx",
    "deviceName": "yyy"
}

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()

获取驱动相关配置信息。

返回值为驱动配置信息字符串。