亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Node-RED的窄帶物聯(lián)網(wǎng)教學(xué)及實(shí)驗(yàn)設(shè)計(jì)

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

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

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

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

        中圖分類號(hào): TP391.41? ? 文獻(xiàn)標(biāo)識(shí)碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.10.005

        本文著錄格式:張笑非,曲銘雯,段先華,等. 基于Node-RED的窄帶物聯(lián)網(wǎng)教學(xué)及實(shí)驗(yàn)設(shè)計(jì)[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? 引言

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

        1? NB-IoT教學(xué)設(shè)計(jì)

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

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

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

        教學(xué)內(nèi)容設(shè)計(jì)中,將M5310-A的有限狀態(tài)機(jī)定義如下:

        定義1 是一個(gè)五元組,對(duì)應(yīng)M5310-A的有限狀態(tài)自動(dòng)機(jī)(Finite State Machine,F(xiàn)SM)。

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

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

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

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

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

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

        2? NB-IoT實(shí)驗(yàn)設(shè)計(jì)

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

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

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

        {

        "currentState": "UNINIT",

        "states": {

        "UNINIT": {

        "OK": "INITED"

        },

        "INITED": {

        "OK": "CONN"

        },

        "CONN": {

        "+MQTTOPEN:OK": "OPENED"

        },

        "OPENED": {

        "+MQTTDISC:OK": "CLOSED"

        }

        ……

        }

        }

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

        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')

        }

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

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

        return {payload:'AT+MQTTPUB=

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

        }

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

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

        3? 實(shí)驗(yàn)與結(jié)果

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

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

        4? 結(jié)束語(yǔ)

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

        參考文獻(xiàn)

        [1]王江波. 基于Node-red與Redis的實(shí)時(shí)流數(shù)據(jù)處理模型的設(shè)計(jì)與應(yīng)用[D]. 電子科技大學(xué), 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]翟巖龍, 孫文心, 包天虹, 楊凱, 卿杜政. 基于微服務(wù)的邊緣側(cè)仿真方法及框架研究[J]. 系統(tǒng)仿真學(xué)報(bào), 2018, 30(12): 4536-4545.

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

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

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

        [8]尹航, 楊歡, 崔海斌, 汪棟, 郭唐寶. 基于大數(shù)據(jù)應(yīng)用的虛擬化云平臺(tái)建設(shè)方法研究[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使用指導(dǎo)[EB]. 中國(guó)移動(dòng)通信有限公司, June 11, 2018.

        免费在线视频一区| 国产精品 无码专区| 日韩视频中文字幕精品偷拍| 欧美人与物videos另类xxxxx| 亚洲中文字幕日产喷水| 99久久婷婷亚洲综合国产| 国产色欲av一区二区三区| 最近日本中文字幕免费完整| 日韩激情网| 极品少妇人妻一区二区三区 | 成人动漫久久| 国产一区二区免费在线观看视频| 日本一区二区三区高清在线视频| 特黄特色的大片观看免费视频 | 国内自拍视频一区二区三区| 色诱视频在线观看| y111111少妇影院无码| 中文字幕无码免费久久| 护士人妻hd中文字幕| 无码字幕av一区二区三区| 免费人成黄页在线观看视频国产 | 日韩精品免费av一区二区三区| 又黄又爽又无遮挡免费的网站| 小12箩利洗澡无码视频网站| 国产亚洲高清在线精品不卡| 日韩av天堂一区二区| 亚洲成在人线在线播放无码| 国产亚洲精品自在久久蜜tv | 国产视频毛片| 久草视频在线视频手机在线观看| 少妇精品亚洲一区二区成人| 久久久久久伊人高潮影院| 99久久精品国产自在首页| 成人国产一区二区三区av| 免费无码一区二区三区a片百度| 国产精品爽爽va在线观看无码| 夫妻一起自拍内射小视频 | 日本一区二区啪啪视频| 国产精品私密保养| 亚洲av无码一区二区三区在线 | 亚洲精品国产av日韩专区 |