基于移动通信和MQTT协议的广播电视监控系统的设计与实现
2020-04-26李希宁
李希宁
(桂林广播电视发射台,广西 桂林 541002)
0 引 言
分布在我国各地的广播电视无线发射台站承担着覆盖广播电视节目的重要任务。台站分布点多面广,有一些建立在偏远山区,主要任务是确保各地广播电视信号的优质、高效以及安全传输。传统的实地巡查设备运转情况的方式已经无法满足实际需要,现人们借助移动通信设备可随时检查播出系统各方面的运行状态,实时接收设备运转信息。为了有效提高通信效率,人们分析了移动通信的现状,研究了基于移动通信或MQTT的各种通信技术[1-11]。但由于这些研究都是基于某一方面的,其优势不够明显。本文将移动通信技术和MQTT协议结合起来,研究信号采集、音频解码编码、音频视频监测、远程设备控制以及监测系统的OTA升级等,设计并实现了一套基于移动通信技术和MQTT协议的广播电视监控系统,有效解决了传统巡检方式在实际工作中遇到的问题。
1 系统组成
系统主要由主服务器和节点设备两个部分组成,如图1所示。
图1 系统组成
1.1 主服务器的功能及组成
主服务器是监测系统的核心,使用SIM7600CE芯片实现基础信息传输功能,负责搜寻移动运营商基站信号并保持网络连接。主服务器软件由监控数据处理程序、Web服务程序、数据库程序及MQTT服务程序等组成。监控数据处理程序负责监控数据的分析及处理,并实时回传数据,Web服务程序实现监控界面的展示,数据库程序用于记录各节点的回传信息,MQTT服务程序实现与节点设备之间的通信。
1.2 节点设备的功能及组成
节点设备是监测系统分布在各台站的部分,由远程控制程序和信息处理程序等组成。远程控制程序用于执行用户指令,信息处理程序用于采集传感器的信息。
该系统具有以下4个特点。一是每个节点都配有单独的控制板,采用的监测传感器均不影响发射机和已有设备的运行,二是系统采用的网络频点与现有业务频率不冲突、不干扰,三是系统采用开源系统+硬件的方案,每个控制节点的物料成本和总的开发成本低,四是系统可以回传数据,同时支持接收远程命令,能够直接建立与高山台站的无线双向通信,支持OTA远程升级,便于各节点台站维护。
2 系统采用的主要技术
2.1 移动网络通信技术
目前,分布在我国山区的通信基站(由运营公司维护)可以覆盖大部分高山台站,在光纤发生故障时,使用移动通信技术可以不借助现有回传光纤便将故障排除。
2.2 MQTT协议
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议是近年来由IBM开发的一个即时通信协议。其在物联网技术上应用非常广,具有动态性与耦合特性的通信模型和交互机制及异步、多点通信的特点,可在苛刻的环境中进行低带宽、不可靠以及间歇性通信,应用在广播电视监控系统上优势明显。本系统中,MQTT协议主要作为实现服务器与客户端之间的通信。
2.3 Flask框架
主服务器的Web服务程序架设采用Flask框架。Flask是用Python语言写成的轻量级Web框架,可拓展性强,前端渲染模板灵活,可以使用Jin-ja2引擎,呈现效果好。本系统中,Flask主要实现主服务器Web服务程序的基本功能,系统用户可直接使用Flask渲染的前端页面访问主服务器,获取监控数据。
3 系统的工作流程
节点设备信息处理程序每隔一段时间采集传感器数据,生成固定的数据包格式。连接主服务器的MQTT服务程序,将数据包发布到对应订阅的频道,然后主服务器调用数据库程序,将接收到的相关数据写入数据库中。使用者使用移动设备浏览器访问主服务器的Web服务程序前端界面,查看数据,也可以使用POST请求发出对应的指令。
主服务器工作流程和节点设备工作流程分别如图2和图3所示。主服务器通过获取客户端数据包记录到本机数据库,并根据事件类型判断是否调用报警程序。节点设备通过获取传感器的数据,按照设定的条件判断是否存在异常,如果出现异常则打包数据发送给主服务器。
图2 主服务器工作流程
图3 节点设备工作流程图
4 系统软件设计
本系统的软件设计主要包括主服务器的软件设计和节点服务器的软件设计。主服务器的软件设计主要包括监控数据通信程序、主服务器MQTT服务程序、主服务器Web服务程序及主服务器数据库程序的设计,节点服务器的软件设计包括信息处理程序和远程控制程序的设计。
4.1 主服务器监控数据通信程序的设计
主服务器监控数据通信程序使用Python语言编写,用于打包和解析主服务器与节点设备的通信格式。各节点可使用MQTT协议的主题和订阅特性设立不同的主题通信,以减少通信开销。根据广播电视台站工作经验,本文采用了JSON数据格式打包监控信息。JSON层次结构简洁而清晰,是理想的数据交换语言,可满足大部分监控信息的需要。既便于人阅读和编写,也便于机器解析和生成,有效地提升了网络的传输效率。
主要代码如下所示:
4.2 主服务器MQTT服务程序的设计
主服务器MQTT服务程序通过调用MQTT客户端函数完成无线通信。MQTT服务器可以比作微信服务器,众多用户象是在微信里建立了一个群,节点设备和主服务器都在群里发送信息,进行着双向数据传输。节点设备也可以监听对应的频道,执行对应的命令。例如,主服务器在频道广播,这时10台节点设备都在监听,某地的节点设备确认是发给自己的命令后,为其他节点判断后无需应答,最后对应的节点服务器根据命令使用广播返回传感器的数据。
主要代码如下:
4.3 主服务器Web服务程序界面模块的设计
Flask构架搭建的http服务可以使用强大的Web前端技术创建GUI界面,支持不同屏幕大小的设备,自适应地配合数据库程序。展示信息的方式十分灵活,修改即时可见。设计的主服务器Web服务程序实际运行后的界面截图如图4和图5所示。
图4 实际运行界面截图
图5 停播/停电事件记录截图
4.4 主服务器数据库程序
主服务器数据库程序主要分监控信息处理程序及监控信息记录形成两个部分。监控信息处理部分程序主要负责采集记录节点服务器回传的数据,通过主服务器的Web服务程序前端展现,完成用户对各监控数据信息的查询。监控信息部分程序通过回传信息的级别进行判断,将重要信息通过MySQL语句写入数据库。
主服务器数据库程序的主要代码如下:
4.5 节点设备信息处理程序
节点设备信息处理程序的主要作用是接收来自主服务器的消息,并生成对应的消息包,实现与主服务器的MQTT服务程序的连接。与主服务器监控数据通信程序采用一致的JSON数据格式。
数据包格式如下:
Data:[
事件类型event Type←区别发射机的告警或正常回传
节点ID node ID←区别各节点
时间Date←此段信息的时间
接收设备received←标记接受的服务器
消息级别flag←显示出此消息的级别(区分重要程度)
数据内容body←内容(可以直接回传的数据,或报警信息)]
4.6 节点设备远程控制程序的设计
主服务器远程控制程序实现系统用户对节点设备的远程控制。主服务器的Web服务由Flask框架创建,在Flask的控制层中有负责接收访问传入的URL、参数以及请求的方法。利用这个特性,本系统定义了用于远程控制节点服务器的函数,系统用户使用POST与Web服务进行交互。主服务器再通过指令下发模块发送指令给节点服务器,Web服务程序无需客户端程序,用户使用移动设备自带的浏览器即可完成远程控制流程。
节点设备远程控制程序主要代码如下:
5 结 论
本文针对传统实地巡查设备运转方式已无法满足实际需要的情况,将移动通信技术和MQTT协议结合起来,设计并开发了一套基于移动通信技术和MQTT协议的广播电视监控系统。目前该系统已部署在桂林广播电视发射台,作为日常广播电视监控的辅助设备。实际运行过程表明,该系统信息传输效率高,工作稳定可靠,显著提高了工作效率。后续将不断总结经验,改进程序,更新模块,不断优化系统,进一步增加系统功能,提高系统性能,更好地为广播电视事业服务。