裝置接入SDK用於您在網關上開發驅動,將裝置串連到網關,進而串連到物聯網平台。
Node.js版本開源的SDK源碼請見開源的Node.js庫。
安裝和使用
- 您可以通過如下命令來安裝SDK。
npm install linkedge-thing-access-sdk
- 安裝完成後,您可以根據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()
返回全域的驅動設定物件,該配置通常在裝置與驅動程式關聯時由系統自動產生。
說明 該介面的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的裝置資訊,即某個裝置串連到了Link IoT Edge,那麼可以通過此類介面標識該裝置的productKey, deviceName, 自訂配置等資訊。
ThingInfo(productKey, deviceName, custom)構造一個新的ThingInfo對象。
名稱 | 類型 | 描述 |
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 選擇性參數,用於調用裝置服務成功時,返回額外的資訊。 - 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>
- getTslExtInfo()
返回TSL擴充資訊字串。
傳回值:Promise<String>
- cleanup()
資源回收介面,您可以使用該介面回收您的資源。
傳回值:Promise<Void>
- unregister()
從網關中移除裝置。請謹慎使用該介面。
傳回值:Promise<Void>
getConfig()
擷取驅動配置字串,該配置通常在裝置與驅動程式關聯時由系統自動產生。
說明 該介面與static get()介面Config.get()調用方法的區別在於getConfig()返回配置字串,Config.get()返回設定物件。
傳回值:
Promise<String>
destroy()
銷毀庫內部所有資源。通常不再使用此庫時調用destroy()介面。
傳回值:
Promise<Void>