凌 杰,范文浩,高錦春,吳 帆
(北京郵電大學電子工程學院,北京 100876)
基于訂閱發布的空氣質量監測系統的設計實現
凌 杰,范文浩,高錦春,吳 帆
(北京郵電大學電子工程學院,北京 100876)
近幾年空氣污染愈發嚴重,空氣質量問題不容小覷。本文設計并實現了基于訂閱發布的空氣質量監測系統,包括便攜式、低功耗的傳感器模塊,發布訂閱服務端系統和跨平臺移動客戶端。其中,底層傳感器節點是以Arduino擴展板進行編程集成的,能夠通過若干個感知設備對空氣中CO、PM2.5、PM10、03、VOC、NO2、溫濕度等進行監測。同時傳感器節點和移動端能通過無線、有線、藍牙等方式與發布訂閱服務器系統進行通信,接收服務端推送的訂閱或發布信息,移動端接收感知信息后,可實時動態展示空氣質量信息和城市天氣信息,以便用戶隨時監測空氣質量。
空氣質量監測;Arduino;Cordova;發布訂閱
最近幾年,各大城市頻頻發生的空氣污染嚴重地威脅了人們的身體健康[1]。如何在空氣質量發生變化時,準確實時地進行監測和報警[2],以便進一步采取相應的措施,將其負面影響降到最低,是一個亟待解決的問題。同時,傳統的自動化空氣質量檢測站主要部署在各大城市及其周邊地區,監測站設備價格高、建站成本高、站點分布密度小,且以地區總體的平均值代表城市的整體空氣質量,對于農村地區、工廠地區、人們日常生活的辦公樓、室內、小區、街道等的空氣質量卻無法進行實時監測。
針對上述問題,本項目基于無線傳感器網絡和發布訂閱技術建立了空氣質量實時監測系統,通過部署無線傳感器節點來采集多種空氣質量監測指標,然后利用移動網絡、有線網、WiFi等將采集到的數據實時上傳到發布訂閱服務系統,并由該服務系統將數據實時推送到移動訂閱終端,以實現端到端之間的高度信息共享,具有部署簡單、靈活[3],監測節點便攜性強等特點,個人、相關部門等可利用實時共享的空氣質量信息高效地采取相應措施解決各種空氣質量問題。
本文的空氣質量監測系統是由傳感器節點、發布訂閱系統和移動端組成,如圖1所示。
(1)傳感器節點負責采集PM2.5、PM10、甲醛等多種空氣質量監測指標,并通過移動網絡、WiFi、有線網等上傳到服務器——發布訂閱實時信息推送系統;
(2)發布訂閱系統負責將傳感器節點上傳的數據實時推送給訂閱目標,同時,也負責接收客戶端的訂閱信息,進行傳感器節點的實時數據抓取等;
(3)移動端接收服務器的數據并展示,同時也能進行傳感器站點的自主訂閱,訂閱城市和傳感器站點,實現高度的信息共享。
整個系統以多節點傳感器為基礎,通過移動網絡、有線網、WiFi等與骨干網相連,能夠構建龐大的分布式服務器集群,有效地保證高并發實時信息共享與交互。

圖1 系統總體架構圖
空氣質量監測系統的硬件模塊包括部署安裝在室內外的傳感器節點和集成在節點上的通信功能模塊。硬件采集模塊負責采集傳感器數據,進行處理后轉換為標準形式并通過網絡將數據上傳至服務器。硬件采集模塊設備部署如圖2所示。
系統中使用的傳感器的類型有三類:中立格林-MSM-1多參數傳感模塊,攀藤科技-DS-HCHO和顆粒物傳感器PMSX00X系列,硬件采集模塊需要使用Arduino平臺分別采集上述三類傳感器中的數據。
其中,DS-HCHO 是一款高度集成、高精度、高穩定性的數字輸出式甲醛傳感器,采用電化學方法實時檢測各應用場景下的甲醛含量,無須采樣,具有測量精準、體積小,使用方便等特點,家居和工業均可使用[4]。
數字式通用顆粒物濃度傳感器是一款數字式通用顆粒物濃度傳感器,可以用于獲得單位體積內空氣中懸浮顆粒物個數及質量,即顆粒物濃度,并以數字接口形式輸出。該傳感器可嵌入各種與空氣中懸浮顆粒物濃度相關的儀器儀表或環境改善設備,為其提供及時準確的濃度數據[5]。
Arduino是一款便捷靈活的開源電子原型平臺,本項目選擇的型號是Arduino mega2560,以太網和WIFI通信均能實現,通過對Arduino的編程來實現了掛載集成多個種類傳感器。采集到的各類數據的單位如下:PM2.5(ug/m^3),PM10(ug/m^3),溫度(℃),濕度(RH%),CO2(ppm),TVOC(mg/m^3),HCHO(mg/m^3)。

圖2 硬件采集模塊設備部署圖
傳感器采集信息后,按照一定頻率上次信息至服務器,其中上傳至服務器的信息格式是:發布者ID,傳感器ID,監測內容,監測數值和發布時間。同時,硬件采集模塊也能夠解析服務器發來的采集信息指令,并進行相應的采集上傳操作。
3.1 發布訂閱服務端系統架構
服務器系統分為客戶端SDK模塊和發布訂閱服務模塊。服務器端接收處理的消息主要分為兩類:上行消息有客戶端向服務器訂閱、發布、查詢等;下行消息有服務器向客戶端發送消息、通知提醒等。整個系統具備響應時間短、資源占用低、運行周期短等特點。
3.1.1 客戶端SDK模塊
客戶端SDK模塊向移動端提供調用接口,封裝通信過程,使用socket保持與客戶端的長連接,該模塊包括如下三個層次,其功能都分別如下所示:
1)應用編程接口層,為客戶端通信、登錄、注冊、訂閱服務提供調用的API接口;
2)加解密/認證層,該層封裝了登錄注冊密碼加密、解密,消息推送前的數據加密和接收后數據解密的功能,消息認證功能等;
3)通信接口層,該層封裝了客戶端socket連接,可通過該鏈接進行消息推送,訂閱指令監聽等操作。
3.1.2 服務端模塊結構
發布訂閱服務模塊的結構圖如3所示,該模塊主要進行消息的發布訂閱功能,包括通信接口層、管理域、數據流轉域和數據存儲這四大層級。通信接口層也封裝了socket連接、推送、監聽消息等操作。管理域是負責系統的用戶信息、用戶空間信息、用戶秘鑰信息、服務規則匹配信息等的增刪查改功能。其中的用戶管理是管理用戶的身份信息和用戶注冊、用戶秘鑰生成發放、用戶服務空間申請,規則匹配管理則是消息分發的匹配規則。
數據流轉域是系統消息的處理流程,其中的加解密認證層具有數據的加解密和數據認證功能,接入控制層是接入用戶的權限管理,路由服務層管理消息接收和分發,消息隊列層用來緩存離線用戶的訂閱消息。
數據存儲層位于底層,存儲客戶的基本信息,訂閱發布信息及客戶的詳細訂閱歷史記錄等。
3.1.3 服務端工作流程
小節3.1.2介紹了服務端的系統功能模塊,本節主要介紹空氣質量監測系統的服務端主要功能模塊的工作流程,包括接入鑒權管理的流程,消息訂閱和發布的工作流程,分別如圖4所示。

圖3 發布訂閱服務模塊結構

圖4 接入鑒權管理流程圖
圖4 所示為接入鑒權管理的系統流程圖,在客戶端發起接入請求時,調用系統封裝的客戶端接入相關API,通過把接入請求的關鍵信息加密,然后通過調用通信接口層發送給服務器,服務器對加密信息的處理時,會先后調用服務端的解密認證、接入管理層,對客戶請求進行處理,同時把處理信息進行數據存儲,處理結果按照原通信鏈路返回到客戶端。
消息訂閱和發布的流程圖如圖5和圖6所示。當用戶進行消息訂閱時,會首先調用客戶端訂閱的API,然后進行訂閱消息的加密,利用通信接口層將信息傳送到服務器的對應模塊,進行消息認證和解密,然后由路由管理層進行業務操作,同時進行數據存儲,最后將處理消息按照數據流鏈路返回到移動端,移動端接收到處理結果進行展示。當用戶進行消息發布時,首先會通過調用客戶端API將發布的消息封裝,然后加密封裝后的統一格式消息,調用通信接口層將信息傳輸到服務端,服務端接收到消息首先進行認證和解密,然后由路由管理層進行相應的存儲操作,以及消息放入規定的消息隊列,若訂閱用戶在線,則立即進行消息的發布,若訂閱用戶不在線,則放入消息隊列,待用戶上線立即推送歷史數據。

圖5 消息訂閱流程圖

圖6 消息發布流程圖
3.2 移動端結構設計
移動客戶端按功能主要分為兩大模塊,分別為用戶信息管理模塊和空氣質量信息訂閱展示模塊。用戶信息管理模塊主要包括用戶的注冊、登錄以及用戶信息的修改,空氣質量信息訂閱展示模塊則分為兩大信息流和兩大功能,信息流一是室內空氣質量,信息流二是室外空氣質量包括天氣信息和若干氣體指標,可向用戶展示實時監測到的室內傳感器數據和城市天氣、室外氣體信息數據,功能一是室內、室外傳感器節點的訂閱,功能二是室內外空氣質量的消息接收展示。移動端是基于Cordova跨平臺開發,能夠在Android和ISO平臺等上運行。
移動端頁面設計界面設計如下所示,主要包括主頁面、室外信息詳情頁、室內信息詳情頁和我的賬戶頁面。其中,室外信息詳情頁包括兩個子頁面,包括已訂閱城市列表展示頁、室外傳感器訂閱頁,室內信息詳情頁包括兩個子頁面,包括已訂閱傳感器信息列表展示頁、室內傳感器訂閱頁。

圖7 移動客戶端總體架構圖
主頁面如圖8所示,頁面上半部分是室外概要展示(圖中為用戶訂閱城市北京),包括北京的天氣狀況陰、晴等,溫度、城市的空氣質量、城市的AQI指數。中半部分包括室內傳感器信息概要展示,與室外、城市的概要展示項目相同。

圖8 移動端的主頁面實現圖
頁面的下半部分包括方塊圖形生活指數和室內外條狀氣體指數。生活指數信息是訂閱城市的生活指數,包括防曬指數、穿衣指數、運動適宜與否指數、洗車指數、晾曬指數和限行指數。
緊接著生活指數區域的是室內外條形指數包括室內的六種氣體PM10、PM2.5、03、VOC、NO2、CO,條形圖上左端標明了氣體種類,右端標明了氣體的指數,而條形圖的顏色標明了污染的程度。分為4個等級,綠色、橙色、灰色、紅色,表示氣體質量優,污染輕,橙色表示該氣體污染程度為良,灰色表示污染程度為輕度污染,紅色表示重度污染。
頁面最下方有4個按鈕,分別為首頁、室外、室內和我的賬戶。
室外頁面如圖9所示,以北京為例,頁面頂部的城市名稱右部也即右上角為鏈接,鏈接到已訂閱城市的列表,城市名稱的正下方是代表訂閱城市的數目。圖左和圖右拼接起來為室外信息展示頁。圖左包括城市的天氣信息,當天信息和四天的預測天氣信息、溫度和天氣,圖右偏下為天氣詳情,包括濕度、風力和紫外線指數。頁面的最下方是該城市的條形指數圖,室外條形指數包括室外的六種氣體PM10、PM2.5、03、VOC、NO2、CO,條形圖上左端標明了氣體種類,右端標明了氣體的指數,而條形圖的顏色標明了污染的程度。

圖9 移動端的室外信息展示頁面
室內空氣質量檢測頁面,該頁面展示訂閱的傳感器信息,包括傳感器的室內空氣質量,空氣AQI指數,室內的溫度。支持訂閱指定的傳感器,能夠獲取該傳感器采集的室內的PM2.5,PM10,甲醛等多種氣體的實時濃度和氣體污染程度的彩條展示,直觀明了地展示污染氣體的濃度水平。室內溫度和AQI歷史變化狀況以曲線形式展示,以便用戶直觀了解變化趨勢。
本系統搭建完成后,在北京市的郵電大學若干點對部分功能進行了測試,實驗表明,該系統可連續運轉2400小時無故障,傳感器采集發送頻率可達到3 s/次,移動端的信息更新頻率可達到15 ms/次,能夠滿足大規模系統的應用。發布訂閱服務器的并發量測試性能如圖10所示。
如圖10所示,仿真測試的環境是ubuntu系統,Intel(R) Core i5-2557 M 1.70 GHz CPU,8 GB RAM,在其中進行仿真測試得到的登錄并發量到15000次,注冊的并發量達到2000,同時進行發布、訂閱的系統操作更加復雜,所耗資源更多,并發量較少,分別為100、200次。訂閱發布系統的吞吐量在一定范圍內隨發布數目及訂閱數目的增大而增大,吞吐量峰值可達到百萬字節每秒。

圖10 發布訂閱服務器的并發量測試圖
本文設計實現了基于發布訂閱的空氣質量監測系統,可以對室內、街道等任意地點的空氣質量進行實時監測,并通過移動客戶端實現信息交互和數據共享。空氣質量監測系統包括底層傳感器節點、服務器端和移動客戶端三大部分,其中傳感器節點具有便攜性強、功耗低、成本低、性能穩定的特點,基于訂閱發布的服務端系統能夠支持大規模并發量,可達到百萬級吞吐,同時支持萬級以上的移動端信息訂閱和空氣質量的實時展示,移動端也具有界面友好、并發量大的特點。綜上所述,整個空氣質量監測系統具有非常大的使用價值和推廣價值。
[1] 李德平, 程興宏, 于永濤等. 北京地區三級以上污染日的氣象影響因子初步分析[J]. 氣象與環境學報, 2010, 26(3): 7-13.
[2] 龔發根, 汪煒, 秦拯. 基于ZigBee無線傳感器網絡的工業廢氣監控系統[J]. 傳感器與微系統, 2011, 30(1): 86-89.
[3] 吳迪, 皇潤風, 柯燕燕等. 基于無線傳感網絡的空氣污染實時監測系統[J]. 計算機測量與控制, 2013, 21(7).
[4] 何道清. 傳感器與傳感器技術[M]. 北京: 科學出版社, 2003, 377-396.
[5] 王雪文, 張志勇. 傳感器原理及應用[M]. 北京: 化學工業出版社, 2004, 177-212.
Design and Implementation of Air Quality Monitoring System Based on Subscription and Release
LING Jie, FAN Wen-hao, GAO Jin-chun, WU Fan
(School of Electronic Engineering, Beijing University of Posts and Telecommunications, Beijing 100876)
In recent years, air pollution has become increasingly fierce, which can’t be ignored. This paper designs and implements an air quality monitoring publish-subscribe system. The system includes a portable, low power sensor module, a million concurrent server and a users’ friendly cross-platform client. Several kinds of gases such as PM2.5, PM10, 03, VOC, NO2, temperature and humidity are monitored. Sensors can communicate with the server through wireless or wired network, etc. At the same time, the Ardunio hardware is used to control these sensor nodes. The publish-subscribe server can publish air quality information to users based on the subscription information. The mobile client can monitor the air quality and weather information at any time.
Air quality monitoring; Arduino; Cordova; Subscription and release
TP311.1
A
10.3969/j.issn.1003-6970.2016.12.001
國家自然科學基金項目(61502050);廣東省“揚帆計劃”引進創新創業團隊項目
凌杰(1992-),女,研究生,研究方向:物聯網搜索下的排序。
吳帆,女,博士,教授,研究方向:物聯網與移動終端。
本文著錄格式:凌杰,范文浩,高錦春,等. 基于訂閱發布的空氣質量監測系統的設計實現[J]. 軟件,2016,37(12):01-06