李希寧
(桂林廣播電視發(fā)射臺,廣西 桂林 541002)
分布在我國各地的廣播電視無線發(fā)射臺站承擔著覆蓋廣播電視節(jié)目的重要任務。臺站分布點多面廣,有一些建立在偏遠山區(qū),主要任務是確保各地廣播電視信號的優(yōu)質、高效以及安全傳輸。傳統(tǒng)的實地巡查設備運轉情況的方式已經(jīng)無法滿足實際需要,現(xiàn)人們借助移動通信設備可隨時檢查播出系統(tǒng)各方面的運行狀態(tài),實時接收設備運轉信息。為了有效提高通信效率,人們分析了移動通信的現(xiàn)狀,研究了基于移動通信或MQTT的各種通信技術[1-11]。但由于這些研究都是基于某一方面的,其優(yōu)勢不夠明顯。本文將移動通信技術和MQTT協(xié)議結合起來,研究信號采集、音頻解碼編碼、音頻視頻監(jiān)測、遠程設備控制以及監(jiān)測系統(tǒng)的OTA升級等,設計并實現(xiàn)了一套基于移動通信技術和MQTT協(xié)議的廣播電視監(jiān)控系統(tǒng),有效解決了傳統(tǒng)巡檢方式在實際工作中遇到的問題。
系統(tǒng)主要由主服務器和節(jié)點設備兩個部分組成,如圖1所示。

圖1 系統(tǒng)組成
主服務器是監(jiān)測系統(tǒng)的核心,使用SIM7600CE芯片實現(xiàn)基礎信息傳輸功能,負責搜尋移動運營商基站信號并保持網(wǎng)絡連接。主服務器軟件由監(jiān)控數(shù)據(jù)處理程序、Web服務程序、數(shù)據(jù)庫程序及MQTT服務程序等組成。監(jiān)控數(shù)據(jù)處理程序負責監(jiān)控數(shù)據(jù)的分析及處理,并實時回傳數(shù)據(jù),Web服務程序實現(xiàn)監(jiān)控界面的展示,數(shù)據(jù)庫程序用于記錄各節(jié)點的回傳信息,MQTT服務程序實現(xiàn)與節(jié)點設備之間的通信。
節(jié)點設備是監(jiān)測系統(tǒng)分布在各臺站的部分,由遠程控制程序和信息處理程序等組成。遠程控制程序用于執(zhí)行用戶指令,信息處理程序用于采集傳感器的信息。
該系統(tǒng)具有以下4個特點。一是每個節(jié)點都配有單獨的控制板,采用的監(jiān)測傳感器均不影響發(fā)射機和已有設備的運行,二是系統(tǒng)采用的網(wǎng)絡頻點與現(xiàn)有業(yè)務頻率不沖突、不干擾,三是系統(tǒng)采用開源系統(tǒng)+硬件的方案,每個控制節(jié)點的物料成本和總的開發(fā)成本低,四是系統(tǒng)可以回傳數(shù)據(jù),同時支持接收遠程命令,能夠直接建立與高山臺站的無線雙向通信,支持OTA遠程升級,便于各節(jié)點臺站維護。
目前,分布在我國山區(qū)的通信基站(由運營公司維護)可以覆蓋大部分高山臺站,在光纖發(fā)生故障時,使用移動通信技術可以不借助現(xiàn)有回傳光纖便將故障排除。
消息隊列遙測傳輸(Message Queuing Telemetry Transport,MQTT)協(xié)議是近年來由IBM開發(fā)的一個即時通信協(xié)議。其在物聯(lián)網(wǎng)技術上應用非常廣,具有動態(tài)性與耦合特性的通信模型和交互機制及異步、多點通信的特點,可在苛刻的環(huán)境中進行低帶寬、不可靠以及間歇性通信,應用在廣播電視監(jiān)控系統(tǒng)上優(yōu)勢明顯。本系統(tǒng)中,MQTT協(xié)議主要作為實現(xiàn)服務器與客戶端之間的通信。
主服務器的Web服務程序架設采用Flask框架。Flask是用Python語言寫成的輕量級Web框架,可拓展性強,前端渲染模板靈活,可以使用Jin-ja2引擎,呈現(xiàn)效果好。本系統(tǒng)中,F(xiàn)lask主要實現(xiàn)主服務器Web服務程序的基本功能,系統(tǒng)用戶可直接使用Flask渲染的前端頁面訪問主服務器,獲取監(jiān)控數(shù)據(jù)。
節(jié)點設備信息處理程序每隔一段時間采集傳感器數(shù)據(jù),生成固定的數(shù)據(jù)包格式。連接主服務器的MQTT服務程序,將數(shù)據(jù)包發(fā)布到對應訂閱的頻道,然后主服務器調用數(shù)據(jù)庫程序,將接收到的相關數(shù)據(jù)寫入數(shù)據(jù)庫中。使用者使用移動設備瀏覽器訪問主服務器的Web服務程序前端界面,查看數(shù)據(jù),也可以使用POST請求發(fā)出對應的指令。
主服務器工作流程和節(jié)點設備工作流程分別如圖2和圖3所示。主服務器通過獲取客戶端數(shù)據(jù)包記錄到本機數(shù)據(jù)庫,并根據(jù)事件類型判斷是否調用報警程序。節(jié)點設備通過獲取傳感器的數(shù)據(jù),按照設定的條件判斷是否存在異常,如果出現(xiàn)異常則打包數(shù)據(jù)發(fā)送給主服務器。

圖2 主服務器工作流程

圖3 節(jié)點設備工作流程圖
本系統(tǒng)的軟件設計主要包括主服務器的軟件設計和節(jié)點服務器的軟件設計。主服務器的軟件設計主要包括監(jiān)控數(shù)據(jù)通信程序、主服務器MQTT服務程序、主服務器Web服務程序及主服務器數(shù)據(jù)庫程序的設計,節(jié)點服務器的軟件設計包括信息處理程序和遠程控制程序的設計。
主服務器監(jiān)控數(shù)據(jù)通信程序使用Python語言編寫,用于打包和解析主服務器與節(jié)點設備的通信格式。各節(jié)點可使用MQTT協(xié)議的主題和訂閱特性設立不同的主題通信,以減少通信開銷。根據(jù)廣播電視臺站工作經(jīng)驗,本文采用了JSON數(shù)據(jù)格式打包監(jiān)控信息。JSON層次結構簡潔而清晰,是理想的數(shù)據(jù)交換語言,可滿足大部分監(jiān)控信息的需要。既便于人閱讀和編寫,也便于機器解析和生成,有效地提升了網(wǎng)絡的傳輸效率。
主要代碼如下所示:

主服務器MQTT服務程序通過調用MQTT客戶端函數(shù)完成無線通信。MQTT服務器可以比作微信服務器,眾多用戶象是在微信里建立了一個群,節(jié)點設備和主服務器都在群里發(fā)送信息,進行著雙向數(shù)據(jù)傳輸。節(jié)點設備也可以監(jiān)聽對應的頻道,執(zhí)行對應的命令。例如,主服務器在頻道廣播,這時10臺節(jié)點設備都在監(jiān)聽,某地的節(jié)點設備確認是發(fā)給自己的命令后,為其他節(jié)點判斷后無需應答,最后對應的節(jié)點服務器根據(jù)命令使用廣播返回傳感器的數(shù)據(jù)。
主要代碼如下:

Flask構架搭建的http服務可以使用強大的Web前端技術創(chuàng)建GUI界面,支持不同屏幕大小的設備,自適應地配合數(shù)據(jù)庫程序。展示信息的方式十分靈活,修改即時可見。設計的主服務器Web服務程序實際運行后的界面截圖如圖4和圖5所示。

圖4 實際運行界面截圖

圖5 停播/停電事件記錄截圖
主服務器數(shù)據(jù)庫程序主要分監(jiān)控信息處理程序及監(jiān)控信息記錄形成兩個部分。監(jiān)控信息處理部分程序主要負責采集記錄節(jié)點服務器回傳的數(shù)據(jù),通過主服務器的Web服務程序前端展現(xiàn),完成用戶對各監(jiān)控數(shù)據(jù)信息的查詢。監(jiān)控信息部分程序通過回傳信息的級別進行判斷,將重要信息通過MySQL語句寫入數(shù)據(jù)庫。
主服務器數(shù)據(jù)庫程序的主要代碼如下:

節(jié)點設備信息處理程序的主要作用是接收來自主服務器的消息,并生成對應的消息包,實現(xiàn)與主服務器的MQTT服務程序的連接。與主服務器監(jiān)控數(shù)據(jù)通信程序采用一致的JSON數(shù)據(jù)格式。
數(shù)據(jù)包格式如下:
Data:[
事件類型event Type←區(qū)別發(fā)射機的告警或正常回傳
節(jié)點ID node ID←區(qū)別各節(jié)點
時間Date←此段信息的時間
接收設備received←標記接受的服務器
消息級別flag←顯示出此消息的級別(區(qū)分重要程度)
數(shù)據(jù)內容body←內容(可以直接回傳的數(shù)據(jù),或報警信息)]
主服務器遠程控制程序實現(xiàn)系統(tǒng)用戶對節(jié)點設備的遠程控制。主服務器的Web服務由Flask框架創(chuàng)建,在Flask的控制層中有負責接收訪問傳入的URL、參數(shù)以及請求的方法。利用這個特性,本系統(tǒng)定義了用于遠程控制節(jié)點服務器的函數(shù),系統(tǒng)用戶使用POST與Web服務進行交互。主服務器再通過指令下發(fā)模塊發(fā)送指令給節(jié)點服務器,Web服務程序無需客戶端程序,用戶使用移動設備自帶的瀏覽器即可完成遠程控制流程。
節(jié)點設備遠程控制程序主要代碼如下:


本文針對傳統(tǒng)實地巡查設備運轉方式已無法滿足實際需要的情況,將移動通信技術和MQTT協(xié)議結合起來,設計并開發(fā)了一套基于移動通信技術和MQTT協(xié)議的廣播電視監(jiān)控系統(tǒng)。目前該系統(tǒng)已部署在桂林廣播電視發(fā)射臺,作為日常廣播電視監(jiān)控的輔助設備。實際運行過程表明,該系統(tǒng)信息傳輸效率高,工作穩(wěn)定可靠,顯著提高了工作效率。后續(xù)將不斷總結經(jīng)驗,改進程序,更新模塊,不斷優(yōu)化系統(tǒng),進一步增加系統(tǒng)功能,提高系統(tǒng)性能,更好地為廣播電視事業(yè)服務。