设备接入SDK用于您在网关上开发驱动,将设备连接到网关,进而连接到物联网平台。

Node.js版本开源的SDK源码请见开源的Node.js库

安装和使用

  1. 您可以通过如下命令来安装SDK:
    npm install linkedge-thing-access-sdk
    说明 您也可以通过物联网边缘计算提供的开发工具使用该SDK来开发驱动。
  2. 安装完成后,您可以根据SDK接口进行驱动开发。
    注意 完成驱动开发后,直接运行会提示错误,必须通过物联网平台控制台,将已开发的驱动部署到网关中方可执行。部署驱动到网关的操作请参考驱动开发
    使用SDK开发驱动的示例代码片段如下所示:
    const {
      Config,
      ThingAccessClient
    } = require('linkedge-thing-access-sdk');
    
    const callbacks = {
      setProperties: function (properties) {
        // Set properties to the physical thing and return the result.
        // Return an object representing the result or the promise wrapper of the object.
        return {
          code: 0,
          message: 'success',
          }
        };
      },
      getProperties: function (keys) {
        // Get properties from the physical thing and return the result.
        // Return an object representing the result or the promise wrapper of the object.
        return {
          code: 0,
          message: 'success',
          params: {
            key1: 'value1',
            key2: 'value2',
          }
        };
      },
      callService: function (name, args) {
        // Call services on the physical thing and return the result.
        // Return an object representing the result or the promise wrapper of the object.
        return new Promise((resolve) => {
          resolve({
            code: 0,
            message: 'success',
          });
        });
      }
    };
    Config.get()
      .then(config => {
        const thingInfos = config.getThingInfos();
        thingInfos.forEach(thingInfo => {
          const client = new ThingAccessClient(thingInfo, callbacks);
          client.registerAndOnline()
            .then(() => {
              return new Promise(() => {
                setInterval(() => {
                  client.reportEvent('high_temperature', { temperature: 41 });
                  client.reportProperties({ 'temperature': 41 });
                }, 2000);
              });
            })
            .catch(err => {
              console.log(err);
              client.cleanup();
            });
            .catch(err => {
              console.log(err);
            });
        });
      });

常量定义

名称 类型 描述
PRODUCT_KEY String 配置对象(传给ThingAccessClient构造函数)的键值,指定云端分配的productKey。
DEVICE_NAME String 配置对象(传给ThingAccessClient构造函数)的键值,指定云端分配的deviceName。
LOCAL_NAME String 配置对象(传给ThingAccessClient构造函数)的键值,指定本地自定义的设备名。
CALL_SERVICE String 回调对象(传给ThingAccessClient构造函数)的键值,指定调用设备服务回调函数。回调函数格式请参见callbacks.callService()
GET_PROPERTIES String 回调对象(传给ThingAccessClient构造函数)的键值,指定获取设备属性回调函数。回调函数格式请参见callbacks.getProperties()
SET_PROPERTIES String 回调对象(传给ThingAccessClient构造函数)的键值,指定设置设备属性回调函数。回调函数格式请参见callbacks.setProperties()
RESULT_SUCCESS Number 操作成功。用于回调函数返回状态码。
RESULT_FAILURE Number 操作失败。用于回调函数返回状态码。
ERROR_CLEANUP String 调用cleanup()出错错误码。
ERROR_CONNECT String 调用registerAndOnline()出错错误码。
ERROR_DISCONNECT String 调用offline()出错错误码。
ERROR_GET_CONFIG String 调用getConfig()出错错误码。
ERROR_GET_TSL String 调用getTsl()出错错误码。
ERROR_GET_TSL_EXT_INFO String 调用getTslExtInfo()出错错误码。
ERROR_UNREGISTER String 调用unregister()出错错误码。

Config

驱动相关配置信息。

static get()

返回全局的驱动配置对象,该配置通常在设备与驱动程序关联时由系统自动生成。该接口与getConfig()的区别在于前者返回配置对象,后者返回配置字符串。

说明 该接口的Config.get()调用方法与getConfig()接口的区别在于,getConfig()返回配置字符串,Config.get()返回配置对象。
返回值:
Promise<Config>

static registerChangedCallback(callback)

注册配置变更回调函数

表 1. 请求参数
名称 类型 描述
callback(String) Function 回调函数,配置变更时被调用。

static unregisterChangedCallback(callback)

注销配置变更回调函数。

表 2. 请求参数
名称 类型 描述
callback(String) Function 回调函数,配置变更时被调用。

Config(string)

基于配置字符串构造新的Config对象。

表 3. 请求参数
名称 类型 描述
string String JSON配置字符串。

getThingInfos()

返回所有设备相关信息。

返回值:
ThingInfo[]
getDriverInfo()

返回驱动相关信息。

返回值:
Object

ThingInfo

此类接口是用于连接Link IoT Edge的设备信息的封装。

ThingInfo(productKey, deviceName, custom)

构造一个新的ThingInfo对象。

表 4. 请求参数
名称 类型 描述
productKey String 产品唯一标识。
deviceName String 设备名称。
custom Object 设备自定义配置。

ThingAccessClient

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

ThingAccessClient(config, callbacks)

构造函数,使用指定的config和callbacks构造。

表 5. 请求参数
名称 类型 描述
config Object 元数据,用于配置该客户端。取值格式为:
{
    "productKey": "Your Product Key", 
    "deviceName": "Your Device Name"
}
callbacks Object 回调函数对象。取值格式为:
callbacks: {
    setProperties: function(properties) {},
    getProperties: function(keys) {},
    callService: function(name, args) {}
}
  • 指定设置设备属性的回调参数,请参见本文下方callbacks.setProperties内容
  • 指定获取设备属性的回调参数,请参见本文下方callbacks.getProperties内容
  • 指定调用设备服务的回调参数,请参见本文下方callbacks.callService内容

callbacks.setProperties(properties)

设置具体设备属性的回调函数。通过回调函数,实现设置设备的属性。

表 6. 请求参数
名称 类型 描述
properties Object 设置属性的对象,取值格式为:
{
    "key1": "value1", 
    "key2": "value2"
}
返回值:
{
  "code": 0,
  "message": "string",
  "params": {}
}
表 7. 返回参数
名称 类型 描述
code Number 状态码。
  • 0:接口调用成功。
  • 非0:接口调用失败,报非0值对应的错误。
message String 可选参数,状态描述信息。
params Object 可选参数,用于返回每个属性的设置结果,其值为每个属性设置后的实际值。

callbacks.getProperties(keys)

获取具体设备属性的回调函数。通过回调函数,实现获取设备的属性。

表 8. 请求参数
名称 类型 描述
keys String[] 获取属性对应的名称,取值格式为:
['key1', 'key2']
返回值:
{
  "code": 0,
  "message": "string",
  "params": {}
}
表 9. 返回参数
名称 类型 描述
code Number 状态码。
  • 0:接口调用成功。
  • 非0:接口调用失败,报非0值对应的错误。
message String 可选参数,状态描述信息。
params Object 可选参数,用于获取属性成功时,返回对应的属性值。

callbacks.callService(name, args)

调用设备服务回调函数。通过回调函数,实现调动设备服务。

表 10. 请求参数
名称 类型 描述
name String 设备服务名称。
args Object 服务入参列表,取值格式为:
{
    "key1": "value1", 
    "key2": "value2"
}
表 11. 返回参数
名称 类型 描述
code Number 状态码。
  • 0:接口调用成功。
  • 非0:接口调用失败,报非0值对应的错误。
message String 可选参数,状态描述信息。
params Object 可选参数,用于调用设备服务成功时,返回额外的信息。

setup()

设备接入客户端初始化。
注意 Link IoT Edge当前版本已不再使用该接口,之前遗留的调用不受影响。
返回值:
Promise<Void>

registerAndOnline()

将设备注册到网关中并通知网关上线设备。设备需要注册并上线后,设备端才能收到云端下发的指令或者发送数据到云端。

返回值:
Promise<Void>

online()

通知网关设备已上线,该接口一般在设备离线后再次上线时使用。

返回值:
Promise<Void>

offline()

通知网关设备已离线。

返回值:
Promise<Void>

reportEvent(eventName, args)

主动上报设备事件。

表 12. 请求参数
名称 类型 描述
eventName String 事件对应的名称,与您在产品定义中创建事件的名称一致。
args Object 事件中包含的属性key与value,取值格式为:
{
    "key1": "value1", 
    "key2": "value2"
}

reportProperties(properties)

主动上报设备属性。

表 13. 请求参数
名称 类型 描述
properties Object 属性中包含的属性key与value,取值格式为:
{
    "key1": "value1", 
    "key2": "value2"
}

getTsl()

返回TSL字符串,数据格式与云端一致。

返回值:
Promise<Void>
getTslConfig()
注意 Link IoT Edge当前版本已不再使用该接口,已使用getTslExtInfo()接口代替,之前遗留的调用不受影响。

返回TSL配置字符串。

返回值:
Promise<String>

getTslExtInfo()

返回TSL扩展信息字符串。

返回值:
Promise<String>

cleanup()

资源回收接口,您可以使用该接口回收您的资源。

返回值:
Promise<Void>

unregister()

从网关中移除设备。请谨慎使用该接口。

返回值:
Promise<Void>

getConfig()

获取驱动配置字符串,该配置通常在设备与驱动程序关联时由系统自动生成。
说明 该接口与static get()接口Config.get()调用方法的区别在于getConfig()返回配置字符串,Config.get()返回配置对象。
返回值:
Promise<String>

destroy()

销毁库内部所有资源。通常不再使用此库时调用destroy()接口。

返回值:
Promise<Void>