Nodejs版本SDK

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

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

安装和使用

  1. 您可以通过如下命令来安装SDK。
    npm install linkedge-thing-access-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_KEYString配置对象(传给ThingAccessClient构造函数)的键值,指定云端分配的productKey。
DEVICE_NAMEString配置对象(传给ThingAccessClient构造函数)的键值,指定云端分配的deviceName。
LOCAL_NAMEString配置对象(传给ThingAccessClient构造函数)的键值,指定本地自定义的设备名。
CALL_SERVICEString回调对象(传给ThingAccessClient构造函数)的键值,指定调用设备服务回调函数。回调函数格式请参见callbacks.callService()
GET_PROPERTIESString回调对象(传给ThingAccessClient构造函数)的键值,指定获取设备属性回调函数。回调函数格式请参见callbacks.getProperties()
SET_PROPERTIESString回调对象(传给ThingAccessClient构造函数)的键值,指定设置设备属性回调函数。回调函数格式请参见callbacks.setProperties()
RESULT_SUCCESSNumber操作成功。用于回调函数返回状态码。
RESULT_FAILURENumber操作失败。用于回调函数返回状态码。
ERROR_CLEANUPString调用cleanup()出错错误码。
ERROR_CONNECTString调用registerAndOnline()出错错误码。
ERROR_DISCONNECTString调用offline()出错错误码。
ERROR_GET_CONFIGString调用getConfig()出错错误码。
ERROR_GET_TSLString调用getTsl()出错错误码。
ERROR_GET_TSL_EXT_INFOString调用getTslExtInfo()出错错误码。
ERROR_UNREGISTERString调用unregister()出错错误码。

Config

驱动相关配置信息。

  • static get()

    返回全局的驱动配置对象,该配置通常在设备与驱动程序关联时由系统自动生成。

    说明 该接口的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. 请求参数
    名称类型描述
    stringStringJSON配置字符串。
  • getThingInfos()

    返回所有设备相关信息。

    返回值:
    ThingInfo[]
  • getDriverInfo()

    返回驱动相关信息。

    返回值:
    Object

ThingInfo

此类(结构)接口用于标识连接到Link IoT Edge的设备信息,即某个设备连接到了Link IoT Edge,那么可以通过此类接口标识该设备的productKey, deviceName, 自定义配置等信息。

ThingInfo(productKey, deviceName, custom)

构造一个新的ThingInfo对象。

表 4. 请求参数
名称类型描述
productKeyString产品唯一标识。
deviceNameString设备名称。
customObject设备自定义配置。

ThingAccessClient

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

  • ThingAccessClient(config, callbacks)

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

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

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

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

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

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

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

    表 10. 请求参数
    名称类型描述
    nameString设备服务名称。
    argsObject服务入参列表,取值格式为:
    {
        "key1": "value1", 
        "key2": "value2"
    }
    表 11. 返回参数
    名称类型描述
    codeNumber状态码。
    • 0:接口调用成功。
    • 非0:接口调用失败,报非0值对应的错误。
    messageString可选参数,状态描述信息。
    paramsObject可选参数,用于调用设备服务成功时,返回额外的信息。
  • setup()
    设备接入客户端初始化。
    重要 Link IoT Edge当前版本已不再使用该接口,之前遗留的调用不受影响。
    返回值:
    Promise<Void>
  • registerAndOnline()

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

    返回值:
    Promise<Void>
  • online()

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

    返回值:
    Promise<Void>
  • offline()

    通知网关设备已离线。

    返回值:
    Promise<Void>
  • reportEvent(eventName, args)

    主动上报设备事件。

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

    主动上报设备属性。

    表 13. 请求参数
    名称类型描述
    propertiesObject属性中包含的属性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>