999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Node-RED的窄帶物聯(lián)網(wǎng)教學及實驗設計

2019-12-06 08:48:53張笑非曲銘雯段先華劉鎮(zhèn)
軟件 2019年10期

張笑非 曲銘雯 段先華 劉鎮(zhèn)

摘? 要: 物聯(lián)網(wǎng)技術在各行各業(yè)的廣泛運用使得社會對物聯(lián)網(wǎng)專業(yè)人員的需求急劇增加,而硬件、軟件、以及相互間的融合是創(chuàng)新能力培養(yǎng)的重點。本文以窄帶物聯(lián)網(wǎng)技術框架為基礎,提出了基于Node-RED流式編程的物聯(lián)網(wǎng)應用設計教學方法,通過Node-RED提供的基本功能模塊節(jié)點,示范了以中國移動通信窄帶模組M5310-A為硬件、以MQTT為通信協(xié)議,通過基于組態(tài)軟件設計的方式,完成物聯(lián)網(wǎng)應用的設計與實現(xiàn)方法。通過將該教學方法運用到物聯(lián)網(wǎng)專業(yè)相關課程的理論和實踐教學中,學生可以快速有效搭建并驗證物聯(lián)網(wǎng)應用設計的正確性。

關鍵詞: 流式編程;M5310-A;MQTT;有限狀態(tài)機

中圖分類號: TP391.41? ? 文獻標識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.005

本文著錄格式:張笑非,曲銘雯,段先華,等. 基于Node-RED的窄帶物聯(lián)網(wǎng)教學及實驗設計[J]. 軟件,2019,40(10):2024

Narrow Band Internet of Things Teaching and Experimental Design Based on Node-RED

ZHANG Xiao-fei1,2, QU Ming-Wen1,3, DUAN Xian-hua1, LIU Zhen1

(1. School of Computer, Jiangsu University of Science and Technology, Zhenjiang 212003, China; 2. Faculty of Information, Beijing University

of Technology, Beijing 100124, China; 3. School of Electronic and Information Engineering, Soochow University 215006, China)

【Abstract】: The widespread use of Internet of Things (IoT) technology in a wide range of industries has led to a sharp increase in the demand for IoT professionals, while hardware, software, and their integration are the focus of students innovation. Based on the framework of narrow band IoT technology, this paper proposes a teaching method for IoT application design with flow-based programming of Node-RED. Through the basic function modular nodes provided by Node-RED, the M5310-A of China Mobile is used as the hardware of narrow band module and MQTT is used as the protocol of end-to-end communication, the design and implementation method of the Internet of Things application is completed based on the pattern of configuration software design. By applying this teaching method to the theoretical and practical teaching of IoT-related courses, students can quickly and effectively build and verify the correctness of IoT application design.

【Key words】: Flow-based programming; M5310-A; Message queuing telemetry transport; Finite state machine

0? 引言

當前,窄帶技術是物聯(lián)網(wǎng)(Internet of Things,IoT)領域的一個重要分支,窄帶物聯(lián)網(wǎng)(Narrow Band Internet of Things,NB-IoT)是高校物聯(lián)網(wǎng)專業(yè)教學中的一門重要課程,目前相關的教材更多側重于NB- IoT底層通信機制的原理和規(guī)范,圍繞著NB-IoT關鍵技術進行應用開發(fā)的教材還相對較少。Node-RED是由IBM Emerging Technologies團隊開發(fā)的圖形化可拖拽式數(shù)據(jù)流編程軟件,根據(jù)服務中數(shù)據(jù)的處理流程編寫flow實現(xiàn)服務程序[1]。一些研究已經開始嘗試在物聯(lián)網(wǎng)專業(yè)教學中使用Node-RED,文獻[2]展示了使用樹莓派(Raspberry Pi,RPi)和Node-RED等高級開源工具在物聯(lián)網(wǎng)課程教學和學習中的適用性和實用性,文獻[3]甚至開始為本科階段的工程專業(yè)學生提供了基于Node-RED的IoT研討會課程。此外,文獻[4]通過Node-RED流實現(xiàn)了邊緣側仿真框架所需的微服務,文獻[5]闡述了Node-RED在物聯(lián)網(wǎng)網(wǎng)關組態(tài)軟件設計用的應用。一些基于云計算的解決方案[6-8]若采用基于組態(tài)方式的技術架構,則可以進行更加靈活的設計開發(fā)和組件重用。物聯(lián)網(wǎng)課程中內容的理解和實踐在很大程度上取決于工具的高可用性和易用性,本文將就如何利用Node-RED進行窄帶物聯(lián)網(wǎng)技術課程教學和實驗設計給出詳細介紹。

1? NB-IoT教學設計

NB-IoT是由3GPP開發(fā)的低功率廣域網(wǎng)(Low Power Wide Area Network,LPWAN)無線電技術標準,用于為IoT提供廣域覆蓋[9],M5310-A是一款由中國移動推出的工作在頻段band3、band5、band8的工業(yè)級多頻段NB-IoT模組,MQTT[10]是基于PUB/SUB消息傳遞協(xié)議的ISO標準(ISO/IEC PRF 20922)。本教學設計以中國移動M5310-A使用手冊[11]為教學素材,以Node-RED為實驗環(huán)境,通過設計MQTT協(xié)議有限狀態(tài)自動機,利用串口執(zhí)行AT命令講解NB-IoT通信的整個過程。

中國移動M5310-A對MQTT的支持通過十條AT命令完成,如表1所示,主要涉及M5310A的MQTT參數(shù)設置、與MQTT Broker的連接、MQTT狀態(tài)統(tǒng)計、MQTT對話的訂閱、MQTT對話的消息推送、MQTT對話訂閱的解除、與MQTT Broker連接的斷開、MQTT參數(shù)的刪除、MQTTTO、MQTTPING。

圖1給出了M5310-A的6種連接狀態(tài)以及之間的遷移關系,在教學設計中,本文將通過引入有限狀態(tài)機對M5310-A的連接狀態(tài)集合、初始狀態(tài)、狀態(tài)遷移函數(shù)、終止狀態(tài)、觸發(fā)事件集合等進行定義。通過講解M5310-A如何從‘未初始化狀態(tài)經過相應的觸發(fā)及事件逐步遷移到‘已連接狀態(tài),以及M5310-A接收的消息如何影響當前狀態(tài)并遷移到其它的狀態(tài),從而幫助學生對M5310-A完成MQTT通信的過程有更深入的理解。

教學內容設計中,將M5310-A的有限狀態(tài)機定義如下:

定義1 是一個五元組,對應M5310-A的有限狀態(tài)自動機(Finite State Machine,F(xiàn)SM)。

定義2 Σ={‘OK, ‘Error, ‘Timeout, ‘+MQTTOP EN:OK, ‘+MQTTSUBACK, ‘+MQTTPUBCOMP, ‘+MQTTDISC:OK},是一個集合,元素為M5310-A在執(zhí)行完相應AT命令后,從串口上能夠接收到的返回消息、當前狀態(tài)的超時消息、以及從MQTT Broker接收到的協(xié)議消息,這些元素作為M5310-A的FSM輸入,將觸發(fā)其在不同狀態(tài)間進行遷移。

定義3? ,是一個有限非空集合,共包含6個元素,分別對應M5310-A的6個連接狀態(tài)‘未初始化、‘已初始化、‘首次連接、‘已連接、‘重新連接、‘已斷開。

定義4 ,是集合中的一個元素,表示M5310-A的初始狀態(tài),在這里為‘未初始化,即。

定義5 ,是一個狀態(tài)遷移函數(shù),函數(shù)的輸入為兩個參數(shù),分別是當前狀態(tài)和接收到的消息,且。則返回相應遷移后的狀態(tài),。

定義6 ,是一個可以為空集的集合,其中的元素代表M5310-A最終的連接狀態(tài)。由于M5310-A的6個連接狀態(tài)都可以遷移到其它某個或某些狀態(tài),所以不存在最終狀態(tài),因此該集合為空。

其中對于狀態(tài)遷移函數(shù)的設計,可以在教學過程中使用通過狀態(tài)/事件表來進行說明。狀態(tài)/事件表的表達方式有很多,這里將M5310-A的狀態(tài)遷移表定義為表2中的內容。

2? NB-IoT實驗設計

在窄帶物聯(lián)網(wǎng)實驗設計中,可以通過Node-RED提供的若干種節(jié)點完成與M5310-A的串口通信、通信狀態(tài)遷移功能、以及其它一些輔助功能的實現(xiàn)。如圖2所示,這些節(jié)點包括‘serial輸入節(jié)點、‘serial輸出節(jié)點、‘dsm節(jié)點、‘inject節(jié)點、‘function節(jié)點、 ‘delay節(jié)點、‘i2c輸入節(jié)點、以及‘mqtt接收節(jié)點。

圖2(a)和(b)是負責與M5310-A完成串口通信的Node-RED預裝節(jié)點,其中(a)是串口消息接收節(jié)點、(b)是串口消息發(fā)送節(jié)點。M5310-A的串口參數(shù)為波特率9600、數(shù)據(jù)位8bit、無奇偶校驗、停止位1bit。圖2(c)是負責實現(xiàn)M5310-A通信狀態(tài)遷移的節(jié)點,是依據(jù)有限狀態(tài)機模型實現(xiàn)的動態(tài)狀態(tài)機,它是一個沒有使用外部庫的純Node.js包。該‘dsm節(jié)點對應的GitHub資源地址為https://github. com/cflurin/node-red-contrib-dsm,在Node-RED環(huán)境中的安裝命令為npm install node-red-contrib-dsm。圖2(d)是Node-RED預裝的注入節(jié)點,用于觸發(fā)整個實驗流程的啟動、或者周期性產生消息由M5310-A進行發(fā)送。圖2(e)是Node-RED預裝的函數(shù)節(jié)點,可以通過編寫JavaScript函數(shù)處理輸入該節(jié)點的消息,該消息被稱為msg,而該‘function節(jié)點缺省會處理msg的屬性payload中的內容。圖? 2(f)是Node-RED預裝的延遲節(jié)點,可以對經過該節(jié)點的消息msg進行延遲轉發(fā)、或限制msg經過該節(jié)點的頻率。圖2(g)是讀取基于I2C接口的傳感器的節(jié)點,該節(jié)點與Raspberry Pi I2C驅動程序通信并使用node-I2C軟件包完成I2C通信,對應的GitHub資源地址為https://github.com/nielsnl68/node- red-contrib-i2c,在Node-RED環(huán)境中的安裝命令為npm install node-red-contrib-i2c。圖2(h)是Node- RED預裝的MQTT數(shù)據(jù)接收節(jié)點,通過指定MQTT Broker的IP地址、端口號、以及Topic名稱,完成MQTT消息的訂閱。

面向M5310-A的Node-RED流設計如圖3(a)所示,其中注入節(jié)點‘開始負責M5310-A啟動的觸發(fā),其后續(xù)節(jié)點‘初始化負責設置M5310-A的參數(shù)和初始狀態(tài)(‘未初始化)。節(jié)點‘執(zhí)行AT命令負責根據(jù)M5310-A的當前狀態(tài)構造相應的AT命令,節(jié)點‘有限狀態(tài)機則負責根據(jù)當前M5310-A的狀態(tài)和事件控制其狀態(tài)的遷移。節(jié)點‘M5310-A接收和節(jié)點‘M5310-A發(fā)送分別通過串口完成消息的接收與發(fā)送。節(jié)點‘讀取光敏強度會周期性地觸發(fā)下一個節(jié)點的運行,節(jié)點‘PCF8591負責通過I2C接口讀取光敏傳感器的數(shù)據(jù),節(jié)點‘推送數(shù)據(jù)會判斷當前M5310-A是否處于狀態(tài)‘已連接,如果為真則將讀取的光敏強度數(shù)據(jù)利用節(jié)點‘M5310-A進行MQTT推送,反之則不推送。這其中關鍵的工作是圖3(a)節(jié)點‘有限狀態(tài)機的實現(xiàn)細節(jié),需要滿足表2中的設計,關鍵的實現(xiàn)代碼如下:

{

"currentState": "UNINIT",

"states": {

"UNINIT": {

"OK": "INITED"

},

"INITED": {

"OK": "CONN"

},

"CONN": {

"+MQTTOPEN:OK": "OPENED"

},

"OPENED": {

"+MQTTDISC:OK": "CLOSED"

}

……

}

}

其中給出了M5310-A在處于每個狀態(tài)時,在接收到指定消息后遷移目標狀態(tài)的程序定義。而節(jié)點‘執(zhí)行AT命令中的關鍵代碼如下所示:

if(msg.topic=="UNINIT"){

return {payload:'AT+MQTTCFG="hostname", port,

client_id,keepalive,"user_id","password", 1\r\n'}

}

……

else if(msg.topic=='OPENED'){

global.set('state','OPENED')

}

其中會根據(jù)M5310-A的當前狀態(tài)控制向窄帶模組所發(fā)送的AT命令,這里的參數(shù)通過關鍵字替代進行表示。為了保證存在有效MQTT連接后才使得向MQTT Broker推送節(jié)點‘PCF8591所采集到的光敏數(shù)據(jù),特別設置了一個Node-RED全局變量‘state。當M5310-A狀態(tài)為節(jié)‘OPENED時,設置該全局變量也為‘OPENED。因此,節(jié)點‘推送數(shù)據(jù)會根據(jù)這個全局變量來控制是否通過AT命令向MQTT Broker推送節(jié)點‘PCF8591所采集的光敏數(shù)據(jù),關鍵代碼如下:

if(global.get('state')=='OPENED'){

return {payload:'AT+MQTTPUB=

"topic_name",2,0,0,0,'+msg.payload+'\r\n'}

}

其中當該全局變量為‘OPENED時,則通過M5310-A的‘MQTTPUB命令推送數(shù)據(jù),其中MQTT的topic name通過關鍵字進行了替代。

此外,對圖3(a)中基于M5310-A的數(shù)據(jù)發(fā)送的正確性,可以通過對其數(shù)據(jù)進行MQTT訂閱來驗證。圖3(b)中通過節(jié)點‘MQTT接收完成MQTT訂閱功能,然后將接收到的數(shù)據(jù)通過節(jié)點‘MQTT消息進行輸出并作觀察。

3? 實驗與結果

圖4中給出了基于Node-RED流設計的M5310- A MQTT連接成功的結果。可以看到,M5310-A接收到了消息‘+MQTTOPEN:OK,該消息屬于定義2中的集合。根據(jù)M5310-A的狀態(tài)、表2中定義的狀態(tài)遷移表、以及Node-RED中的實現(xiàn)代碼,實現(xiàn)了M5310-A與MQTT Broker的有效連接。

如圖5所示,實驗中所連接的MQTT Broker是在中國移動OneNET平臺上創(chuàng)建的對象,其中設備ID為525904487的資源就是接入的測試用M5310-A模組。在成功連接后,測試用M5310-A會持續(xù)不斷通過MQTT協(xié)議向OneNET推送Node-RED流中的PCF8591所采集的光敏數(shù)據(jù)。

4? 結束語

本文針對物聯(lián)網(wǎng)專業(yè)窄帶技術課程中所涉及的硬件、軟件、通信等內容,利用基于組態(tài)設計方法的Node-RED平臺實現(xiàn)面向M5310-A窄帶通信的教學和實驗案例,幫助學生掌握開發(fā)基于窄帶通信的物聯(lián)網(wǎng)應用所需的基本方法。此外,通過對案例中的傳感器模塊進行替換、或對Node-RED流進行擴展,融入包括面向Web、數(shù)據(jù)庫管理、機器學習等一系列Node-RED組件,使得學生能夠開發(fā)具有‘硬、‘通、‘軟,‘智等全要素的物聯(lián)網(wǎng)窄帶應用,從而能夠更好地進行創(chuàng)新創(chuàng)業(yè)活動。

參考文獻

[1]王江波. 基于Node-red與Redis的實時流數(shù)據(jù)處理模型的設計與應用[D]. 電子科技大學, 2017.

[2]Chaczko Z, Braun R. Learning data engineering: Creating IoT apps using the node-RED and the RPI technologies[C]. International Conference on Information Technology Based Higher Education & Training. IEEE, 2017: 1-8.

[3]Krishnamurthi R. Teaching Methodology for IoT Workshop Course Using Node-RED[C]. 2018 Eleventh International Conference on Contemporary Computing (IC3). 2018.

[4]翟巖龍, 孫文心, 包天虹, 楊凱, 卿杜政. 基于微服務的邊緣側仿真方法及框架研究[J]. 系統(tǒng)仿真學報, 2018, 30(12): 4536-4545.

[5]湯學明. 物聯(lián)網(wǎng)網(wǎng)關數(shù)據(jù)流圖形化組態(tài)技術研究[D]. 冶金自動化研究設計院, 2018.

[6]李紅輝, 關婷婷, 楊芳南. 云計算平臺狀態(tài)監(jiān)控技術研究與應用[J]. 軟件, 2018, 39(1): 9-13.

[7]王曉暉, 喬通. 云環(huán)境下面向感知數(shù)據(jù)匯集的通信服務系統(tǒng)設計與實現(xiàn)[J]. 軟件, 2016, 37(2): 155-159.

[8]尹航, 楊歡, 崔海斌, 汪棟, 郭唐寶. 基于大數(shù)據(jù)應用的虛擬化云平臺建設方法研究[J]. 軟件, 2018, 39(4): 201-207.

[9]Wang Y P E, Lin X, Adhikary A, et al. A Primer on 3GPP Narrowband Internet of Things (NB-IoT)[J]. IEEE Communica tions Magazine, 2016, 55(3).

[10]IBM. MQTT 3.1.1 Specification[S]. OASIS. December 10, 2015. Retrieved April 25, 2017.

[11]林紫微. M5310-A MQTT使用指導[EB]. 中國移動通信有限公司, June 11, 2018.

主站蜘蛛池模板: 国产精品手机视频| 精品無碼一區在線觀看 | 国产迷奸在线看| 超清无码一区二区三区| 国产小视频免费| 中文字幕波多野不卡一区| 呦视频在线一区二区三区| 国产精品成人AⅤ在线一二三四| 亚洲大尺码专区影院| 久久国产乱子伦视频无卡顿| 黄色网在线免费观看| 91免费国产在线观看尤物| 97色婷婷成人综合在线观看| 欧美日本中文| 亚洲成a人片| 久久夜色撩人精品国产| 在线视频97| 久久久久亚洲av成人网人人软件| 国产视频欧美| 成人免费网站在线观看| 99在线视频网站| 国模极品一区二区三区| 国产精品成人免费视频99| 亚洲国产欧美国产综合久久 | 免费一级毛片| 亚洲日韩高清无码| 成人免费视频一区二区三区 | 亚洲无码精彩视频在线观看| 九九香蕉视频| 欧美不卡视频在线| 久久婷婷国产综合尤物精品| 九色在线视频导航91| 91免费精品国偷自产在线在线| 国产日韩欧美中文| 国内精品视频在线| 91亚瑟视频| 麻豆AV网站免费进入| 亚洲国产成人精品无码区性色| 日韩免费无码人妻系列| 亚洲精品成人福利在线电影| 国产精品久久自在自线观看| 国产在线一区视频| 国产一区成人| 国产精品久久久久久搜索| 国产sm重味一区二区三区| 欧美高清三区| 免费中文字幕一级毛片| 久久精品丝袜| 91无码人妻精品一区| 国产美女人喷水在线观看| 国产无码高清视频不卡| 青青青国产免费线在| 免费国产黄线在线观看| 亚洲精品福利网站| 国产自在线拍| 国产黄色视频综合| 911亚洲精品| 国产精品思思热在线| 久久精品国产亚洲麻豆| 婷婷色在线视频| 黄色在线不卡| 亚洲欧美色中文字幕| 久久人妻xunleige无码| 日韩无码白| 在线精品亚洲国产| 色一情一乱一伦一区二区三区小说| 国产精品美女网站| 国产精品免费入口视频| 国产成人精品一区二区免费看京| 毛片a级毛片免费观看免下载| 毛片久久网站小视频| 九九久久精品免费观看| 亚洲Av激情网五月天| a毛片在线播放| 国产成人亚洲无码淙合青草| 亚洲国语自产一区第二页| 亚洲成人精品久久| 五月婷婷中文字幕| 性欧美久久| 日韩福利在线视频| 成人无码区免费视频网站蜜臀| 一级毛片在线免费看|