Nodejs版本SDK
設(shè)備接入SDK用于您在網(wǎng)關(guān)上開(kāi)發(fā)驅(qū)動(dòng),將設(shè)備連接到網(wǎng)關(guān),進(jìn)而連接到物聯(lián)網(wǎng)平臺(tái)。
Node.js版本開(kāi)源的SDK源碼請(qǐng)見(jiàn)開(kāi)源的Node.js庫(kù)。
安裝和使用
- 您可以通過(guò)如下命令來(lái)安裝SDK。
npm install linkedge-thing-access-sdk
- 安裝完成后,您可以根據(jù)SDK接口進(jìn)行驅(qū)動(dòng)開(kāi)發(fā)。 重要 完成驅(qū)動(dòng)開(kāi)發(fā)后,直接運(yùn)行會(huì)提示錯(cuò)誤,必須通過(guò)物聯(lián)網(wǎng)平臺(tái)控制臺(tái),將已開(kāi)發(fā)的驅(qū)動(dòng)部署到網(wǎng)關(guān)中方可執(zhí)行。部署驅(qū)動(dòng)到網(wǎng)關(guān)的操作請(qǐng)參考驅(qū)動(dòng)開(kāi)發(fā)。
使用SDK開(kāi)發(fā)驅(qū)動(dòng)的示例代碼片段如下所示。
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); }); }); });
常量定義
名稱(chēng) | 類(lèi)型 | 描述 |
PRODUCT_KEY | String | 配置對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定云端分配的productKey。 |
DEVICE_NAME | String | 配置對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定云端分配的deviceName。 |
LOCAL_NAME | String | 配置對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定本地自定義的設(shè)備名。 |
CALL_SERVICE | String | 回調(diào)對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定調(diào)用設(shè)備服務(wù)回調(diào)函數(shù)。回調(diào)函數(shù)格式請(qǐng)參見(jiàn)callbacks.callService()。 |
GET_PROPERTIES | String | 回調(diào)對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定獲取設(shè)備屬性回調(diào)函數(shù)。回調(diào)函數(shù)格式請(qǐng)參見(jiàn)callbacks.getProperties()。 |
SET_PROPERTIES | String | 回調(diào)對(duì)象(傳給ThingAccessClient構(gòu)造函數(shù))的鍵值,指定設(shè)置設(shè)備屬性回調(diào)函數(shù)。回調(diào)函數(shù)格式請(qǐng)參見(jiàn)callbacks.setProperties()。 |
RESULT_SUCCESS | Number | 操作成功。用于回調(diào)函數(shù)返回狀態(tài)碼。 |
RESULT_FAILURE | Number | 操作失敗。用于回調(diào)函數(shù)返回狀態(tài)碼。 |
ERROR_CLEANUP | String | 調(diào)用cleanup()出錯(cuò)錯(cuò)誤碼。 |
ERROR_CONNECT | String | 調(diào)用registerAndOnline()出錯(cuò)錯(cuò)誤碼。 |
ERROR_DISCONNECT | String | 調(diào)用offline()出錯(cuò)錯(cuò)誤碼。 |
ERROR_GET_CONFIG | String | 調(diào)用getConfig()出錯(cuò)錯(cuò)誤碼。 |
ERROR_GET_TSL | String | 調(diào)用getTsl()出錯(cuò)錯(cuò)誤碼。 |
ERROR_GET_TSL_EXT_INFO | String | 調(diào)用getTslExtInfo()出錯(cuò)錯(cuò)誤碼。 |
ERROR_UNREGISTER | String | 調(diào)用unregister()出錯(cuò)錯(cuò)誤碼。 |
Config
驅(qū)動(dòng)相關(guān)配置信息。
- static get()
返回全局的驅(qū)動(dòng)配置對(duì)象,該配置通常在設(shè)備與驅(qū)動(dòng)程序關(guān)聯(lián)時(shí)由系統(tǒng)自動(dòng)生成。
說(shuō)明 該接口的Config.get()調(diào)用方法與getConfig()接口的區(qū)別在于,getConfig()返回配置字符串,Config.get()返回配置對(duì)象。返回值:Promise<Config>
- static registerChangedCallback(callback)
注冊(cè)配置變更回調(diào)函數(shù)。
表 1. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 callback(String) Function 回調(diào)函數(shù),配置變更時(shí)被調(diào)用。 - static unregisterChangedCallback(callback)
注銷(xiāo)配置變更回調(diào)函數(shù)。
表 2. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 callback(String) Function 回調(diào)函數(shù),配置變更時(shí)被調(diào)用。 - Config(string)
基于配置字符串構(gòu)造新的Config對(duì)象。
表 3. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 string String JSON配置字符串。 - getThingInfos()
返回所有設(shè)備相關(guān)信息。
返回值:ThingInfo[]
- getDriverInfo()
返回驅(qū)動(dòng)相關(guān)信息。
返回值:Object
ThingInfo
此類(lèi)(結(jié)構(gòu))接口用于標(biāo)識(shí)連接到Link IoT Edge的設(shè)備信息,即某個(gè)設(shè)備連接到了Link IoT Edge,那么可以通過(guò)此類(lèi)接口標(biāo)識(shí)該設(shè)備的productKey, deviceName, 自定義配置等信息。
ThingInfo(productKey, deviceName, custom)構(gòu)造一個(gè)新的ThingInfo對(duì)象。
名稱(chēng) | 類(lèi)型 | 描述 |
productKey | String | 產(chǎn)品唯一標(biāo)識(shí)。 |
deviceName | String | 設(shè)備名稱(chēng)。 |
custom | Object | 設(shè)備自定義配置。 |
ThingAccessClient
設(shè)備接入客戶(hù)端,您可以通過(guò)該客戶(hù)端來(lái)主動(dòng)上報(bào)設(shè)備屬性或事件,也可被動(dòng)接受云端下發(fā)的指令。
- ThingAccessClient(config, callbacks)
構(gòu)造函數(shù),使用指定的config和callbacks構(gòu)造。
表 5. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 config Object 元數(shù)據(jù),用于配置該客戶(hù)端。取值格式為: { "productKey": "Your Product Key", "deviceName": "Your Device Name" }
callbacks Object 回調(diào)函數(shù)對(duì)象。取值格式為: callbacks: { setProperties: function(properties) {}, getProperties: function(keys) {}, callService: function(name, args) {} }
- 指定設(shè)置設(shè)備屬性的回調(diào)參數(shù),請(qǐng)參見(jiàn)本文下方callbacks.setProperties內(nèi)容
- 指定獲取設(shè)備屬性的回調(diào)參數(shù),請(qǐng)參見(jiàn)本文下方callbacks.getProperties內(nèi)容
- 指定調(diào)用設(shè)備服務(wù)的回調(diào)參數(shù),請(qǐng)參見(jiàn)本文下方callbacks.callService內(nèi)容
- callbacks.setProperties(properties)
設(shè)置具體設(shè)備屬性的回調(diào)函數(shù)。通過(guò)回調(diào)函數(shù),實(shí)現(xiàn)設(shè)置設(shè)備的屬性。
表 6. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 properties Object 設(shè)置屬性的對(duì)象,取值格式為: { "key1": "value1", "key2": "value2" }
返回值:{ "code": 0, "message": "string", "params": {} }
表 7. 返回參數(shù) 名稱(chēng) 類(lèi)型 描述 code Number 狀態(tài)碼。 - 0:接口調(diào)用成功。
- 非0:接口調(diào)用失敗,報(bào)非0值對(duì)應(yīng)的錯(cuò)誤。
message String 可選參數(shù),狀態(tài)描述信息。 params Object 可選參數(shù),用于返回每個(gè)屬性的設(shè)置結(jié)果,其值為每個(gè)屬性設(shè)置后的實(shí)際值。 - callbacks.getProperties(keys)
獲取具體設(shè)備屬性的回調(diào)函數(shù)。通過(guò)回調(diào)函數(shù),實(shí)現(xiàn)獲取設(shè)備的屬性。
表 8. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 keys String[] 獲取屬性對(duì)應(yīng)的名稱(chēng),取值格式為: ['key1', 'key2']
返回值:{ "code": 0, "message": "string", "params": {} }
表 9. 返回參數(shù) 名稱(chēng) 類(lèi)型 描述 code Number 狀態(tài)碼。 - 0:接口調(diào)用成功。
- 非0:接口調(diào)用失敗,報(bào)非0值對(duì)應(yīng)的錯(cuò)誤。
message String 可選參數(shù),狀態(tài)描述信息。 params Object 可選參數(shù),用于獲取屬性成功時(shí),返回對(duì)應(yīng)的屬性值。 - callbacks.callService(name, args)
調(diào)用設(shè)備服務(wù)回調(diào)函數(shù)。通過(guò)回調(diào)函數(shù),實(shí)現(xiàn)調(diào)動(dòng)設(shè)備服務(wù)。
表 10. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 name String 設(shè)備服務(wù)名稱(chēng)。 args Object 服務(wù)入?yún)⒘斜恚≈蹈袷綖椋? { "key1": "value1", "key2": "value2" }
表 11. 返回參數(shù) 名稱(chēng) 類(lèi)型 描述 code Number 狀態(tài)碼。 - 0:接口調(diào)用成功。
- 非0:接口調(diào)用失敗,報(bào)非0值對(duì)應(yīng)的錯(cuò)誤。
message String 可選參數(shù),狀態(tài)描述信息。 params Object 可選參數(shù),用于調(diào)用設(shè)備服務(wù)成功時(shí),返回額外的信息。 - setup()設(shè)備接入客戶(hù)端初始化。重要 Link IoT Edge當(dāng)前版本已不再使用該接口,之前遺留的調(diào)用不受影響。返回值:
Promise<Void>
- registerAndOnline()
將設(shè)備注冊(cè)到網(wǎng)關(guān)中并通知網(wǎng)關(guān)上線(xiàn)設(shè)備。設(shè)備需要注冊(cè)并上線(xiàn)后,設(shè)備端才能收到云端下發(fā)的指令或者發(fā)送數(shù)據(jù)到云端。
返回值:Promise<Void>
- online()
通知網(wǎng)關(guān)設(shè)備已上線(xiàn),該接口一般在設(shè)備離線(xiàn)后再次上線(xiàn)時(shí)使用。
返回值:Promise<Void>
- offline()
通知網(wǎng)關(guān)設(shè)備已離線(xiàn)。
返回值:Promise<Void>
- reportEvent(eventName, args)
主動(dòng)上報(bào)設(shè)備事件。
表 12. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 eventName String 事件對(duì)應(yīng)的名稱(chēng),與您在產(chǎn)品定義中創(chuàng)建事件的名稱(chēng)一致。 args Object 事件中包含的屬性key與value,取值格式為: { "key1": "value1", "key2": "value2" }
- reportProperties(properties)
主動(dòng)上報(bào)設(shè)備屬性。
表 13. 請(qǐng)求參數(shù) 名稱(chēng) 類(lèi)型 描述 properties Object 屬性中包含的屬性key與value,取值格式為: { "key1": "value1", "key2": "value2" }
- getTsl()
返回TSL字符串,數(shù)據(jù)格式與云端一致。
返回值:Promise<Void>
- getTslConfig()重要 Link IoT Edge當(dāng)前版本已不再使用該接口,已使用getTslExtInfo()接口代替,之前遺留的調(diào)用不受影響。
返回TSL配置字符串。
返回值:Promise<String>
- getTslExtInfo()
返回TSL擴(kuò)展信息字符串。
返回值:Promise<String>
- cleanup()
資源回收接口,您可以使用該接口回收您的資源。
返回值:Promise<Void>
- unregister()
從網(wǎng)關(guān)中移除設(shè)備。請(qǐng)謹(jǐn)慎使用該接口。
返回值:Promise<Void>
getConfig()
Promise<String>
destroy()
銷(xiāo)毀庫(kù)內(nèi)部所有資源。通常不再使用此庫(kù)時(shí)調(diào)用destroy()接口。
Promise<Void>