華為云計(jì)算 云知識(shí) 通過協(xié)議轉(zhuǎn)換網(wǎng)關(guān)實(shí)現(xiàn)泛協(xié)議設(shè)備接入華為云物聯(lián)網(wǎng)平臺(tái)
通過協(xié)議轉(zhuǎn)換網(wǎng)關(guān)實(shí)現(xiàn)泛協(xié)議設(shè)備接入華為云物聯(lián)網(wǎng)平臺(tái)

場(chǎng)景說明

目前華為云 物聯(lián)網(wǎng)平臺(tái) 只支持MQTT/HTTP/LWM2M等標(biāo)準(zhǔn)協(xié)議接入,如果設(shè)備是其他協(xié)議(統(tǒng)稱為第三方協(xié)議),怎么接入平臺(tái)?

由于第三方協(xié)議設(shè)備不能直接接入平臺(tái),需要在平臺(tái)外部完成協(xié)議轉(zhuǎn)換。我們推薦使用網(wǎng)關(guān)來完成協(xié)議轉(zhuǎn)換,將第三方協(xié)議轉(zhuǎn)成MQTT協(xié)議。我們把用來進(jìn)行協(xié)議轉(zhuǎn)換的網(wǎng)關(guān)叫做協(xié)議轉(zhuǎn)換網(wǎng)關(guān)。

實(shí)現(xiàn)原理

方案總體架構(gòu)框圖如下:

協(xié)議轉(zhuǎn)換網(wǎng)關(guān)是一個(gè)網(wǎng)關(guān),可以部署在云上或者本地。第三方協(xié)議設(shè)備作為協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的子設(shè)備接入平臺(tái)。

協(xié)議轉(zhuǎn)換網(wǎng)關(guān)一般由三部分組成:

  1. 第三方協(xié)議接入。完成第三方協(xié)議的解析,鑒權(quán)。
  2. 協(xié)議轉(zhuǎn)換。負(fù)責(zé)完成第三方協(xié)議數(shù)據(jù)和平臺(tái)格式數(shù)據(jù)的互相轉(zhuǎn)換。
    • 上行:把第三方協(xié)議數(shù)據(jù)轉(zhuǎn)成平臺(tái)格式數(shù)據(jù),并調(diào)用設(shè)備SDK接口進(jìn)行上報(bào)。
    • 下行:收到平臺(tái)下行數(shù)據(jù)時(shí),轉(zhuǎn)換為第三方協(xié)議數(shù)據(jù)轉(zhuǎn)發(fā)給第三方協(xié)議設(shè)備。
  3. 設(shè)備SDK。即平臺(tái)提供的設(shè)備接入SDK,提供了網(wǎng)關(guān)的通用功能實(shí)現(xiàn),用戶可以在此基礎(chǔ)上實(shí)現(xiàn)自己的網(wǎng)關(guān)。

業(yè)務(wù)流程

  1. 在物聯(lián)網(wǎng)平臺(tái)上注冊(cè)網(wǎng)關(guān),詳細(xì)方法請(qǐng)參考設(shè)備注冊(cè)。
  2. 網(wǎng)關(guān)上電,連接到平臺(tái),連接所需的鑒權(quán)參數(shù)在注冊(cè)網(wǎng)關(guān)時(shí)獲取。
  3. 用戶在平臺(tái)上注冊(cè)子設(shè)備時(shí),平臺(tái)下發(fā)添加子設(shè)備事件到網(wǎng)關(guān)。網(wǎng)關(guān)收到后,保存子設(shè)備信息到本地并持久化(SDK提供了默認(rèn)的持久化實(shí)現(xiàn),用戶可以自定義擴(kuò)展)。
  4. 第三方協(xié)議設(shè)備連接到網(wǎng)關(guān)。網(wǎng)關(guān)根據(jù)子設(shè)備信息對(duì)設(shè)備進(jìn)行鑒權(quán)。
  5. 設(shè)備上報(bào)數(shù)據(jù)到網(wǎng)關(guān)。網(wǎng)關(guān)轉(zhuǎn)換為平臺(tái)格式數(shù)據(jù)后,調(diào)用SDK的上報(bào)子設(shè)備屬性/消息 的接口上報(bào)給平臺(tái)。
  6. 平臺(tái)向設(shè)備下發(fā)命令。網(wǎng)關(guān)收到后,轉(zhuǎn)換為第三方協(xié)議,轉(zhuǎn)發(fā)給子設(shè)備。設(shè)備收到后對(duì)命令進(jìn)行處理。

協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的具體實(shí)現(xiàn)

網(wǎng)關(guān)具體實(shí)現(xiàn)和使用方法參見 Java版本、C版本