江武志 羅玉文
摘 要:基于LoRa的環(huán)境檢測分析系統(tǒng)由傳感器采集環(huán)境數(shù)據(jù),通過LoRa通信模塊傳輸?shù)絃oRa網(wǎng)關(guān),后臺服務(wù)程序通過訂閱MQTT代理從LoRa網(wǎng)關(guān)獲取傳感器采集的環(huán)境數(shù)據(jù),后臺服務(wù)程序?qū)Σ杉臄?shù)據(jù)進(jìn)行存儲、統(tǒng)計、分析;后臺服務(wù)程序提供統(tǒng)一的RESTful數(shù)據(jù)接口供應(yīng)用層調(diào)用;Web前端頁面展示實時數(shù)據(jù)和統(tǒng)計分析數(shù)據(jù)查詢。實現(xiàn)對校園環(huán)境的實時檢測和數(shù)據(jù)統(tǒng)計分析。
關(guān)鍵詞:LoRa;傳感器;環(huán)境檢測;統(tǒng)計分析
中圖分類號:TP23 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2018)04-00-04
0 引 言
隨著物聯(lián)網(wǎng)時代的到來,校園信息化建設(shè)也進(jìn)入了“智慧校園”的時代,校園環(huán)境全面感知是“智慧校園”的基礎(chǔ),對校園環(huán)境進(jìn)行檢測分析,為校園環(huán)境治理提供依據(jù)以及為校園環(huán)境保護(hù)規(guī)劃提供基礎(chǔ)數(shù)據(jù)。傳統(tǒng)通過RJ45網(wǎng)口或RS485通信方式采集數(shù)據(jù)的有線網(wǎng)絡(luò)方案具有布線難、布線成本高、傳輸距離短等缺點。LoRa 是LPWAN通信技術(shù)中的一種,是美國Semtech公司采用和推廣的一種基于擴(kuò)頻技術(shù)的超遠(yuǎn)距離無線傳輸方案。這一方案改變了以往關(guān)于傳輸距離與功耗折衷的考慮方式,是一種能夠簡單實現(xiàn)遠(yuǎn)距離、長電池壽命、大容量的系統(tǒng),進(jìn)而可擴(kuò)展傳感網(wǎng)絡(luò)。LoRa網(wǎng)絡(luò)易于建設(shè)和部署,具有遠(yuǎn)距離、低功耗(電池壽命長)、多節(jié)點、低成本的特性,已成為當(dāng)前應(yīng)用最普遍的物聯(lián)網(wǎng)專用網(wǎng)絡(luò)通信技術(shù),發(fā)展形勢如火如荼。隨著中國LoRa應(yīng)用聯(lián)盟(CLAA)的成立,LoRa技術(shù)的CLAA網(wǎng)絡(luò)架構(gòu)方案已經(jīng)形成,國內(nèi)LoRa網(wǎng)絡(luò)部署全面起跑。
LoRa技術(shù)具有部署簡單、成本低、易于維護(hù)、云聯(lián)網(wǎng)等特點,是本文系統(tǒng)構(gòu)建的首選。
1 設(shè)計思路
基于LoRa的環(huán)境檢測分析系統(tǒng)采用分布式、微服務(wù)設(shè)計方式,將服務(wù)細(xì)分,使每個服務(wù)的功能盡可能單一,降低服務(wù)之間的耦合,使系統(tǒng)可獨立部署運行和擴(kuò)展。微服務(wù)可以做負(fù)載均衡,提高了性能和可靠性。
本系統(tǒng)主要由傳感層、網(wǎng)關(guān)、后臺服務(wù)、應(yīng)用層(Web)組成。
(1)傳感層由RS 485溫濕度傳感器、RS 485 PM2.5粉塵傳感器、RS 485電表構(gòu)成,通過RS 485總線接入到LoRa通信模塊;
(2)網(wǎng)關(guān)由LoRa通信模塊和嵌入式工控機構(gòu)成;
(3)后臺服務(wù)提供數(shù)據(jù)存儲、統(tǒng)計、分析服務(wù)和統(tǒng)一的RESTful數(shù)據(jù)接口;
(4)Web提供數(shù)據(jù)展示和數(shù)據(jù)查詢等用戶交互頁面。
系統(tǒng)結(jié)構(gòu)如圖1所示。
2 LoRa簡介
目前,LoRa 主要在全球免費頻段運行,包括433 MHz,868 MHz,915 MHz等。
2.1 LoRa特性
LoRa技術(shù)具有遠(yuǎn)距離、低功耗(電池壽命長)、多節(jié)點、低成本等特性。
2.2 LoRa網(wǎng)絡(luò)
LoRa網(wǎng)絡(luò)主要由終端(可內(nèi)置LoRa模塊)、網(wǎng)關(guān)(或稱基站)、Server和云四部分組成,應(yīng)用數(shù)據(jù)可雙向傳輸。LoRa網(wǎng)絡(luò)架構(gòu)如圖2所示。
2.3 LoRaWAN協(xié)議
LoRaWAN是 LoRa聯(lián)盟推出的一個基于開源MAC層協(xié)議的低功耗廣域網(wǎng)(Low Power Wide Area Network, LPWAN)標(biāo)準(zhǔn)。這一技術(shù)可為電池供電的無線設(shè)備提供局域、全國或全球網(wǎng)絡(luò)。LoRaWAN瞄準(zhǔn)的是物聯(lián)網(wǎng)中的一些核心需求,如安全雙向通信、移動通信和靜態(tài)位置識別等服務(wù)。該技術(shù)無需本地復(fù)雜配置就可實現(xiàn)智能設(shè)備間的無縫對接互操作,為物聯(lián)網(wǎng)領(lǐng)域的用戶、開發(fā)者和企業(yè)提供自由操作權(quán)限。
3 系統(tǒng)設(shè)計
3.1 硬件接入
RS 485數(shù)據(jù)采集器(溫濕度、空氣質(zhì)量、電表)通過RS485總線接入LoRa通信模塊,通過LoRa通信模塊將數(shù)據(jù)采集器采集到的數(shù)據(jù)傳輸?shù)骄W(wǎng)關(guān)端的LoRa通信模塊。數(shù)據(jù)采集器端數(shù)據(jù)為被動上傳方式,由網(wǎng)關(guān)定時下發(fā)指令獲取數(shù)據(jù)。
3.2 網(wǎng)關(guān)程序
網(wǎng)關(guān)(Gateway)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。網(wǎng)關(guān)在傳輸層上實現(xiàn)網(wǎng)絡(luò)互連,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個高層協(xié)議間的網(wǎng)絡(luò)互連。
網(wǎng)關(guān)程序主要由RS 232轉(zhuǎn)TCP驅(qū)動程序、數(shù)據(jù)采集程序、數(shù)據(jù)儲存程序、數(shù)據(jù)上傳程序、MQTT程序(數(shù)據(jù)生產(chǎn)者)組成。LoRa通信模塊通過RS 232接入嵌入式工控機,通過RS 232轉(zhuǎn)TCP驅(qū)動程序?qū)oRa接收到的采集數(shù)據(jù)統(tǒng)一轉(zhuǎn)換為TCP協(xié)議,數(shù)據(jù)采集程序通過Socket通信獲取數(shù)據(jù)。網(wǎng)關(guān)程序結(jié)構(gòu)如圖3所示。
4 MQTT服務(wù)
4.1 MQTT簡介
MQTT是基于二進(jìn)制消息發(fā)布/訂閱編程模式的消息協(xié)議,最早由IBM提出,如今已成為OASIS規(guī)范。由于規(guī)范較簡單,非常適合需要低功耗和網(wǎng)絡(luò)帶寬有限的IoT場景。
4.2 MQTT設(shè)計原則
(1)精簡,不添加可有可無的功能。
(2)發(fā)布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞。
(3)允許用戶動態(tài)創(chuàng)建主題,零運維成本。
(4)把傳輸量降到最低以提高傳輸效率。
(5)把低帶寬、高延遲、不穩(wěn)定的網(wǎng)絡(luò)等因素考慮在內(nèi)。
(6)支持連續(xù)的會話控制。
(7)理解客戶端計算能力可能較低。
(8)提供服務(wù)質(zhì)量管理。
(9)假設(shè)數(shù)據(jù)不可知,不強求傳輸數(shù)據(jù)的類型與格式,保持靈活性。
4.3 MQTT發(fā)布/訂閱模式
與請求/回答這種同步模式不同,發(fā)布/定義模式解耦了發(fā)布消息的客戶(發(fā)布者)與訂閱消息的客戶(訂閱者)之間的關(guān)系,這意味著發(fā)布者和訂閱者之間無需直接建立聯(lián)系。
(1)發(fā)布者與訂閱者不必了解彼此,只要認(rèn)識同一個消息代理即可。
(2)發(fā)布者和訂閱者不需要交互,發(fā)布者無需等待訂閱者確認(rèn)而導(dǎo)致鎖定。
(3)發(fā)布者和訂閱者不需要同時在線,可以自由選擇時間來消費消息。
4.4 MQTT主題
MQTT通過主題對消息進(jìn)行分類,其本質(zhì)是一個UTF-8字符串,可通過反斜杠表示多個層級關(guān)系。主題無需創(chuàng)建,直接使用即可。
主題還可通過通配符進(jìn)行過濾。其中,“+”可以過濾一個層級,而“·”只能出現(xiàn)在主題最后,表示過濾任意級別的層級。舉例如下:
building-b/floor-5:代表B樓5層的設(shè)備。
+/floor-5:代表任何一個樓的5層的設(shè)備。
building-b/·:代表B樓所有的設(shè)備。
雖然MQTT允許使用通配符訂閱主題,但并不允許使用通配符廣播。
4.5 MQTT服務(wù)質(zhì)量
為了滿足不同的場景,MQTT支持三種不同級別的服務(wù)質(zhì)量(Quality of Service,QoS),為不同場景提供消息可靠性:
(1)級別0:盡力而為。消息發(fā)送者會想盡辦法發(fā)送消息,但遇到意外并不會重試。
(2)級別1:至少一次。消息接收者如果沒有知會或者知會本身丟失,消息發(fā)送者會再次發(fā)送以保證消息接收者至少會收到一次,但也可能造成重復(fù)消息。
(3)級別2:恰好一次。保證這種語義肯定會減少并發(fā)或者增加延時,但如果丟失或重復(fù)消息不可接受時,級別2最合適。
級別2所提供的不重不丟在很多情況下都是最理想的,但往返多次的確認(rèn)會給并發(fā)和延遲帶來影響。級別1提供的至少一次語義在日志處理場景下完全足夠,所以像Kafka這類系統(tǒng)利用此特點減少確認(rèn),可大大提高并發(fā)。級別0適合雞肋數(shù)據(jù)場景,暫且保留。
4.6 MQTT消息類型
MQTT擁有14種不同的消息類型:
(1)CONNECT:客戶端連接到MQTT代理。
(2)CONNACK:連接確認(rèn)。
(3)PUBLISH:新發(fā)布消息。
(4)PUBACK:新發(fā)布消息確認(rèn),是QoS 1給PUBLISH消息的回復(fù)。
(5)PUBREC:QoS 2消息流的第一部分表示消息發(fā)布已記錄。
(6)PUBREL:QoS 2消息流的第二部分表示消息發(fā)布已釋放。
(7)PUBCOMP:QoS 2消息流的第三部分表示消息發(fā)布完成。
(8)SUBSCRIBE:客戶端訂閱某個主題。
(9)SUBACK:對于SUBSCRIBE消息的確認(rèn)。
(10)UNSUBSCRIBE:客戶端終止訂閱的消息。
(11)UNSUBACK:對于UNSUBSCRIBE消息的確認(rèn)。
(12)PINGREQ:心跳。
(13)PINGRESP:確認(rèn)心跳。
(14)DISCONNECT:客戶端終止連接前通知MQTT代理。
4.7 MQTT代理
Mosquitto是MQTT的開源代理,遵循MQTT v3.1.1協(xié)議。
5 后臺服務(wù)
后臺服務(wù)采用Java語言編寫,由數(shù)據(jù)解析服務(wù)、數(shù)據(jù)存儲服務(wù)、數(shù)據(jù)統(tǒng)計分析服務(wù)、用戶管理模塊、設(shè)備節(jié)點管理模塊、實時數(shù)據(jù)模塊組成。后臺服務(wù)結(jié)構(gòu)如圖4所示。
5.1 數(shù)據(jù)解析服務(wù)
數(shù)據(jù)解析服務(wù)程序主要負(fù)責(zé)將網(wǎng)關(guān)上傳的環(huán)境數(shù)據(jù)進(jìn)行協(xié)議解析,獲得溫濕度、PM2.5、用電量等數(shù)據(jù),并將解析的數(shù)據(jù)存入Rides緩存,由相應(yīng)的服務(wù)程序獲取并做相應(yīng)的處理。
5.2 數(shù)據(jù)存儲服務(wù)
數(shù)據(jù)存儲服務(wù)程序從Rides緩存中獲取解析后的數(shù)據(jù),將相應(yīng)的數(shù)據(jù)存入MySQL對應(yīng)的數(shù)據(jù)庫表中。
5.3 數(shù)據(jù)統(tǒng)計分析服務(wù)
統(tǒng)計當(dāng)月平均每天的(24小時平均值)溫度、濕度;統(tǒng)計當(dāng)月每天PM2.5污染指數(shù)與指數(shù)類別;統(tǒng)計當(dāng)月每天的用電量。數(shù)據(jù)統(tǒng)計如圖5所示。
5.4 用戶管理模塊
用戶管理模塊提供用戶添加、用戶刪除、用戶信息修改、密碼更改、用戶列表查詢、用戶登陸、注銷等功能。如圖6所示。
5.5 設(shè)備節(jié)點管理模塊
設(shè)備節(jié)點管理模塊可提供設(shè)備節(jié)點添加、設(shè)備節(jié)點刪除、設(shè)備節(jié)點信息修改、設(shè)備節(jié)點列表查詢等功能,如圖7所示。
5.6 實時數(shù)據(jù)模塊
實時數(shù)據(jù)模塊可獲取各監(jiān)測點當(dāng)前的實時溫濕度、PM2.5、用電量,如圖8所示。
6 數(shù)據(jù)建模
功能建模如圖9所示。
數(shù)據(jù)建模如圖10所示。
編號:001
職責(zé):存儲采集的數(shù)據(jù)。
屬性:ID,溫度,濕度,PM2.5,電流,電壓,功率,(總)用電量,創(chuàng)建時間。
說明:數(shù)據(jù)采集類與數(shù)據(jù)天統(tǒng)計類存在依賴關(guān)系,數(shù)據(jù)天統(tǒng)計類每天數(shù)據(jù)的生成依賴數(shù)據(jù)采集類采集的數(shù)據(jù)。
編號:002
職責(zé):對每天采集的數(shù)據(jù)進(jìn)行統(tǒng)計。
屬性:ID,平均溫度,平均濕度,平均 PM2.5 濃度,(當(dāng)天)用電量,創(chuàng)建時間。
說明:數(shù)據(jù)天統(tǒng)計類與數(shù)據(jù)采集類存在依賴關(guān)系, 數(shù)據(jù)天統(tǒng)計類每天數(shù)據(jù)的生成依賴數(shù)據(jù)采集類采集的數(shù)據(jù)。
7 結(jié) 語
本環(huán)境檢測分析系統(tǒng)通過溫濕度傳感器、PM2.5粉塵傳感器、電表采集校園的環(huán)境數(shù)據(jù)和用電數(shù)據(jù),實時檢測校園的環(huán)境情況。通過歷史數(shù)據(jù)統(tǒng)計分析校園的環(huán)境情況以及校園用電情況,為校園環(huán)境治理提供依據(jù),為校園環(huán)境保護(hù)規(guī)劃以及校園節(jié)能提供基礎(chǔ)數(shù)據(jù),也為未來的“智慧校園”提供數(shù)據(jù)支持。
參考文獻(xiàn)
[1] AUGTEK物聯(lián)網(wǎng)觀察-LoRa技術(shù)科普[Z].
[2]張琪.MQTT入門[Z].
[3]宋延軍,梁俊艷,王德志.基于LoRa的10 kV架空線路故障監(jiān)測系統(tǒng)設(shè)計與實現(xiàn)[J].華北科技學(xué)院學(xué)報,2017,14(5):30-34.
[4]趙太飛,陳倫斌,袁麓,等.基于LoRa的智能抄表系統(tǒng)設(shè)計與實現(xiàn)[J].計算機測量與控制,2016,24(9):298-301.
[5]馬路遙,徐鵬.基于LoRa擴(kuò)頻技術(shù)在燃?xì)鉄o線抄表系統(tǒng)的應(yīng)用[J].城市燃?xì)猓?016(7):7-9.
[6]霍振龍.LoRa技術(shù)在礦井無線通信中的應(yīng)用分析[J].工礦自動化,2017,43(10):34-37.
[7]羅貴英.基于LoRa的水表抄表系統(tǒng)設(shè)計與實現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2016.
[8]鄭浩. LoRa技術(shù)在低功耗廣域網(wǎng)絡(luò)中的實現(xiàn)和應(yīng)用[J].信息通信技術(shù),2017(1):19-26.