全部產品
Search
文件中心

:Nodejs版本SDK

更新時間:Jul 13, 2024

裝置接入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選擇性參數,用於調用裝置服務成功時,返回額外的資訊。
  • 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>
  • getTslExtInfo()

    返回TSL擴充資訊字串。

    傳回值:
    Promise<String>
  • cleanup()

    資源回收介面,您可以使用該介面回收您的資源。

    傳回值:
    Promise<Void>
  • unregister()

    從網關中移除裝置。請謹慎使用該介面。

    傳回值:
    Promise<Void>

getConfig()

擷取驅動配置字串,該配置通常在裝置與驅動程式關聯時由系統自動產生。
說明 該介面與static get()介面Config.get()調用方法的區別在於getConfig()返回配置字串,Config.get()返回設定物件。
傳回值:
Promise<String>

destroy()

銷毀庫內部所有資源。通常不再使用此庫時調用destroy()介面。

傳回值:
Promise<Void>