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