• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于MQTT 協(xié)議的遠(yuǎn)程管理智能化Android系統(tǒng)設(shè)計與實現(xiàn)

      2020-08-11 03:24:04王彥冰
      科學(xué)技術(shù)創(chuàng)新 2020年22期
      關(guān)鍵詞:監(jiān)控點消息客戶端

      趙 政 王彥冰

      (中電科鵬躍電子科技有限公司,山西 太原030000)

      1 概述

      目前,移動互聯(lián)網(wǎng)正逐漸滲透到人們生活、工作的各個領(lǐng)域,各類豐富多彩的移動互聯(lián)網(wǎng)應(yīng)用迅猛發(fā)展,正在深刻改變信息時代的社會生活,近幾年,更是實現(xiàn)了3G 經(jīng)4G 到5G 的跨越式發(fā)展。

      隨著它的發(fā)展,物聯(lián)網(wǎng)技術(shù)的發(fā)展也日趨完整、成熟,通過信息傳感器將各種設(shè)備與互聯(lián)網(wǎng)連接在一起而形成的巨大網(wǎng)絡(luò),是需要基礎(chǔ)網(wǎng)絡(luò)設(shè)施提供更多的支持,所以移動互聯(lián)網(wǎng)對物聯(lián)網(wǎng)的發(fā)展起到了重要的促進(jìn)作用。

      物聯(lián)網(wǎng)的應(yīng)用領(lǐng)域涉及到方方面面,在工業(yè)、農(nóng)業(yè)、環(huán)境、交通、物流、安保等基礎(chǔ)設(shè)施領(lǐng)域的應(yīng)用,有效的推動了這些方面的智能化發(fā)展,使得有限的資源更加合理的使用分配,從而提高了行業(yè)效率、效益。所以,再結(jié)合移動互聯(lián)網(wǎng)、云計算、人工智能等技術(shù),可在基礎(chǔ)設(shè)施領(lǐng)域發(fā)展更多遠(yuǎn)程智能化控制管理的應(yīng)用。

      物聯(lián)網(wǎng)的核心是物與物、人與物之間的信息交互,因此,遠(yuǎn)程智能化控制管理應(yīng)用的重要核心,是移動互聯(lián)網(wǎng)的綜合消息推送。

      其中,由于MQTT 協(xié)議的特點,基于MQTT 協(xié)議的即時消息業(yè)務(wù)解決方案,更適合移動互聯(lián)網(wǎng),更符合可靠消息傳輸方式的設(shè)計和實現(xiàn)。

      2 相關(guān)概念介紹

      2.1 MQTT 協(xié)議

      MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是ISO 標(biāo)準(zhǔn)下基于發(fā)布/訂閱范式的消息協(xié)議。該協(xié)議構(gòu)建于TCP/IP 協(xié)議族上,是為硬件性能低下的遠(yuǎn)程設(shè)備以及網(wǎng)絡(luò)狀況糟糕的情況下而設(shè)計的發(fā)布/訂閱型消息協(xié)議。該協(xié)議支持所有平臺,幾乎可以把所有聯(lián)網(wǎng)物品和外部連接起來,被用來當(dāng)做傳感器和致動器的通信協(xié)議。

      MQTT 協(xié)議是為大量計算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,它具有以下主要的幾項特性:

      (1)使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;[3]

      (2)對負(fù)載內(nèi)容屏蔽的消息傳輸;

      (3)使用TCP/IP 提供網(wǎng)絡(luò)連接;

      (4)有三種消息發(fā)布服務(wù)質(zhì)量,“至多一次”、“至少一次”、“只有一次”,分別對應(yīng)于有效值“0”、“1”、“2”,可供不同應(yīng)用、不同情境下選擇;[4]

      (5)小型傳輸,開銷很小,協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;

      (6)使用Last Will 和Testament 特性通知有關(guān)各方客戶端異常中斷的機(jī)制。

      基于MQTT 的這些特點,它的適用范圍就非常廣泛,在很多情況下,包括受限的環(huán)境中,如機(jī)器與機(jī)器(M2M)通信和物聯(lián)網(wǎng)(IoT)。

      隨著移動互聯(lián)網(wǎng)的發(fā)展,MQTT 由于開放源碼、耗電量小等特點,會在移動消息推送領(lǐng)域有更多的貢獻(xiàn),作為Android 手機(jī)客戶端與服務(wù)器端推送消息的協(xié)議而被廣泛使用;在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信,信息的收集,MQTT 都可作為考慮的方案之一。

      2.2 Service 服務(wù)

      服務(wù)是Android 中實現(xiàn)程序后臺運(yùn)行的解決方案,它非常適合執(zhí)行那些不需要和用戶交互且需長期運(yùn)行的任務(wù)。服務(wù)的運(yùn)行不依賴與任何用戶界面,即時程序被切換到后臺,或者用戶打開了另一個應(yīng)用程序,服務(wù)仍能保持獨立運(yùn)行。不過,服務(wù)并不是運(yùn)行在一個獨立的進(jìn)程當(dāng)中,而是依賴于創(chuàng)建服務(wù)時所在的應(yīng)用程序進(jìn)程。

      當(dāng)某個應(yīng)用程序被殺掉時,所有依賴該進(jìn)程的服務(wù)也會停止運(yùn)行。

      Service 的其中一種形式是本地服務(wù),該服務(wù)依附在主進(jìn)程上而不是獨立的進(jìn)程,這樣在一定程度上節(jié)約了資源,另外本地服務(wù)是在同一進(jìn)程因此不需要IPC,也不需要AIDL。相應(yīng)bindService 會方便很多,當(dāng)主進(jìn)程被Kill 后,服務(wù)便會終止。一般使用在不需要常駐的服務(wù),故服務(wù)和啟動服務(wù)的activity 在同一個進(jìn)程中。[2]

      2.3 定時任務(wù)

      在Android 開發(fā)中,有些任務(wù)不是當(dāng)時就執(zhí)行,而是過了一個規(guī)定時間再執(zhí)行,那么就需要使用定時器。Java 提供了計時器工具類,即Timer 和TimerTask。Timer 是用來在主線程之外的一個后臺線程執(zhí)行指定計劃任務(wù),可執(zhí)行一次或多次,TimerTask是一個實現(xiàn)了Runnable 接口的抽象類,其子類代表一個可以被Timer 執(zhí)行的任務(wù)。[1]

      3 系統(tǒng)框架設(shè)計

      遠(yuǎn)程管理智能化系統(tǒng)是一套物聯(lián)網(wǎng)系統(tǒng),總體主要包括了MQTT 公共云服務(wù)、監(jiān)控點群部署與用戶終端。

      3.1 MQTT 公共云服務(wù):是指物聯(lián)網(wǎng)云平臺,即為一個代理,轉(zhuǎn)發(fā)各方發(fā)來的數(shù)據(jù)。

      3.2 監(jiān)控點群部署:主要包括物聯(lián)網(wǎng)控制器、傳感器、執(zhí)行機(jī)構(gòu)等,負(fù)責(zé)采集、上報環(huán)境中各類數(shù)據(jù),同時控制執(zhí)行機(jī)構(gòu)的執(zhí)行。

      3.3 用戶終端:主要功能有查看實時監(jiān)測數(shù)據(jù)、發(fā)送控制指令使物聯(lián)網(wǎng)控制器可執(zhí)行。

      系統(tǒng)的主要結(jié)構(gòu)如下圖1 所示:

      圖1 系統(tǒng)組織架構(gòu)

      本系統(tǒng)的主要結(jié)構(gòu)與功能,通過MQTT 協(xié)議的實現(xiàn)方式即可滿足。

      實現(xiàn)MQTT 協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過程中,MQTT 協(xié)議中有3 種身份:發(fā)布者、代理(服務(wù)器)、訂閱者。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時是訂閱者。

      MQTT 傳輸?shù)南⒎譃橹黝}和負(fù)載兩部分:主題為消息類型,負(fù)載為消息內(nèi)容,即具體使用的內(nèi)容。訂閱者訂閱消息后,可收到該主題的負(fù)載。

      在本系統(tǒng)中,代理(服務(wù)器)是MQTT 公共云服務(wù);發(fā)布者和訂閱者則根據(jù)功能不同而不同。在監(jiān)控點上報數(shù)據(jù)、用戶查看數(shù)據(jù)功能中,監(jiān)控點是發(fā)布者,用戶終端是訂閱者;在用戶根據(jù)具體情況控制監(jiān)控點的執(zhí)行機(jī)構(gòu)功能中,用戶終端是發(fā)布者,監(jiān)控點是訂閱者。

      因此,監(jiān)控點與用戶終端均為MQTT 客戶端,而用戶終端APP 以Android 版本為主。在MQTT 客戶端中,核心業(yè)務(wù)即為訂閱- 發(fā)布消息,其流程圖如下圖2 所示:

      圖2 訂閱- 發(fā)布消息流程圖

      4 系統(tǒng)客戶端設(shè)計實現(xiàn)

      使用手機(jī)APP 是用戶操作本系統(tǒng)最重要的方式,提升了用戶操作的便利性和友好性,且本系統(tǒng)Android 端的實現(xiàn)為后續(xù)遠(yuǎn)程控制方面的工業(yè)APP 開發(fā)提供范例,有重大意義。MQTT 在Android 端的具體實現(xiàn)方法如下:

      ①添加依賴:

      首先,在項目根目錄下的build.gradle 文件中添加如下代碼:

      ②添加權(quán)限:

      在AndroidManifest.xml 文件中添加使用權(quán)限,聲明MQTT服務(wù)MqttService,代碼如下:

      MQTTService 類的功能中包括 MQTT 安卓客戶端MqttAndroidClient () 的 初 始 化 ,MQTT 連 接 參 數(shù)MqttConnectOptions () 的 設(shè) 置,MQTT 連 接 服 務(wù) 器MqttAndroidClient.connect()、訂閱MqttAndroidClient. subscribe()[5]并監(jiān)聽接受消息MqttCallback(),也包括一些公共方法,如消息發(fā)布方法publish(),Service 父類的綁定服務(wù)方法onBind()、解綁服務(wù)方法onUnbind()、銷毀方法onDestroy()。

      其次,為了代碼模塊的低耦合性,當(dāng)獲取從服務(wù)器推送過來的消息時,使用回調(diào)接口IGetMessageCallBack 去更新UI。

      最后,為了實現(xiàn)通過回調(diào)接口去傳遞從服務(wù)器獲取到的消息,創(chuàng)建MyServiceConnection 類,來實現(xiàn)ServiceConnection 接口,并通過綁定方法onBind()來在Service 和Activity 之間傳遞數(shù)據(jù),更新UI。

      根據(jù)對本系統(tǒng)Android 端的功能定義,進(jìn)行了如下設(shè)計。

      4.1 查看數(shù)據(jù)功能設(shè)計

      本系統(tǒng)Android 端基于MQTT 協(xié)議接受服務(wù)器推送的消息,并將消息顯示在界面以供用戶查看。具體實現(xiàn)方法如下:

      ①為了根據(jù)接受到的消息而定時更新UI,采用定時器類Timer 和TimerTask:在MQTTService 類中,MQTT 監(jiān)聽接受消息的變量MqttCallback()是接口,繼承了接受服務(wù)器推送消息的方法messageArrived(),在此方法中添加Timer 和TimerTask。將消息的發(fā)送放在TimerTask 的Runnable 接口的后臺線程中,Timer設(shè)置執(zhí)行任務(wù)的頻率為1 次/30s,且只有在退出本系統(tǒng)Android端時才終止定時器線程,否則會一直定時接受消息并更新;若在定時器任務(wù)中未定時接受到消息,則更新界面以提示用戶“(控制器xxx)下線”。這樣既可避免因主線程運(yùn)行緩慢而導(dǎo)致用戶體驗差,也可實現(xiàn)實時的效果。[1]

      ②定時更新消息顯示:主線程所在的Activity 繼承了接口IGetMessageCallBack,根據(jù)本系統(tǒng)功能設(shè)計,具體實現(xiàn)了接口中的方法setMessage(),即接受到的消息以UI 界面定義的形式顯示出來供用戶方便查看。

      ③啟動MQTT 服務(wù):在主線程所在的Activity 中,調(diào)用bindService()來啟動MQTT,即可開始定時接受消息數(shù)據(jù)。

      4.2 發(fā)送指令功能設(shè)計

      用戶根據(jù)顯示的消息數(shù)據(jù),可操作本APP 來控制監(jiān)控點的設(shè)備狀態(tài)。具體實現(xiàn)方法如下:

      ①在用戶可操作界面的Activity 中,監(jiān)聽每個操作按鈕、選擇框、圖標(biāo)等的動作變化狀態(tài),在監(jiān)聽過程中調(diào)用消息發(fā)布方法publish()。

      ②在消息發(fā)布方法publish()中,使用MQTT 安卓客戶端的發(fā)布方法MqttAndroidClient.publish(),通過對此方法傳遞特定參數(shù),如消息主題、消息負(fù)載的有效字節(jié)數(shù)組、消息發(fā)布服務(wù)質(zhì)量、服務(wù)器是否保留此消息,發(fā)送消息請求至服務(wù)器。[5]

      5 結(jié)論

      本文主要描述了遠(yuǎn)程管理智能化系統(tǒng)Android 端的查看數(shù)據(jù)、發(fā)送指令等功能的實現(xiàn)。系統(tǒng)利用了具有低功耗和移動互聯(lián)網(wǎng)帶寬利用率高等特點的MQTT 協(xié)議來進(jìn)行消息數(shù)據(jù)在客戶端與服務(wù)端之間的傳輸,通過實時接受消息數(shù)據(jù),用戶可隨時操作APP 發(fā)送指令來遠(yuǎn)程控制監(jiān)控點各項設(shè)備。系統(tǒng)實現(xiàn)了消息數(shù)據(jù)與遠(yuǎn)程控制指令的實時傳輸,有效提高了用戶操作的便利性與友好性,為“數(shù)據(jù)遠(yuǎn)傳+實時控制”甚至更多功能模式的工業(yè)控制系統(tǒng),包括APP 的開發(fā),提供了范例基礎(chǔ),意義重大,可推廣運(yùn)用于工業(yè)、農(nóng)業(yè)、環(huán)境等遠(yuǎn)程控制方面的應(yīng)用。

      猜你喜歡
      監(jiān)控點消息客戶端
      石化工業(yè)區(qū)環(huán)境空氣污染監(jiān)控點選取分析
      一張圖看5G消息
      高速公路室外監(jiān)控點一體化智能箱設(shè)計淺析
      縣級臺在突發(fā)事件報道中如何應(yīng)用手機(jī)客戶端
      傳媒評論(2018年4期)2018-06-27 08:20:24
      孵化垂直頻道:新聞客戶端新策略
      傳媒評論(2018年4期)2018-06-27 08:20:16
      基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
      電子測試(2018年10期)2018-06-26 05:53:34
      消息
      消息
      消息
      客戶端空間數(shù)據(jù)緩存策略
      衡阳市| 科技| 车致| 漠河县| 库车县| 茂名市| 祁连县| 丹阳市| 大安市| 遂溪县| 会宁县| 河池市| 开封市| 瓦房店市| 宣恩县| 炉霍县| 柞水县| 阳西县| 衢州市| 额敏县| 水富县| 将乐县| 东源县| 修文县| 蒙城县| 华安县| 大余县| 温州市| 大新县| 新乡县| 昂仁县| 荔浦县| 于都县| 望谟县| 铁岭市| 钟山县| 松阳县| 沅陵县| 神农架林区| 临朐县| 永福县|