程德昊 何元清 蔡春昊
摘要:2019年可以說是當(dāng)之無愧的5G元年,隨著5G的初露崢嶸,物聯(lián)網(wǎng)和云計(jì)算正走進(jìn)我們生活中的各個(gè)領(lǐng)域,影響著我們工作的各個(gè)方面。物聯(lián)網(wǎng)的興起,離不開云計(jì)算的發(fā)展。通常搭建一個(gè)云平臺(tái)需要具備一定的財(cái)力物力,但是借著這個(gè)“萬物互聯(lián)”時(shí)代的東風(fēng),可以使用阿里云平臺(tái)來進(jìn)行各種各樣的開發(fā)。本文通過使用阿里云物聯(lián)網(wǎng)平臺(tái)和傳感器組成物聯(lián)網(wǎng),記錄該傳感器的各項(xiàng)參數(shù),并在該平臺(tái)實(shí)現(xiàn)了數(shù)據(jù)可視化。
關(guān)鍵詞:阿里云;物聯(lián)網(wǎng);數(shù)據(jù)可視化;MQTT協(xié)議
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)22-0050-02
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
隨著5G的快速發(fā)展,物聯(lián)網(wǎng)與云計(jì)算也在慢慢影響著我們的生活,互聯(lián)網(wǎng)通過信息改變了我們的生活,人和消息進(jìn)行實(shí)時(shí)的碰撞。而物聯(lián)網(wǎng)將會(huì)真正將網(wǎng)絡(luò)連接到現(xiàn)實(shí)。物聯(lián)網(wǎng),實(shí)現(xiàn)了把物用網(wǎng)連接了起來,硬件設(shè)備收集數(shù)據(jù)進(jìn)而在網(wǎng)絡(luò)上流轉(zhuǎn)處理,最終顯示在我們面前。本文通過使用阿里云物聯(lián)網(wǎng)平臺(tái),將XDK上收集的數(shù)據(jù)進(jìn)行處理并使其可視化,并在其平臺(tái)上進(jìn)行顯示。
1 物聯(lián)網(wǎng)
1.1阿里云物聯(lián)網(wǎng)平臺(tái)
在物聯(lián)網(wǎng)架構(gòu)中,物聯(lián)網(wǎng)平臺(tái)屬于中間部分,起著承上啟下的作用。硬件傳感器感知數(shù)據(jù)并將其傳送數(shù)據(jù)到物聯(lián)網(wǎng)平臺(tái)上,同時(shí)可以在平臺(tái)上進(jìn)行編程開發(fā),調(diào)用相應(yīng)的API進(jìn)行編程。所以說物聯(lián)網(wǎng)平臺(tái)在物聯(lián)網(wǎng)體系中屬于類似戰(zhàn)略要塞的作用。本文選擇國內(nèi)常用的阿里云物聯(lián)網(wǎng)平臺(tái)進(jìn)行開發(fā)編程。
阿里云物聯(lián)網(wǎng)平臺(tái)有三點(diǎn)主要功能,分別是:硬件設(shè)備接人以及管理和維護(hù);具備不同網(wǎng)絡(luò)如2/3/4G的接人;具有多種不同協(xié)議的設(shè)備端SDK,如MQTT、CoAP、HTTP/S。在本次開發(fā)中,本文使用MQTT協(xié)議進(jìn)行安全與權(quán)限管理和設(shè)備數(shù)據(jù)計(jì)算與存儲(chǔ)。
阿里云物聯(lián)網(wǎng)平臺(tái)提供的能力可以分為兩大部分,即邊緣端和云端。此外,使用阿里云物聯(lián)網(wǎng)平臺(tái)有以下幾個(gè)優(yōu)勢(shì):
1)在其設(shè)備接入方面上,可接受多種設(shè)備連接,所以范圍廣,可以支持全球設(shè)備、異構(gòu)網(wǎng)絡(luò)設(shè)備和多協(xié)議設(shè)備的接人;
2)阿里云物聯(lián)網(wǎng)平臺(tái)具有性能強(qiáng)的特點(diǎn),可以保持億級(jí)設(shè)備的長連接,并發(fā)量可以達(dá)到百萬級(jí);
3)該平臺(tái)安全性高,可提供多重防防護(hù);
4)平臺(tái)具有極高的穩(wěn)定性,其服務(wù)可用性99.9%,具有單點(diǎn)故障,自動(dòng)遷移的特點(diǎn);
5)平臺(tái)使用方便,具備人性化界面,一站式服務(wù)。L2 MQTT協(xié)議
MQTT(Message Queuing Telemetry Transport.消息隊(duì)列遙測傳輸協(xié)議)是一種基于發(fā)布/訂閱的模式的“輕量級(jí)”的、構(gòu)建在TCP/IP協(xié)議上的通訊協(xié)議。MQTT應(yīng)用廣泛,它有著許多優(yōu)點(diǎn),其中最大的一個(gè)優(yōu)點(diǎn)就是可以在有限的帶寬下通過少量甚至極少的代碼連接遠(yuǎn)程設(shè)備,并且最為重要的是其消息服務(wù)不僅是穩(wěn)定可靠而且是即時(shí)的。也正是因?yàn)槠溟_銷低,相對(duì)不高的帶寬占用以及及時(shí)的通訊協(xié)議,使其在物聯(lián)網(wǎng)、移動(dòng)應(yīng)用和小型設(shè)備等很多領(lǐng)域都有廣泛的應(yīng)用。在我國工業(yè)級(jí)物聯(lián)網(wǎng)中,MQTT已經(jīng)成為首選的云通信協(xié)議。值得一提的是,MQTT是運(yùn)行在TCPfIP協(xié)議上的,并且它提供的是無損和有序的雙向連接。
MQTT具有以下特點(diǎn):
1)它使用的是一種發(fā)布和訂閱消息的模式,它的消息分發(fā)方式是一個(gè)對(duì)多個(gè)的形式,這樣使得與程序的關(guān)聯(lián)性降低,達(dá)到解耦的目的。
2)對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸機(jī)制。
3)關(guān)于發(fā)布消息方面,該協(xié)議有三種消息發(fā)布服務(wù)質(zhì)量。
(1)至少一次,即發(fā)消息次數(shù)>=1,在這一級(jí)別中,消息會(huì)被確保達(dá)到,但是在這過程中消息可能會(huì)重復(fù)發(fā)送。
(2)最多一次,即其發(fā)送消息的次數(shù)<=1,這種級(jí)別的消息發(fā)布完全依賴了底層的TCP/IP網(wǎng)絡(luò),在這一級(jí)別下,發(fā)送的消息可能發(fā)生丟失,也有可能發(fā)生重復(fù)。這種級(jí)別適用于在對(duì)數(shù)據(jù)的丟失不致命的情況。比如使用傳感器測試環(huán)境時(shí)丟失一份數(shù)據(jù)影響并不大,因?yàn)轳R上就會(huì)有下一份數(shù)據(jù)過來。當(dāng)有時(shí)我們主要著眼點(diǎn)在整體時(shí),單個(gè)數(shù)據(jù)影響不大時(shí)我們可以使用這種級(jí)別。
(3)只有一次,即發(fā)送次數(shù)=1,該級(jí)別要確保發(fā)送的消息到達(dá)一次,不能有丟失。這種級(jí)別比較嚴(yán)格,常常在計(jì)費(fèi)系統(tǒng)中使用,如果消息重復(fù)或者丟失,會(huì)造成嚴(yán)重的后果。
4)MQTT協(xié)議是小型傳輸?shù)摹K南Ⅲw由固定報(bào)頭,可變報(bào)頭和有效載荷三部分組成。其中它的頭部是固定的,甚至僅有兩字節(jié),這樣使得它的花銷很小。正是因?yàn)檫@些方法,協(xié)議交換達(dá)到了最小化,最終達(dá)成降低網(wǎng)絡(luò)流量這個(gè)目的。也是這些特性使得它能在物聯(lián)網(wǎng)信息的傳輸中有一席之地。這其中很大的原因是因?yàn)榍度胧皆O(shè)備因?yàn)槠渥陨碓驅(qū)е逻\(yùn)算能力和帶寬相對(duì)來說不是很好,所以使用MQTT來傳輸信息可以說是最好不過的了。
5)MQTT協(xié)議有特殊的機(jī)制,當(dāng)遇到有異常導(dǎo)致中斷時(shí)會(huì)通知雙方。這種特殊機(jī)制即為Last Will和Testament。 Last Will:也被稱為遺言機(jī)制,這種情況用于在同一主題下的其他設(shè)備發(fā)送遺言的設(shè)備已經(jīng)斷開了連接的場景。
Testament:遺囑機(jī)制,功能類似于Last Will。
那么MQTT協(xié)議實(shí)現(xiàn)方式如圖1所示。
MQTT協(xié)議中有三種身份,分別為發(fā)布者,代理(服務(wù)器)和訂閱者??蛻舳擞捎诎l(fā)送和接收消息,同時(shí)扮演著消息的發(fā)布者和訂閱者的角色,在圖1中的消息代理的角色是由服務(wù)器扮演。
1.3 IoT studio
本次開發(fā)中,本文使用IoT studio。IoT studio原來稱為Link Develop,它是阿里云針對(duì)物聯(lián)網(wǎng)場景提供的生產(chǎn)力工具,所以它也算作是阿里云物聯(lián)網(wǎng)平臺(tái)的一部分。它可以運(yùn)用在物聯(lián)網(wǎng)的核心場景,加速物聯(lián)網(wǎng)SaaS構(gòu)建。
IoT studio主要有以下幾個(gè)特點(diǎn):1)簡單,可以完成可視化搭建,可以在操作頁面上拖拽和配置操作,相當(dāng)快速的完成設(shè)備數(shù)據(jù)監(jiān)控相關(guān)的Web頁面,移動(dòng)應(yīng)用和API服務(wù)的開發(fā);2)IoT studio與阿里云物聯(lián)網(wǎng)平臺(tái)無縫打通,設(shè)備相關(guān)的各種參數(shù),比如屬性,服務(wù)和事件之類的數(shù)據(jù)可以直接從物聯(lián)網(wǎng)平臺(tái)設(shè)備接入和管理模塊中直接獲取;3)開發(fā)平臺(tái)上資源豐富,擁有多種組件和API,很多功能用戶不需自己編寫,只用調(diào)用接口,非常的方便,提高了效率。4)使用IoT studio開發(fā)完成后,可以直接托管在云端,支持直接預(yù)覽使用,無須部署即可交付使用。
2 連接阿里云物聯(lián)網(wǎng)平臺(tái)進(jìn)行開發(fā)
在了解阿里云物聯(lián)網(wǎng)平臺(tái),MQTT協(xié)議以及IoT studio之后,就可以使用以上三個(gè)技術(shù)來進(jìn)行實(shí)際操作。本次我們選擇了BOSCH XDK110作為硬件設(shè)備來進(jìn)行實(shí)驗(yàn)。連接的框圖2如下所示。
在阿里云平臺(tái)側(cè)進(jìn)行開發(fā),需要注冊(cè)阿里云賬號(hào),接著進(jìn)入阿里云官方物聯(lián)網(wǎng)平臺(tái)( https://iot.console.aliyun.com/),創(chuàng)建用戶所使用的設(shè)備類型的產(chǎn)品,并添加設(shè)備,添加所需要的物模型,比如:加速度計(jì),陀螺儀溫度、濕度等信息,并使這些信息可視化的顯示在web頁面。
物模型是指設(shè)備在云端的相關(guān)的功能的描述,它包含了設(shè)備的事件,屬性和服務(wù)。在物聯(lián)網(wǎng)平臺(tái)中,通過定義一種物的描述語言來描述模型,我們把其稱為TSL。用戶可以將其理解為一種數(shù)據(jù)包格式的約定,因?yàn)槠鋽?shù)據(jù)的上傳按照物模型進(jìn)行構(gòu)造,平臺(tái)接收的數(shù)據(jù)也會(huì)按照物模型進(jìn)行相應(yīng)的解析。構(gòu)造的數(shù)據(jù)包要符合常用的JSON格式,其中包含有四個(gè)部分,分別是:消息ID,物模型版本(1.0),上報(bào)方式,和參數(shù)。
接下來需要在設(shè)備端進(jìn)行開發(fā),連接到阿里云物聯(lián)網(wǎng)平臺(tái)上。打開開發(fā)工具XDK Workbench進(jìn)行代碼編寫。并在此中設(shè)置相應(yīng)的參數(shù)。主要設(shè)置程序中的連接WiFi的SSID和密碼以及連接服務(wù)器的鏈接地址、端口、配置信息,即可使用MQTT連接。值得注意的一點(diǎn)是,在連接阿里云物聯(lián)網(wǎng)平臺(tái)的過程中,存在一個(gè)鑒權(quán)的過程,其中username和password需要使用規(guī)定的鑒權(quán)方式才能通過MQTT連接阿里云物聯(lián)網(wǎng)平臺(tái),pass-word是通過加密算法hmac-shal得到的一個(gè)哈希值。
此次代碼的總體流程可以總結(jié)為:1)配置參數(shù)設(shè)置;2)使能WiFi,MQTT,傳感器等;3)連接MQTT服務(wù)器;4)訂閱Topic;5)檢測連接,斷線重連;6)獲取傳感器等數(shù)據(jù);7)推送數(shù)據(jù);8)判斷平臺(tái)下發(fā)的閾值信息,如果有進(jìn)行第9步,無則進(jìn)行第五步;9)處理數(shù)據(jù),如果大于閾值,發(fā)送報(bào)警;小于閾值,消除報(bào)警。
代碼編寫完成后,點(diǎn)擊build進(jìn)行編譯。然后將XDK連接電腦,開啟XDK的開關(guān),下載程序燒寫到XDK中,就可以看到平臺(tái)端顯示各傳感器數(shù)據(jù),如圖3所示。
3 物聯(lián)網(wǎng)數(shù)據(jù)可視化
經(jīng)過以上的操作,相關(guān)的硬件設(shè)備已經(jīng)可以通過WiFi傳輸數(shù)據(jù)并顯示在網(wǎng)頁端了,但是并不直觀,對(duì)于相關(guān)人員分析數(shù)據(jù)并不方便。因此需要一個(gè)可視化的頁面來展示接收到的數(shù)據(jù),能夠直觀地顯示數(shù)據(jù)并幫助相關(guān)人員進(jìn)行分析。需要注意的一點(diǎn)是,在IoT studio開發(fā)之前用戶應(yīng)該確保平臺(tái)已經(jīng)接收到數(shù)據(jù)并解析到物模型,這樣來確保數(shù)據(jù)不會(huì)丟失。
在阿里云物聯(lián)網(wǎng)平臺(tái)中,其平臺(tái)本身提供了許多相關(guān)可視化的組件,比如儀表盤,滑條,曲線圖等常用組件。用戶可以非常方便地使用相應(yīng)的組件來調(diào)整組件的各個(gè)位置。自此可視化的Web界面開發(fā)完畢,保存并發(fā)布即可,發(fā)布展示如圖4所示。
4 結(jié)語
在此次開發(fā)中,首先在電腦上編寫程序并將其燒錄至XDK設(shè)備中,然后通過MQTT協(xié)議將設(shè)備所收集的信息傳給阿里云物聯(lián)網(wǎng)平臺(tái),在阿里云物聯(lián)網(wǎng)平臺(tái)中添加所需要的物模型,然后進(jìn)行IoT studio開發(fā),使相關(guān)數(shù)據(jù)可視化地展現(xiàn)出來。利于相關(guān)人員分析和處理數(shù)據(jù)。隨著5G的快速發(fā)展,物聯(lián)網(wǎng)一定也會(huì)借此“東風(fēng)”快速的發(fā)展,而“萬物互聯(lián)”也會(huì)在中國生根發(fā)芽,相信在不久的將來,中國也會(huì)由“世界工廠”轉(zhuǎn)變?yōu)楣I(yè)互聯(lián)網(wǎng)強(qiáng)國。
參考文獻(xiàn):
[1]高柏,朱蘭.從“世界工廠”到工業(yè)互聯(lián)網(wǎng)強(qiáng)國:打造智能制造時(shí)代的競爭優(yōu)勢(shì)[J/OL].改革:1-14[2020-05-14].http://kns.cnki.net/kcms/detail/50. 1012.F.202005 13.085 2.002.html.
[2]陸國君,金勤芳,張慧麗,基于MQTT網(wǎng)關(guān)連接PLC與阿里云物聯(lián)網(wǎng)平臺(tái)的工業(yè)物聯(lián)網(wǎng)系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2019,9(12):58-60,63.
[3]吳俊輝,吳桂初,陳沖,葛世偉,許小鋒.基于MQTT協(xié)議的物聯(lián)網(wǎng)網(wǎng)關(guān)設(shè)計(jì)[J].溫州大學(xué)學(xué)報(bào)(自然科學(xué)版),2019,40(4):54-61.
[4]姚丹,謝雪松,楊建軍,等.基于MQTT協(xié)議的物聯(lián)網(wǎng)通信系統(tǒng)的研究與實(shí)現(xiàn)[J].信息通信,2016(3):33-35.
[5]鄭峰.基于MQTT的云推送平臺(tái)的研究及應(yīng)用[D].杭州:杭州電子科技大學(xué),2016.
【通聯(lián)編輯:梁書】
作者簡介:程德昊(1995-),男,四川成都人,中國民航飛行學(xué)院計(jì)算機(jī)學(xué)院在讀碩士,研究方向?yàn)槊窈较到y(tǒng)建模與仿真;何元清(1967-),男,湖南常德人,中國民用航空飛行學(xué)院計(jì)算機(jī)學(xué)院教授,研究方向?yàn)槊窈叫畔⒎抡?、算法分析與設(shè)計(jì)等。