物聯(lián)網(wǎng)產(chǎn)品框架:傳統(tǒng)設(shè)備使用通信模組連接云服務(wù)器(即上云)做數(shù)據(jù)傳輸,云端再進(jìn)行數(shù)據(jù)應(yīng)用。本文將使用 BC28 通過(guò) COAP 協(xié)議連接電信IOT平臺(tái),簡(jiǎn)單的介紹下移遠(yuǎn)NB-IOT通信模塊 BC28 是如何連接電信IOT平臺(tái)進(jìn)行數(shù)據(jù)傳輸

1 相關(guān)介紹

1.1 NB-IOT業(yè)務(wù)介紹

NB-IOT業(yè)務(wù)主要包含NB-IoT設(shè)備、NB-IOT網(wǎng)絡(luò)、物聯(lián)網(wǎng)開(kāi)放平臺(tái)、垂直行業(yè)應(yīng)用:

  • NB-IOT設(shè)備:通過(guò)無(wú)線網(wǎng)絡(luò)連接到中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái),采用CoAP協(xié)議接入,如水表、燃?xì)獗淼?/li>
  • NB-IOT網(wǎng)絡(luò):實(shí)現(xiàn)對(duì)NB-IoT終端的移動(dòng)性管理與會(huì)話管理;為NB-IoT終端建立用戶面承載,傳遞上下行業(yè)務(wù)數(shù)據(jù)
  • 物聯(lián)網(wǎng)開(kāi)放平臺(tái):實(shí)現(xiàn)對(duì)各種NB-IoT設(shè)備數(shù)據(jù)的統(tǒng)一管理,同時(shí)向第三方應(yīng)用系統(tǒng)開(kāi)放接口,讓各種應(yīng)用能快速構(gòu)建自己的物聯(lián)網(wǎng)業(yè)務(wù)
  • 垂直行業(yè)應(yīng)用:實(shí)現(xiàn)對(duì)NB設(shè)備的業(yè)務(wù)管理,包括業(yè)務(wù)發(fā)放、業(yè)務(wù)控制和呈現(xiàn)等,由第三方基于中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái)開(kāi)放接口進(jìn)行開(kāi)發(fā)

1.2 BC28 概述

BC28 是移遠(yuǎn)的一款超緊湊、高性能、低功耗的多頻段 NB-IoT 無(wú)線通信模塊,支持 B1/B3/B8/B5/B20/B28 頻段。其尺寸僅為17.7mm×15.8mm ×2.0mm,能最大限度地滿足終端設(shè)備對(duì)小尺寸模塊產(chǎn)品的需求,常被用于無(wú)線抄表、共享單車、智能停車、智慧城市、安防、資產(chǎn)追蹤、智能家電、農(nóng)業(yè)和環(huán)境監(jiān)測(cè)以及其它諸多行業(yè)

  • BC28 模塊詳細(xì)參數(shù):
  • BC28 模塊主要性能:

1.3 電信IOT平臺(tái)

電信IOT平臺(tái)是實(shí)現(xiàn)對(duì)各種NB-IoT設(shè)備數(shù)據(jù)的統(tǒng)一管理,同時(shí)向第三方應(yīng)用系統(tǒng)開(kāi)放接口,讓各種應(yīng)用能快速構(gòu)建自己的物聯(lián)網(wǎng)業(yè)務(wù)

電信物聯(lián)網(wǎng)平臺(tái)包括應(yīng)用管理、設(shè)備管理、系統(tǒng)管理等能力,實(shí)現(xiàn)統(tǒng)一安全的網(wǎng)絡(luò)接入、各種終端的靈活適配、海量數(shù)據(jù)的采集分析,從而實(shí)現(xiàn)新價(jià)值的創(chuàng)造。

物聯(lián)網(wǎng)平臺(tái)不僅可以簡(jiǎn)化各類終端廠家的開(kāi)發(fā),屏蔽各種復(fù)雜設(shè)備接口,實(shí)現(xiàn)終端設(shè)備的快速接入;同時(shí)面向各行業(yè)提供強(qiáng)大的開(kāi)放能力,支撐各行業(yè)伙伴快速實(shí)現(xiàn)各種物聯(lián)網(wǎng)業(yè)務(wù)應(yīng)用

2 電信IOT平臺(tái)創(chuàng)建產(chǎn)品

2.1 創(chuàng)建產(chǎn)品

  • 首頁(yè)我的項(xiàng)目處創(chuàng)建項(xiàng)目,填寫項(xiàng)目名稱,選擇所屬行業(yè)即可
  • 創(chuàng)建產(chǎn)品,選擇自定義產(chǎn)品
  • 填寫產(chǎn)品信息,注意此處的應(yīng)用層協(xié)議類型需選擇 CoAP 協(xié)議,因?yàn)锽C28只支持 CoAP 協(xié)議,不支持 LWM2M 協(xié)議

2.2 Profile定義

設(shè)備的Profile文件是用來(lái)描述一款設(shè)備是什么、能做什么以及如何控制該設(shè)備的文件。每款設(shè)備都需要一個(gè)Profile文件

一個(gè)Profile文件的內(nèi)容主要包括兩部分,一部分是設(shè)備的基礎(chǔ)屬性信息,如manufacturerId(廠商ID)、manufacturerName(廠商名字)、deviceType(設(shè)備類型)、model(設(shè)備型號(hào))、protocolType(協(xié)議類型)等;另一部分是設(shè)備的服務(wù)信息,這一部分定義了設(shè)備的業(yè)務(wù)數(shù)據(jù),包括設(shè)備上報(bào)的上行數(shù)據(jù)和廠商服務(wù)器下發(fā)給設(shè)備的下行數(shù)據(jù)

Profile定義時(shí),屬性列表先新建服務(wù),再添加屬性;命令列表先添加命令,再添加命令下發(fā)字段

  • 添加兩個(gè)上報(bào)屬性:temperature 和 humidity ,數(shù)據(jù)類型為 int
  • 添加一個(gè)命令下發(fā)字段:command,數(shù)據(jù)類型為 string

2.3 編解碼插件開(kāi)發(fā)

NB-IoT設(shè)備和中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái)之間采用CoAP協(xié)議通訊,CoAP消息的數(shù)據(jù)為應(yīng)用層數(shù)據(jù),應(yīng)用層數(shù)據(jù)的格式由設(shè)備廠商自行定義

由于NB-IoT設(shè)備對(duì)省電要求通常較高,所以應(yīng)用層數(shù)據(jù)一般采用十六進(jìn)制格式

應(yīng)用層數(shù)據(jù)在中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái)做協(xié)議解析時(shí),會(huì)轉(zhuǎn)換成統(tǒng)一的json格式,以方便應(yīng)用服務(wù)器使用。

要實(shí)現(xiàn)十六進(jìn)制消息與json格式消息的轉(zhuǎn)換功能,中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái)需要使用設(shè)備廠商提供的編解碼插件,一款設(shè)備對(duì)應(yīng)一個(gè)編解碼插件

編解碼插件開(kāi)發(fā)時(shí),先新建消息,包含數(shù)據(jù)上報(bào)和命令下發(fā)兩條,再添加數(shù)據(jù)上報(bào)字段和命令下發(fā)字段

  • 添加兩個(gè)數(shù)據(jù)上報(bào)字段:temperature 和 humidity ,數(shù)據(jù)類型選擇 int16u(16位無(wú)符號(hào)整型)
  • 添加一個(gè)命令下發(fā)字段:command,數(shù)據(jù)類型選擇 string(字符串類型)

注:關(guān)于Profile定義和編解碼插件開(kāi)發(fā)多種多樣,比如:多條數(shù)據(jù)上報(bào)消息的插件開(kāi)發(fā)、字符串及可變長(zhǎng)字符串?dāng)?shù)據(jù)類型的插件開(kāi)發(fā)、數(shù)組及可變長(zhǎng)數(shù)組數(shù)據(jù)類型的插件開(kāi)發(fā)、含命令執(zhí)行結(jié)果的編解碼插件開(kāi)發(fā),具體開(kāi)發(fā)的教程可查看電信官方文檔:《中國(guó)電信物聯(lián)網(wǎng)開(kāi)放平臺(tái)_NB-IoT業(yè)務(wù)對(duì)接指導(dǎo)書(shū)》

2.4 建立映射關(guān)系

需將 Profile 和編解碼插件建立映射關(guān)系

  • 拖動(dòng)右側(cè)“設(shè)備模型”區(qū)域的屬性字段和命令字段,數(shù)據(jù)上報(bào)消息和命令下發(fā)消息的相應(yīng)字段建立映射關(guān)系

2.5 虛擬設(shè)備測(cè)試

在使用模塊對(duì)接平臺(tái)之前,我們需要先使用平臺(tái)的虛擬設(shè)備模擬測(cè)試下是否能正常數(shù)據(jù)上報(bào)和命令下發(fā)

  • 新建虛擬設(shè)備
  • 數(shù)據(jù)上報(bào),若上報(bào)溫度數(shù)據(jù)為20,濕度數(shù)據(jù)為18,則對(duì)應(yīng)的16進(jìn)制數(shù)據(jù)為0010012
  • 命令下發(fā):若下發(fā)命令ON,設(shè)備端接收到16進(jìn)制數(shù)據(jù) 4F4E
  • 虛擬設(shè)備能正常數(shù)據(jù)上報(bào)和命令下發(fā),說(shuō)明 Profile 定義和編解碼插件開(kāi)發(fā)沒(méi)問(wèn)題

2.6 添加真實(shí)設(shè)備

添加真實(shí)設(shè)備,設(shè)備名稱可自定義,設(shè)備標(biāo)識(shí)需使用模塊的IMEI(國(guó)際移動(dòng)設(shè)備識(shí)別碼),IMEI在模塊的外殼上面有絲印,也可使用AT指令“AT+CGSN=1”查詢

3 NB-IOT模塊通信

3.1 附著網(wǎng)絡(luò)

BC28通過(guò)AT指令附著網(wǎng)絡(luò)(即連接網(wǎng)絡(luò))的過(guò)程如下:當(dāng)能查詢到到模塊的IP地址時(shí),說(shuō)明網(wǎng)絡(luò)附著成功

注:若發(fā)送第一個(gè)指令“AT”,未返回“OK”的話,請(qǐng)檢查是否選擇了正確的串口,以及合適的波特率(BC28的串口波特率為9600)

序號(hào) AT指令 指令解析 1 AT 測(cè)試指令,若返回OK,則模塊可正常通信 2 AT+CPIN? 檢查SIM卡是否在位 3 AT+CSQ 查詢信號(hào)質(zhì)量 4 AT+CGATT=1 觸發(fā)網(wǎng)絡(luò)連接 5 AT+CEREG? 查詢網(wǎng)絡(luò)注冊(cè)狀態(tài) 6 AT+CGATT? 查詢網(wǎng)絡(luò)附著狀態(tài) 7 AT+CGPADDR 查詢模塊的 IP 地址

3.2 連接電信云

BC28通過(guò)AT指令連接電信IOT平臺(tái)的過(guò)程如下:當(dāng)發(fā)送AT指令“AT+QLWSREGIND=0”返回“+QLWEVTIND:3”時(shí),代表設(shè)備已連接上電信IOT平臺(tái)

序號(hào) AT指令 指令解析 1 AT+NCDP=180.101.147.115,5683 設(shè)置 IoT 平臺(tái) IP 地址及端口 2 AT+QLWSREGIND=0 開(kāi)始注冊(cè) IoT 平臺(tái)

在電信IOT平臺(tái)上設(shè)備的狀態(tài)變?yōu)椤霸诰€”,代表設(shè)備已連接上電信IOT平臺(tái)

3.3 數(shù)據(jù)上報(bào)

數(shù)據(jù)上報(bào)的AT指令為“AT+QLWULDATAEX”,看看官方AT指令手冊(cè)對(duì)它的描述

使用AT指令為“AT+QLWULDATAEX”發(fā)送數(shù)據(jù),當(dāng)接收到“+QLWULDATASTATUS:4”表示數(shù)據(jù)發(fā)送成功

序號(hào) AT指令 指令解析 1 AT+QLWULDATAEX=4,00140012,0X0100 發(fā)送CON 消息(00140012), IoT 平臺(tái)需要應(yīng)答 ACK 消息

在電信IOT平臺(tái)可以看到上報(bào)的數(shù)據(jù):{ "temperature": 20, "humidity": 18 }

注:消息發(fā)送模式選擇帶釋放輔助提示時(shí),表示模塊在發(fā)送完數(shù)據(jù)之后將釋放連接以進(jìn)入空閑模式,否則模塊會(huì)持續(xù)20多秒才能進(jìn)入空閑模式,在做低功耗時(shí)需要用到

3.4 命令下發(fā)

命令下發(fā)不需要AT指令,但有一點(diǎn)需要注意:NB-IOT模塊由于是面向低功耗領(lǐng)域的,長(zhǎng)時(shí)間處于休眠狀態(tài),故云端下發(fā)命令時(shí),NB-IOT模塊不能及時(shí)接收到,只有當(dāng)模塊處于活動(dòng)狀態(tài)下才能接收到云端命令

基于NB-IOT模塊的這個(gè)特性,平臺(tái)提供兩種命令下發(fā)機(jī)制:

  • 立即下發(fā):平臺(tái)立即發(fā)送收到的命令,如果設(shè)備不在線或者設(shè)備沒(méi)收到指令則下發(fā)失敗。立即下發(fā)適合對(duì)命令實(shí)時(shí)性有要求的場(chǎng)景,比如路燈開(kāi)關(guān)燈,燃?xì)獗黹_(kāi)關(guān)閥。使用立即下發(fā)時(shí),應(yīng)用需要自己保證下發(fā)的時(shí)機(jī)
  • 緩存下發(fā):平臺(tái)收到命令后放入隊(duì)列。在設(shè)備上線的時(shí)候,平臺(tái)依次下發(fā)命令隊(duì)列中的命令。緩存下發(fā)適合對(duì)命令實(shí)時(shí)性要求不高的場(chǎng)景,比如配置水表的參數(shù)。緩存下發(fā)平臺(tái)根據(jù)設(shè)備的省電模式進(jìn)行不同處理,緩存時(shí)間默認(rèn)為48小時(shí)

電信IOT平臺(tái)下發(fā)“ON”命令,設(shè)備端接收到“ON”的16進(jìn)制數(shù)“4F4E”,命令下發(fā)成功