物聯(lián)網(wǎng)產(chǎn)品框架:傳統(tǒng)設備使用通信模組連接云服務器(即上云)做數(shù)據(jù)傳輸,云端再進行數(shù)據(jù)應用。本文將使用 BC28 通過 COAP 協(xié)議連接電信IOT平臺,簡單的介紹下移遠NB-IOT通信模塊 BC28 是如何連接電信IOT平臺進行數(shù)據(jù)傳輸
1 相關介紹
1.1 NB-IOT業(yè)務介紹
NB-IOT業(yè)務主要包含NB-IoT設備、NB-IOT網(wǎng)絡、物聯(lián)網(wǎng)開放平臺、垂直行業(yè)應用:
- NB-IOT設備:通過無線網(wǎng)絡連接到中國電信物聯(lián)網(wǎng)開放平臺,采用CoAP協(xié)議接入,如水表、燃氣表等
- NB-IOT網(wǎng)絡:實現(xiàn)對NB-IoT終端的移動性管理與會話管理;為NB-IoT終端建立用戶面承載,傳遞上下行業(yè)務數(shù)據(jù)
- 物聯(lián)網(wǎng)開放平臺:實現(xiàn)對各種NB-IoT設備數(shù)據(jù)的統(tǒng)一管理,同時向第三方應用系統(tǒng)開放接口,讓各種應用能快速構建自己的物聯(lián)網(wǎng)業(yè)務
- 垂直行業(yè)應用:實現(xiàn)對NB設備的業(yè)務管理,包括業(yè)務發(fā)放、業(yè)務控制和呈現(xiàn)等,由第三方基于中國電信物聯(lián)網(wǎng)開放平臺開放接口進行開發(fā)
1.2 BC28 概述
BC28 是移遠的一款超緊湊、高性能、低功耗的多頻段 NB-IoT 無線通信模塊,支持 B1/B3/B8/B5/B20/B28 頻段。其尺寸僅為17.7mm×15.8mm ×2.0mm,能最大限度地滿足終端設備對小尺寸模塊產(chǎn)品的需求,常被用于無線抄表、共享單車、智能停車、智慧城市、安防、資產(chǎn)追蹤、智能家電、農(nóng)業(yè)和環(huán)境監(jiān)測以及其它諸多行業(yè)
- BC28 模塊詳細參數(shù):
- BC28 模塊主要性能:
1.3 電信IOT平臺
電信IOT平臺是實現(xiàn)對各種NB-IoT設備數(shù)據(jù)的統(tǒng)一管理,同時向第三方應用系統(tǒng)開放接口,讓各種應用能快速構建自己的物聯(lián)網(wǎng)業(yè)務
電信物聯(lián)網(wǎng)平臺包括應用管理、設備管理、系統(tǒng)管理等能力,實現(xiàn)統(tǒng)一安全的網(wǎng)絡接入、各種終端的靈活適配、海量數(shù)據(jù)的采集分析,從而實現(xiàn)新價值的創(chuàng)造。
物聯(lián)網(wǎng)平臺不僅可以簡化各類終端廠家的開發(fā),屏蔽各種復雜設備接口,實現(xiàn)終端設備的快速接入;同時面向各行業(yè)提供強大的開放能力,支撐各行業(yè)伙伴快速實現(xiàn)各種物聯(lián)網(wǎng)業(yè)務應用
2 電信IOT平臺創(chuàng)建產(chǎn)品
2.1 創(chuàng)建產(chǎn)品
- 首頁我的項目處創(chuàng)建項目,填寫項目名稱,選擇所屬行業(yè)即可
- 創(chuàng)建產(chǎn)品,選擇自定義產(chǎn)品
- 填寫產(chǎn)品信息,注意此處的應用層協(xié)議類型需選擇 CoAP 協(xié)議,因為BC28只支持 CoAP 協(xié)議,不支持 LWM2M 協(xié)議
2.2 Profile定義
設備的Profile文件是用來描述一款設備是什么、能做什么以及如何控制該設備的文件。每款設備都需要一個Profile文件
一個Profile文件的內容主要包括兩部分,一部分是設備的基礎屬性信息,如manufacturerId(廠商ID)、manufacturerName(廠商名字)、deviceType(設備類型)、model(設備型號)、protocolType(協(xié)議類型)等;另一部分是設備的服務信息,這一部分定義了設備的業(yè)務數(shù)據(jù),包括設備上報的上行數(shù)據(jù)和廠商服務器下發(fā)給設備的下行數(shù)據(jù)
Profile定義時,屬性列表先新建服務,再添加屬性;命令列表先添加命令,再添加命令下發(fā)字段
- 添加兩個上報屬性:temperature 和 humidity ,數(shù)據(jù)類型為 int
- 添加一個命令下發(fā)字段:command,數(shù)據(jù)類型為 string
2.3 編解碼插件開發(fā)
NB-IoT設備和中國電信物聯(lián)網(wǎng)開放平臺之間采用CoAP協(xié)議通訊,CoAP消息的數(shù)據(jù)為應用層數(shù)據(jù),應用層數(shù)據(jù)的格式由設備廠商自行定義
由于NB-IoT設備對省電要求通常較高,所以應用層數(shù)據(jù)一般采用十六進制格式
應用層數(shù)據(jù)在中國電信物聯(lián)網(wǎng)開放平臺做協(xié)議解析時,會轉換成統(tǒng)一的json格式,以方便應用服務器使用。
要實現(xiàn)十六進制消息與json格式消息的轉換功能,中國電信物聯(lián)網(wǎng)開放平臺需要使用設備廠商提供的編解碼插件,一款設備對應一個編解碼插件
編解碼插件開發(fā)時,先新建消息,包含數(shù)據(jù)上報和命令下發(fā)兩條,再添加數(shù)據(jù)上報字段和命令下發(fā)字段
- 添加兩個數(shù)據(jù)上報字段:temperature 和 humidity ,數(shù)據(jù)類型選擇 int16u(16位無符號整型)
- 添加一個命令下發(fā)字段:command,數(shù)據(jù)類型選擇 string(字符串類型)
注:關于Profile定義和編解碼插件開發(fā)多種多樣,比如:多條數(shù)據(jù)上報消息的插件開發(fā)、字符串及可變長字符串數(shù)據(jù)類型的插件開發(fā)、數(shù)組及可變長數(shù)組數(shù)據(jù)類型的插件開發(fā)、含命令執(zhí)行結果的編解碼插件開發(fā),具體開發(fā)的教程可查看電信官方文檔:《中國電信物聯(lián)網(wǎng)開放平臺_NB-IoT業(yè)務對接指導書》
2.4 建立映射關系
需將 Profile 和編解碼插件建立映射關系
- 拖動右側“設備模型”區(qū)域的屬性字段和命令字段,數(shù)據(jù)上報消息和命令下發(fā)消息的相應字段建立映射關系
2.5 虛擬設備測試
在使用模塊對接平臺之前,我們需要先使用平臺的虛擬設備模擬測試下是否能正常數(shù)據(jù)上報和命令下發(fā)
- 新建虛擬設備
- 數(shù)據(jù)上報,若上報溫度數(shù)據(jù)為20,濕度數(shù)據(jù)為18,則對應的16進制數(shù)據(jù)為0010012
- 命令下發(fā):若下發(fā)命令ON,設備端接收到16進制數(shù)據(jù) 4F4E
- 虛擬設備能正常數(shù)據(jù)上報和命令下發(fā),說明 Profile 定義和編解碼插件開發(fā)沒問題
2.6 添加真實設備
添加真實設備,設備名稱可自定義,設備標識需使用模塊的IMEI(國際移動設備識別碼),IMEI在模塊的外殼上面有絲印,也可使用AT指令“AT+CGSN=1”查詢
3 NB-IOT模塊通信
3.1 附著網(wǎng)絡
BC28通過AT指令附著網(wǎng)絡(即連接網(wǎng)絡)的過程如下:當能查詢到到模塊的IP地址時,說明網(wǎng)絡附著成功
注:若發(fā)送第一個指令“AT”,未返回“OK”的話,請檢查是否選擇了正確的串口,以及合適的波特率(BC28的串口波特率為9600)
序號 AT指令 指令解析 1 AT 測試指令,若返回OK,則模塊可正常通信 2 AT+CPIN? 檢查SIM卡是否在位 3 AT+CSQ 查詢信號質量 4 AT+CGATT=1 觸發(fā)網(wǎng)絡連接 5 AT+CEREG? 查詢網(wǎng)絡注冊狀態(tài) 6 AT+CGATT? 查詢網(wǎng)絡附著狀態(tài) 7 AT+CGPADDR 查詢模塊的 IP 地址
3.2 連接電信云
BC28通過AT指令連接電信IOT平臺的過程如下:當發(fā)送AT指令“AT+QLWSREGIND=0”返回“+QLWEVTIND:3”時,代表設備已連接上電信IOT平臺
序號 AT指令 指令解析 1 AT+NCDP=180.101.147.115,5683 設置 IoT 平臺 IP 地址及端口 2 AT+QLWSREGIND=0 開始注冊 IoT 平臺
在電信IOT平臺上設備的狀態(tài)變?yōu)椤霸诰€”,代表設備已連接上電信IOT平臺
3.3 數(shù)據(jù)上報
數(shù)據(jù)上報的AT指令為“AT+QLWULDATAEX”,看看官方AT指令手冊對它的描述
使用AT指令為“AT+QLWULDATAEX”發(fā)送數(shù)據(jù),當接收到“+QLWULDATASTATUS:4”表示數(shù)據(jù)發(fā)送成功
序號 AT指令 指令解析 1 AT+QLWULDATAEX=4,00140012,0X0100 發(fā)送CON 消息(00140012), IoT 平臺需要應答 ACK 消息
在電信IOT平臺可以看到上報的數(shù)據(jù):{ "temperature": 20, "humidity": 18 }
注:消息發(fā)送模式選擇帶釋放輔助提示時,表示模塊在發(fā)送完數(shù)據(jù)之后將釋放連接以進入空閑模式,否則模塊會持續(xù)20多秒才能進入空閑模式,在做低功耗時需要用到
3.4 命令下發(fā)
命令下發(fā)不需要AT指令,但有一點需要注意:NB-IOT模塊由于是面向低功耗領域的,長時間處于休眠狀態(tài),故云端下發(fā)命令時,NB-IOT模塊不能及時接收到,只有當模塊處于活動狀態(tài)下才能接收到云端命令
基于NB-IOT模塊的這個特性,平臺提供兩種命令下發(fā)機制:
- 立即下發(fā):平臺立即發(fā)送收到的命令,如果設備不在線或者設備沒收到指令則下發(fā)失敗。立即下發(fā)適合對命令實時性有要求的場景,比如路燈開關燈,燃氣表開關閥。使用立即下發(fā)時,應用需要自己保證下發(fā)的時機
- 緩存下發(fā):平臺收到命令后放入隊列。在設備上線的時候,平臺依次下發(fā)命令隊列中的命令。緩存下發(fā)適合對命令實時性要求不高的場景,比如配置水表的參數(shù)。緩存下發(fā)平臺根據(jù)設備的省電模式進行不同處理,緩存時間默認為48小時
電信IOT平臺下發(fā)“ON”命令,設備端接收到“ON”的16進制數(shù)“4F4E”,命令下發(fā)成功