国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MQTT協(xié)議的跨平臺工業(yè)級物聯(lián)網(wǎng)消息傳輸系統(tǒng)實現(xiàn)與設(shè)計

2020-10-09 11:01:23孫海濱張敬超
軟件 2020年8期
關(guān)鍵詞:跨平臺物聯(lián)網(wǎng)

孫海濱 張敬超

摘 ?要: 隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展和移動終端的普及,人們更加希望能夠隨時隨地方便地獲取信息和服務(wù),這時就涉及到物聯(lián)網(wǎng)硬件設(shè)備,windows客戶端,手機端,web網(wǎng)頁之間不同平臺,不同語言的信息交互。本文結(jié)合MQTT,windows服務(wù),winform程序設(shè)計技術(shù),windows消息隊列,串口通信,React Native等,提出了物聯(lián)網(wǎng)消息傳輸?shù)囊幌盗蟹椒?,實現(xiàn)了在云服務(wù)器資源較小的情況下,用戶可以方便快捷地多平臺訪問和控制物聯(lián)網(wǎng)硬件信息和設(shè)備,節(jié)約云服務(wù)器開支的同時,提高了數(shù)據(jù)訪問效率。

關(guān)鍵詞: MQTT;物聯(lián)網(wǎng);跨平臺;Winform程序

中圖分類號: TP311.1 ? ?文獻標(biāo)識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.08.045

本文著錄格式:孫海濱, 張敬超. 基于MQTT協(xié)議的跨平臺工業(yè)級物聯(lián)網(wǎng)消息傳輸系統(tǒng)實現(xiàn)與設(shè)計[J]. 軟件,2020,41(08):168-171

【Abstract】: With the development of Internet of things technology and the popularization of mobile terminals, people are more willing to obtain information and services conveniently anytime and anywhere. At this time, information interaction between hardware devices of Internet of things, Windows client, mobile terminal and web page on different platforms and in different languages is designed. Based MQTT, Windows services, winform programming technology, Windows message queue, serial communication, the React Native and so on, puts forward the Internet message transmission of a series of methods, realized in the case of a small cloud server resources, the user can more convenient platform to Internet access and control hardware and equipment information, saving cloud server costs at the same time, improve the efficiency of data access.

【Key words】: MQTT; Internet of things; Cross-platform; Winform procedure

0 ?引言

隨著互聯(lián)網(wǎng)和移動手機技術(shù)的迅猛發(fā)展,物聯(lián)網(wǎng)平臺的概率廣泛被提及[1],物聯(lián)網(wǎng)平臺是提供應(yīng)用支撐、數(shù)據(jù)存儲等能力的平臺[2],其物聯(lián)網(wǎng)技術(shù)已經(jīng)應(yīng)用到了各個場景,企業(yè)測量設(shè)備加入無線模塊后,即可遠程控制。但是在設(shè)備測量數(shù)據(jù)進行存儲時,若將大量數(shù)據(jù)存入云服務(wù)器,就會帶來一些問題。第一,當(dāng)設(shè)備較多時,需要的云服務(wù)器的存儲空間比較大,需要前期的投入較大。第二,企業(yè)數(shù)據(jù)都將存入購買的運營商的服務(wù)器,數(shù)據(jù)在傳輸和保存時容易遭到泄露,這就降低了企業(yè)自己的測量數(shù)據(jù)的保密性。所以大多數(shù)企業(yè)要求將數(shù)據(jù)存入到自己的本地數(shù)據(jù)庫,同時要求可以手機,網(wǎng)站等不同方式來訪問數(shù)據(jù)和控制設(shè)備。

面對這些挑戰(zhàn),我們設(shè)計出了一套跨平臺工業(yè)級物聯(lián)網(wǎng)消息傳輸系統(tǒng)[3],企業(yè)員工可以在公司計算機的客戶端上進行設(shè)備控制和數(shù)據(jù)查詢,又可以通過外網(wǎng)使用手機或者網(wǎng)頁訪問保存在企業(yè)本地的數(shù)據(jù),并控制設(shè)備,在保證了數(shù)據(jù)的安全性的同時,數(shù)據(jù)在傳輸過程中更加及時、高效、省流量、省資源。

1 ?相關(guān)技術(shù)研究

1.1 ?MQTT介紹

MQTT是由IBM發(fā)布的一種輕量級跨平臺消息傳輸協(xié)議[4],MQTT 可以被解釋為一種低開銷,低帶寬占用的即時通訊協(xié)議,利用極少的代碼和帶寬的為連接遠程設(shè)備提供實時可靠的消息服務(wù),它適用于硬件性能低下的遠程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的環(huán)境下,因此 MQTT 協(xié)議在物聯(lián)網(wǎng),小型設(shè)備應(yīng)用,移動應(yīng)用等方面有較廣泛的應(yīng)用。

MQTT協(xié)議運行在TCP/IP或其他網(wǎng)絡(luò)協(xié)議,提供有序、無損、雙向連接[5]。其特點包括:

使用的發(fā)布/訂閱消息模式。提供了一對多消息分發(fā)機制,以實現(xiàn)與應(yīng)用程序的解耦。對負載內(nèi)容屏蔽的消息傳輸機制。

本文利用MQTT協(xié)議實現(xiàn)Web端與服務(wù)端進行交互,實現(xiàn)移動端和網(wǎng)頁端對物聯(lián)網(wǎng)設(shè)備的控制。

1.2 ?串口通信

串口通信是指以位(bit)為單位發(fā)送方和接收字節(jié),且遵守時序的一種通信方式??梢詫⒔邮仗幚砥靼l(fā)送的并行字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送,反之也能將串行數(shù)據(jù)流發(fā)送給處理器。以傳輸方向進行區(qū)分通常分為三種模式:單工、半雙工和全工[6]。

本文利用無線模塊轉(zhuǎn)接串口,實現(xiàn)物聯(lián)網(wǎng)設(shè)備與服務(wù)端的收發(fā)消息。

1.3 ?Windows程序介紹

Winform是基于微軟公司開發(fā)的C#語言[7],利用.Net平臺開發(fā)應(yīng)用程序,具有Windows窗口開發(fā)的特點[8]。

本文利用windows程序開發(fā)服務(wù)端與企業(yè)客戶端,服務(wù)端用于與物聯(lián)網(wǎng)設(shè)備收發(fā)消息,客戶端用于數(shù)據(jù)的解析以及數(shù)據(jù)庫操作,且面向客戶端用戶進行數(shù)據(jù)展示以及操作。

1.4 ?React Native介紹

React Native(簡稱RN)是Facebook在2015年4月發(fā)布的一款移動應(yīng)用開發(fā)框架,與FaceBook早先發(fā)布的UI框架React一樣具有開源的特性。RN既能擁有原生native的交互體驗,又能夠保持web的高效與靈活,且能支持IOS和Android兩大移動端平臺等特點[9]。

RN的優(yōu)勢在于具有較強擴展性,且可以適用Native的原生動畫,避免了WebView的交互和性能問題。

本文利用RN構(gòu)建web客戶端,為用戶移動端和瀏覽器訪問設(shè)備及其數(shù)據(jù)提供服務(wù)。

2 ?系統(tǒng)架構(gòu)

整個跨平臺工業(yè)級物聯(lián)網(wǎng)消息傳輸系統(tǒng)提供給用戶對物聯(lián)網(wǎng)設(shè)備信息的查詢和設(shè)置,幫助用戶在企業(yè)局域網(wǎng)和外網(wǎng)上遠程控制設(shè)備,用戶通過手機客戶端,電腦客戶端和網(wǎng)址查詢儲存在企業(yè)本地服務(wù)器的測量設(shè)備,整個系統(tǒng)架構(gòu)如圖1所示。

系統(tǒng)分為四部分,第一部分,物聯(lián)網(wǎng)硬件設(shè)備,主要負責(zé)對企業(yè)需要數(shù)據(jù)統(tǒng)計,對要測量的物體進行測量和分析,將數(shù)據(jù)通過無線通信模塊進行傳輸;第二部分,企業(yè)服務(wù)器終端,其中包括windows服務(wù)程序、Microsoft Message Queue服務(wù)器和監(jiān)控物聯(lián)網(wǎng)設(shè)備的客戶端。windows服務(wù)程序其功能是接受第一部分物聯(lián)網(wǎng)硬件設(shè)備發(fā)來的數(shù)據(jù)信息,并解析,將數(shù)據(jù)保存的企業(yè)服務(wù)器的數(shù)據(jù)庫中[7]。Microsoft Message Queue服務(wù)器用于將服務(wù)信息和監(jiān)控物聯(lián)網(wǎng)設(shè)備的客戶端的信息進行通信。第三部分,消息代理服務(wù)器(Message Broker)/Web Server,消息代理服務(wù)器主要負責(zé)實現(xiàn)MQTT協(xié)議的各項功能,提供發(fā)布/訂閱管理功能、連接管理功能等,為客戶端提供發(fā)布/取消發(fā)布、訂閱/取消訂閱等服務(wù)。通過消息代理各模塊協(xié)調(diào)工作,形成了完整的發(fā)布/訂閱消息推送系統(tǒng)。Web Server主要負責(zé)手機客戶端的用戶驗證登錄以及Web網(wǎng)頁對信息管理的實現(xiàn)。第四部分移動終端和web網(wǎng)頁層。主要提供給用戶展示設(shè)備狀態(tài)和信息的平臺。

MQTT消息處理架構(gòu),如圖2所示。

用戶Tom(移動端/Web網(wǎng)頁端)訪問企業(yè)服務(wù)器,必須通過App的API服務(wù)器的登錄驗證,然后會獲取到企業(yè)服務(wù)器訂閱的factory topic信息。企業(yè)的服務(wù)器啟動時會自動訂閱factory topic。Tom只需通過MQTT代理服務(wù)器將控制信息publish到factory topic上,企業(yè)服務(wù)器就會接到Tom的控制信息。在Tom的控制信息里包含著Tom所訂閱的Tom topic信息,企業(yè)服務(wù)器會將此信息保存并將查詢結(jié)果publish到Tom的 topic,Tom的移動終端就會獲得信息,以此完成移動端的遠程通信[10]。

這里用戶和企業(yè)服務(wù)器是多對多的關(guān)系,即一個用戶可以向多個企業(yè)服務(wù)器查詢數(shù)據(jù),企業(yè)服務(wù)器也可以同時服務(wù)多個用戶,向用戶返回數(shù)據(jù)。且在這樣的情況下,對于云服務(wù)器(MQTT代理服務(wù)器)的負載十分小(因為只是轉(zhuǎn)發(fā)數(shù)據(jù),并沒有將數(shù)據(jù)進行處理),所需要的數(shù)據(jù)存儲空間小,大部分的計算負載和所有的測量數(shù)據(jù)存儲都分載在不同企業(yè)的服務(wù)器上,提高了通信效率,保證了數(shù)據(jù)的安全性,降低了對于云服務(wù)器的硬件成本。

3 ?系統(tǒng)流程

3.1 ?企業(yè)服務(wù)器終端實現(xiàn)

企業(yè)服務(wù)器終端主要用于接收、發(fā)送、解析和計算物聯(lián)網(wǎng)設(shè)備的控制、數(shù)據(jù)指令,以此來監(jiān)控物聯(lián)網(wǎng)設(shè)備和儲存設(shè)備測量的信息[11]。主要分為四個模塊,模塊一,其功能利用設(shè)備無線模塊和計算機的串口接收和發(fā)送設(shè)備指令;模塊二,連接MQTT,訂閱企業(yè)的topic,對移動終端設(shè)備的遠程控制和查詢提供接口;模塊三,利用消息隊列(MSMQ)實現(xiàn)服務(wù)和windows客戶端程序進程之間的通信,通信內(nèi)容是從物聯(lián)網(wǎng)設(shè)備接收到的指令代碼;模塊四,客戶端對從服務(wù)器中接收到的物聯(lián)網(wǎng)設(shè)備的指令代碼進行解析顯示,并進行控制和歷史信息的查詢工作。

主要流程分為三部分:

(1)當(dāng)服務(wù)器啟動時,Windows服務(wù)程序?qū)⒆詣訂?,檢查設(shè)備串口設(shè)備、Internet網(wǎng)絡(luò)連接情況和數(shù)據(jù)庫連接情況。并開啟消息隊列服務(wù),等待企業(yè)電腦端的客戶端指令。當(dāng)檢查網(wǎng)絡(luò)連接正常的時候,服務(wù)程序會自動連接MQTT代理服務(wù)器,并訂閱以自己編號為id的話題(topic)。

(2)用戶打開企業(yè)電腦端的客戶端對設(shè)備進行操作時,服務(wù)程序會通過MSMQ消息隊列接受客戶端的指令[12],解析組裝成物聯(lián)網(wǎng)設(shè)備能夠識別的十六進制指令后,通過串口發(fā)送給設(shè)備。設(shè)備接收指令后進行測量或者其他設(shè)置參數(shù)的操作,將返回的信息傳回服務(wù),服務(wù)通過串口接收十六進制指令根據(jù)通信協(xié)議進行解析,將數(shù)據(jù)保存到數(shù)據(jù)庫中用于客戶端和手機APP的查詢或者將指令直接通過MSMQ轉(zhuǎn)發(fā)給企業(yè)電腦端,用于實時顯示設(shè)備情況[8]。

(3)服務(wù)器訂閱自己的MQTT topic話題,向Internet開放控制和查詢設(shè)備的接口,用于解析手機和Web網(wǎng)頁發(fā)來的用戶控制指令。當(dāng)服務(wù)接到移動終端用戶通過MQTT發(fā)送給自己的指令時,服務(wù)將自動開啟線程,對指令進行解析。分析出移動端的用戶topic和指令類型,按照指令的類型進行操作,并將返回結(jié)果組裝成JSON字符串,通過MQTT發(fā)布(publish)到移動終端用戶的topic中。

在通訊過程中,需要三種通訊協(xié)議。

協(xié)議一:設(shè)備和服務(wù)之間的通訊協(xié)議。

協(xié)議二:服務(wù)和windows客戶端之間利用消息隊列傳輸?shù)耐ㄓ崊f(xié)議。

協(xié)議三:服務(wù)和移動終端之間利用MQTT傳輸?shù)耐ㄓ崊f(xié)議。

3.2 ?消息代理服務(wù)器的實現(xiàn)

實現(xiàn)MQTT的代理服務(wù)器的工作,管理訂閱賬號,消息轉(zhuǎn)發(fā)等。同時提供手機和網(wǎng)站查詢和儲存用戶,企業(yè)的信息。通過網(wǎng)站來設(shè)置用戶的管理權(quán)限,實現(xiàn)一個用戶對應(yīng)管理多個企業(yè)服務(wù)的關(guān)系。在手機端,用戶可以根據(jù)自己的id查詢到企業(yè)的服務(wù)訂閱的MQTT topic,以此來通過手機進行對企業(yè)設(shè)備的遠程控制。

3.3 ?手機端實現(xiàn)

手機客戶端主要提供給用戶登錄的驗證及自動登錄的實現(xiàn),對物聯(lián)網(wǎng)設(shè)備的遠程監(jiān)控和歷史數(shù)據(jù)的查詢。

主要分為三個模塊:

(1)登錄模塊,用戶登錄時輸入正確的用戶名和密碼,當(dāng)服務(wù)器驗證通過后,會將該用戶的token發(fā)送給手機客戶端??蛻舳送ㄟ^React Native的AsyncStorage將token保存在手機中。當(dāng)用戶下次開啟軟件時,將直接用token驗證用戶信息,不需要用戶重新輸入用戶名和密碼。

(2)MQTT通信和指令解析,登錄成功后,手機連接MQTT代理服務(wù)器,并訂閱以用戶id為topic的話題。同時獲取服務(wù)器保存的該用戶所管理的設(shè)備信息。當(dāng)MQTT接收到發(fā)往這個topic的信息的時候,進行解析,得出數(shù)據(jù)信息在手機端進行展示。同時用戶發(fā)送控制設(shè)備信息時,將用戶、控制、設(shè)備、企業(yè)服務(wù)的話題(topic)信息和發(fā)送的數(shù)據(jù)信息組裝成JSON,publish給企業(yè)windows服務(wù)器訂閱的話題(topic),并設(shè)置callback函數(shù),等企業(yè)服務(wù)器的待響應(yīng),響應(yīng)成功后會將數(shù)據(jù)信息呈現(xiàn)到客戶端中。

(3)遠程控制和歷史查詢模塊,用戶選擇設(shè)備發(fā)送控制指令,手機App將用戶信息和指令信息封裝成JSON,通過MQTT發(fā)布到企業(yè)服務(wù)訂閱的topic。企業(yè)服務(wù)獲取指令解析出用戶信息,用戶信息中包含著手機訂閱的topic。服務(wù)執(zhí)行完對設(shè)備的操作后將結(jié)果發(fā)布到手機訂閱的topic。

4 ?系統(tǒng)測試

本研究應(yīng)用某物聯(lián)網(wǎng)系統(tǒng)取得良好成果,其測試物聯(lián)網(wǎng)設(shè)備為激光傳感器、步進電機等組成的測量設(shè)備,主要應(yīng)用于立筒倉內(nèi)部物料體積和重量測量[13],以及倉內(nèi)溫濕度監(jiān)控。通過本系統(tǒng)客戶端和手機端進行控制物聯(lián)網(wǎng)設(shè)備工作,收發(fā)設(shè)備的工作狀態(tài),接收到設(shè)備采集的數(shù)據(jù)。測試結(jié)果為該系統(tǒng)傳輸效果可靠穩(wěn)定,能適應(yīng)復(fù)雜的傳輸情況,無數(shù)據(jù)丟失的現(xiàn)象。

5 ?結(jié)論

本文以MQTT協(xié)議為基礎(chǔ),Windows程序開發(fā)為核心,遵照消息傳遞的過程,開發(fā)了一套物聯(lián)網(wǎng)消息傳輸系統(tǒng),適用復(fù)雜條件下消息的收發(fā),解決不同平臺之間消息協(xié)議的解析,利用多個協(xié)議之間的通信,實現(xiàn)了不同平臺間對設(shè)備的控制以及數(shù)據(jù)的接收,可利用在多種物聯(lián)網(wǎng)系統(tǒng)中,降低了數(shù)據(jù)丟失的概率,極大的提高了消息傳遞的穩(wěn)定性。

參考文獻

[1] 李燕. 計算機監(jiān)控系統(tǒng)中物聯(lián)網(wǎng)技術(shù)應(yīng)用探究[J]. 軟件, 2018, 39(10): 220-223.

[2] 嚴新巧. 基于移動開發(fā)現(xiàn)狀探討React Native[J]. 電腦知識與技術(shù), 2016, 12(32): 76-77+82.

[3] 王歡. 分布式移動性管理協(xié)議研究[J]. 軟件, 2015, 36(2): 80-85.

[4] Haripriya A. P.,Kulothungan K.. Secure-MQTT: an efficient fuzzy logic-based approach to detect DoS attack in MQTT protocol for internet of things[J]. EURASIP Journal on Wireless Communications and Networking, 2019, 2019(1).

[5] 耿云飛. 融合通信消息引擎的設(shè)計與實現(xiàn)[D]. 中國科學(xué)院研究生院(沈陽計算技術(shù)研究所), 2016.

[6] 張幼麟. 51單片機串口應(yīng)用[J]. 內(nèi)江科技, 2019, 40(10): 32+12.

[7] 孫毓蔓, 左小清, 蘇文豪. 基于ArcGIS Engine與C#.net的地塊合并功能的實現(xiàn)[J]. 軟件, 2018, 39(10): 150-155.

[8] 代鴻元. 基于WinForm的脈沖安防報警系統(tǒng)設(shè)計與實現(xiàn)[D]. 天津大學(xué), 2017.

[9] 金昱東. 一種基于ReactNative的代碼壓縮與動態(tài)加載的實現(xiàn)方法[J]. 軟件, 2016, 37(02): 81-84.

[10] 明鳴. 以Windows服務(wù)為基礎(chǔ)的網(wǎng)口與串口通信設(shè)計淺析[J]. 中國新通信, 2018, 20(03):66.

[11] 陳星, 霍珊珊, 劉健. 物聯(lián)網(wǎng)信息系統(tǒng)安全測評服務(wù)模式的研究[J]. 軟件, 2016, 37(3): 09-15.

[12] 莫洪艷. 在.NET平臺利用MSMQ實現(xiàn)不同應(yīng)用間的異步通訊[J]. 天津冶金, 2017(06): 46-48.

[13] 楊棟, 劉錚. 淺談激光測距技術(shù)對料堆盤庫的應(yīng)用[J]. 衡器, 2016, 45(12): 15-18.

猜你喜歡
跨平臺物聯(lián)網(wǎng)
跨層級網(wǎng)絡(luò)、跨架構(gòu)、跨平臺的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
跨平臺APEX接口組件的設(shè)計與實現(xiàn)
基于物聯(lián)網(wǎng)的煤礦智能倉儲與物流運輸管理系統(tǒng)設(shè)計與應(yīng)用
基于高職院校物聯(lián)網(wǎng)技術(shù)應(yīng)用人才培養(yǎng)的思考分析
基于LABVIEW的溫室管理系統(tǒng)的研究與設(shè)計
論智能油田的發(fā)展趨勢及必要性
中國或成“物聯(lián)網(wǎng)”領(lǐng)軍者
基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
望城县| 岑溪市| 砚山县| 娱乐| 澳门| 建始县| 廉江市| 灵寿县| 临澧县| 阿勒泰市| 平顶山市| 金湖县| 安仁县| 年辖:市辖区| 临海市| 全南县| 淳安县| 扎鲁特旗| 咸宁市| 原阳县| 容城县| 麟游县| 长顺县| 余江县| 东至县| 巴林左旗| 库尔勒市| 吐鲁番市| 萨迦县| 雷波县| 珲春市| 运城市| 淮阳县| 区。| 嵊泗县| 富平县| 深泽县| 樟树市| 阿城市| 高阳县| 客服|