,,,,
(深圳信息職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)學(xué)院,深圳 518172)
基于MQTT協(xié)議與開(kāi)源硬件的智能監(jiān)控系統(tǒng)*
陳建剛,黃國(guó)偉,劉星明,丘曉彬,李子賢
(深圳信息職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)學(xué)院,深圳 518172)
實(shí)現(xiàn)一種采用MQTT協(xié)議、通過(guò)安卓/iOS APP對(duì)基于開(kāi)源硬件-WRTnode的移動(dòng)智能監(jiān)控設(shè)備(如智能設(shè)備,機(jī)器人等)進(jìn)行遠(yuǎn)程控制的方案。采用開(kāi)源MQTT服務(wù)器框架-mosquitto作為MQTT broker,通過(guò)APP發(fā)布控制指令主題,監(jiān)控設(shè)備訂閱該主題并根據(jù)控制指令執(zhí)行操作,監(jiān)控設(shè)備發(fā)布需要上報(bào)的監(jiān)控?cái)?shù)據(jù)主題,APP訂閱該主題后將接收到監(jiān)控?cái)?shù)據(jù)。通過(guò)雙向的發(fā)布-訂閱模式,實(shí)現(xiàn)多功能智能監(jiān)控過(guò)程。
WRTnode;MQTT; 發(fā)布-訂閱;監(jiān)控設(shè)備
當(dāng)前市面上的智能監(jiān)控大都是固定式放置,監(jiān)測(cè)方式為攝像頭的視頻監(jiān)控和移動(dòng)偵測(cè),監(jiān)控手段較單一,不能滿足移動(dòng)安防應(yīng)用需求,尤其是在廠礦、商場(chǎng)等大型空曠場(chǎng)所。本文通過(guò)在移動(dòng)設(shè)備上設(shè)計(jì)多功能監(jiān)控方式,包括移動(dòng)偵測(cè)、檢測(cè)到覆蓋區(qū)域有WiFi探針信號(hào)、人體紅外感應(yīng)等,從而比已有設(shè)備監(jiān)控手段更豐富、更實(shí)用。另外,還可將MQTT運(yùn)用于多功能監(jiān)控設(shè)備,實(shí)現(xiàn)智能手機(jī)APP與移動(dòng)監(jiān)控設(shè)備的遠(yuǎn)程雙向通信過(guò)程。
通過(guò)在購(gòu)買(mǎi)的WiFi設(shè)備的基礎(chǔ)上實(shí)現(xiàn)多功能智能監(jiān)控設(shè)備[7],設(shè)備結(jié)構(gòu)如圖1所示,硬件部分由WRTnode[8]主控板、視頻監(jiān)控?cái)z像頭及云臺(tái)、Arduino單片機(jī)及擴(kuò)展板、無(wú)線充電模塊、設(shè)備控制模塊、傳感器數(shù)據(jù)采集模塊所組成。實(shí)現(xiàn)的監(jiān)控功能包括:
圖1 多功能智能監(jiān)控設(shè)備結(jié)構(gòu)
① 視頻監(jiān)控/移動(dòng)偵測(cè)。通過(guò)WRTnode的mjpg-streamer軟件包實(shí)現(xiàn)視頻監(jiān)控功能,將攝像頭產(chǎn)生的幀通過(guò)其output_file模塊發(fā)布出去。通過(guò)motion軟件包實(shí)現(xiàn)移動(dòng)偵測(cè)功能,當(dāng)監(jiān)控設(shè)備處于靜止?fàn)顟B(tài),攝像頭檢測(cè)到移動(dòng)物體時(shí)生成圖片。
② WiFi探針。在WRTnode中移植開(kāi)源無(wú)線驅(qū)動(dòng),通過(guò)iwcap軟件包提取移動(dòng)終端主動(dòng)發(fā)出的WiFi探針信號(hào)中的mac地址和信號(hào)強(qiáng)度(RSSI)。這樣,若有人攜帶手機(jī)并開(kāi)啟了WiFi功能,就能被監(jiān)控設(shè)備探測(cè)到,生成WiFi探針報(bào)警消息。
③ 紅外熱釋電感應(yīng)。通過(guò)Arduino外接人體紅外熱釋電傳感器,人體靠近時(shí)觸發(fā)感應(yīng),生成紅外熱釋電報(bào)警消息。
通過(guò)上述多種不同類型的監(jiān)控方式,增加監(jiān)控的準(zhǔn)確度。另外設(shè)備還可以搭建溫濕度傳感器,用來(lái)檢測(cè)環(huán)境的溫濕度數(shù)據(jù)。設(shè)計(jì)的監(jiān)控設(shè)備實(shí)物圖如圖2所示。
圖2 多功能智能監(jiān)控設(shè)備實(shí)物圖
上述監(jiān)控方式產(chǎn)生的監(jiān)測(cè)數(shù)據(jù)通過(guò)MQTT協(xié)議推送消息給監(jiān)控設(shè)備的用戶手機(jī)。MQTT協(xié)議定義完善的通信方式,包括QoS、安全認(rèn)證等,用戶只需專注于應(yīng)用實(shí)現(xiàn)。由于采用發(fā)布-訂閱模式,數(shù)據(jù)分發(fā)方式多樣化,可以是一對(duì)一或一對(duì)多等, 相比請(qǐng)求-響應(yīng)模式,更能滿足物聯(lián)網(wǎng)應(yīng)用需求,如監(jiān)控?cái)?shù)據(jù)可以上報(bào)給多個(gè)訂閱的用戶。主題(topic)是MQTT用來(lái)標(biāo)識(shí)已發(fā)布消息的信息渠道,采用分層結(jié)構(gòu),用斜線“/”作為分隔符。定義了兩種通配符:“#”和“+”, “#”通配多層結(jié)構(gòu),而“+”只能通配一層結(jié)構(gòu)。
采用MQTT的多功能監(jiān)控系統(tǒng)交互過(guò)程如圖3所示,實(shí)現(xiàn)了與監(jiān)控設(shè)備配套的手機(jī)APP,主要功能包括控制設(shè)備移動(dòng)和接收監(jiān)控?cái)?shù)據(jù)等,在阿里云上采用開(kāi)源Mosquitto搭建MQTT broker,作為手機(jī)APP與監(jiān)控設(shè)備之間發(fā)布-訂閱控制指令及上傳監(jiān)控?cái)?shù)據(jù)的中間件。手機(jī)APP和監(jiān)控設(shè)備作為MQTT客戶端,都先與MQTT broker建立連接, 手機(jī)APP將控制指令發(fā)布到指定主題,監(jiān)控設(shè)備訂閱相應(yīng)主題以獲得控制指令,并根據(jù)指令執(zhí)行操作。而監(jiān)控設(shè)備產(chǎn)生的監(jiān)控?cái)?shù)據(jù)同樣發(fā)布到指定主題,手機(jī)APP則訂閱該主題獲得監(jiān)控?cái)?shù)據(jù)。
圖3 多功能監(jiān)控系統(tǒng)交互過(guò)程
Mosquitto通過(guò)訂閱樹(shù)機(jī)制管理所有主題及客戶端對(duì)主題的訂閱關(guān)系[9],訂閱樹(shù)采用二叉樹(shù)結(jié)構(gòu),使用孩子兄弟鏈表法進(jìn)行二叉樹(shù)節(jié)點(diǎn)存儲(chǔ),Mosquitto根據(jù)MQTT協(xié)議所定義的主題格式,將主題根據(jù)“/”分割并組織成一棵二叉樹(shù),從根節(jié)點(diǎn)沿著連線到樹(shù)中的任意一節(jié)點(diǎn)即組成該節(jié)點(diǎn)所對(duì)應(yīng)的主題,每個(gè)節(jié)點(diǎn)都保存一個(gè)訂閱列表,該訂閱列表中保存了所有訂閱當(dāng)前主題的客戶端信息。
監(jiān)控設(shè)備啟動(dòng)后即訂閱由APP發(fā)布的控制指令主題,控制指令內(nèi)容需要包含控制的功能模塊及執(zhí)行動(dòng)作,如對(duì)于控制設(shè)備行徑,控制功能模塊名稱為設(shè)備,執(zhí)行動(dòng)作為前/后/左/右/停。另外考慮到設(shè)備和APP的綁定關(guān)系,控制指令中需要帶有設(shè)備標(biāo)識(shí),用于區(qū)分控制不同的設(shè)備,由于設(shè)備的主控板WRTnode為智能無(wú)線路由設(shè)備,需要通過(guò)WiFi中繼到上級(jí)路由(上級(jí)路由可為無(wú)線AP,如家居的無(wú)線網(wǎng)關(guān),在野外使用時(shí)可配帶4G路由作為上級(jí)路由),WRTnode的BSSID各不同,采用各設(shè)備的BSSID作為設(shè)備標(biāo)識(shí)。因而APP控制指令的內(nèi)容為:設(shè)備標(biāo)識(shí)->功能模塊->動(dòng)作。所定義的具體控制指令內(nèi)容如圖4所示。對(duì)應(yīng)的功能模塊含義如表1所列。
圖4 定義的具體控制指令內(nèi)容
由于用戶發(fā)布的控制指令針對(duì)的訂閱者(監(jiān)控設(shè)備)是唯一的,為降低MQTT broker維護(hù)訂閱樹(shù)的開(kāi)銷,從APP到監(jiān)控設(shè)備的發(fā)布-訂閱過(guò)程采用以BSSID倒序值為主題,將功能模塊及執(zhí)行動(dòng)作為對(duì)應(yīng)主題的消息體(payload),消息體以json格式組織,方便后續(xù)功能擴(kuò)展。
如開(kāi)啟移動(dòng)偵測(cè)功能,消息體內(nèi)容為:
{"model":"Motion","action":"on"}
圖6 APP操作界面演示
操作APP界面中對(duì)應(yīng)按鈕將通過(guò)MQTT協(xié)議組織上述消息內(nèi)容發(fā)布出相應(yīng)控制指令。
采用Mosquitto的openwrt版本在主控板WRTnode實(shí)現(xiàn)MQTT客戶端功能,訂閱APP發(fā)布的主題,解析payload內(nèi)容,根據(jù)消息體中的功能模塊和動(dòng)作執(zhí)行操作,如開(kāi)啟移動(dòng)偵測(cè)功能等。WRTnode執(zhí)行訂閱控制指令主題的命令為:
mosquitto_sub-t BSSID倒序值-h MQTT broker 的IP地址
對(duì)于有數(shù)據(jù)上報(bào)的功能模塊,包括溫濕度上報(bào)、WiFi探針探測(cè)到的mac地址和RSSI,移動(dòng)偵測(cè)產(chǎn)生的圖片、視頻監(jiān)控的畫(huà)面等。設(shè)備需要將生成的監(jiān)控等數(shù)據(jù)進(jìn)行發(fā)布,仍然采用發(fā)布-訂閱模式,設(shè)備發(fā)布的主題為BSSID/功能模塊,消息體內(nèi)容為需要上報(bào)的數(shù)據(jù)。WRTnode執(zhí)行發(fā)布數(shù)據(jù)主題的命令為:
mosquitto_pub-t BSSID/功能模塊-h MQTT broker的IP地址-m 上報(bào)的數(shù)據(jù)內(nèi)容
MQTT broker 的Mosquitto根據(jù)設(shè)備發(fā)布的主題消息,根據(jù)“/”分割成主題片段,沿著訂閱樹(shù)的二叉樹(shù)結(jié)構(gòu)檢測(cè)各主題片段是否存在,若不存在則創(chuàng)建節(jié)點(diǎn)存放該主題片段。
圖5 有數(shù)據(jù)上報(bào)時(shí) 生成的訂閱樹(shù)
APP在發(fā)布有數(shù)據(jù)上報(bào)的功能模塊的控制指令時(shí),同時(shí)訂閱該控制指令所對(duì)應(yīng)的主題——BSSID/功能模塊,如開(kāi)啟移動(dòng)偵測(cè)功能則訂閱主題為:BSSID/Motion。MQTT broker 的Mosquitto在收到訂閱請(qǐng)求后,根據(jù)主題將該客戶端掛到訂閱樹(shù)上對(duì)應(yīng)節(jié)點(diǎn)的訂閱列表中,若不存在客戶端所訂閱的主題,則會(huì)自動(dòng)添加相應(yīng)節(jié)點(diǎn),最終創(chuàng)建的訂閱樹(shù)如圖5所示。
實(shí)現(xiàn)的APP控制界面功能如圖6所示,用戶點(diǎn)擊界面中各控制按鈕發(fā)布主題為BSSID倒序值,參數(shù)為功能模塊+動(dòng)作的控制指令,設(shè)備收到指令后執(zhí)行對(duì)應(yīng)操作。對(duì)于需要上報(bào)數(shù)據(jù)的指令,設(shè)備發(fā)布BSSID/功能模塊,參數(shù)為上報(bào)數(shù)據(jù)的消息,通過(guò)MQTT broker中轉(zhuǎn)后推送在手機(jī)的消息欄,用戶可以查看監(jiān)控?cái)?shù)據(jù)。另外,點(diǎn)擊“遠(yuǎn)程監(jiān)控”將打開(kāi)設(shè)備的攝像頭并訂閱攝像頭圖片主題,接收到圖片后就顯示在圖片框中。點(diǎn)擊“方向控制”將跳轉(zhuǎn)到控制界面,用戶可通過(guò)“設(shè)備行徑”和“攝像頭方向”控件,分別控制設(shè)備的方向行走(前/后/左/右/停)和攝像頭的旋轉(zhuǎn)(上/下/左/右/居中)。
[1] 許金喜, 張新有.Android平臺(tái)基于MQTT協(xié)議的推送機(jī)制[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015, 24(1):185-190.
[2] 秦利紅,秦會(huì)斌,諸堅(jiān)彬,等.基于Android平臺(tái)智能家居客戶端的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(9):88-91.
[3] 胡曉喻, 陳慶奎.智能家居接入服務(wù)器策略的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2017, 38(2):544-549.
[4] 王君君, 董靜,伊銅川,等.移動(dòng)終端的設(shè)施農(nóng)業(yè)物聯(lián)網(wǎng)環(huán)境監(jiān)控系統(tǒng)設(shè)計(jì)[J].傳感器與微系統(tǒng),2016,35(8):87-89.
[5] 孟濬, 張賢華,顏文俊.基于智能手機(jī)傳感網(wǎng)的室內(nèi)老年監(jiān)護(hù)系統(tǒng)平臺(tái) [J].計(jì)算機(jī)應(yīng)用研究,2017,34(4):1084-1088.
[6] 孫燕芹,馬興錄,郭孔躍.基于MQTT協(xié)議的在線離子色譜儀遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2017,25(4):251-253.
[7] 陳建剛,紀(jì)嘉銘,葉森,等. 采用WRTnode開(kāi)源硬件實(shí)現(xiàn)多功能智能小車(chē)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2016, 16(3): 34-36.
[8] 曾昂, 李寧,嚴(yán)俊.Mosquitto大文件傳輸方式的研究與改進(jìn)[J].計(jì)算機(jī)工程與應(yīng)用,2017, 53(4):123-127.
IntelligentMonitoringSystemBasedonMQTTProtocolandOpen-sourceHardware
ChenJiangang,HuangGuowei,LiuXingming,QiuXiaobin,LiZixian
(Dep of Computer Applications,Shenzhen Institute of Information Technology,Shenzhen 518172,China)
The remote control scheme between Android/iOS APP and mobile intelligent monitoring device(such as the smart device,robot) is achieved with MQTT protocol.The open-source MQTT server framework(mosquito) is used as MQTT broker.APP publishes the topic of control instruction.The monitoring device subscribes to the topic and performs the operations according to the control instructions.The monitoring device publishes the topic of the monitoring data that need to report,APP subscribes to the subject and receives monitoring data.Through the two-way publish-subscribe mode,the multi-functional intelligent monitoring process is realized.
WRTnode;MQTT;publish-subscribe;monitoring device
深圳市2016年市創(chuàng)客專項(xiàng)資金個(gè)人創(chuàng)客項(xiàng)目(GRCK2016033010181365);深圳市2015年市創(chuàng)客專項(xiàng)資金學(xué)生創(chuàng)客項(xiàng)目(GRCK2015092914140517);深圳市2016年科技計(jì)劃基礎(chǔ)研究項(xiàng)目(JCYJ2016030710153)。
TP39/TP312
A
2017-07-10)