张玉杰 张海涛 刘丽
摘 要:针对目前国内城市景观照明系统中存在的以单体建筑照明为主、管理分散,难以实现大型景观照明系统的同步控制以及花样远程更新的不足,提出了一种基于云平台的城市景观照明控制系统。该系统采用多层控制模式,利用MQTT发布订阅的优势,将不同区域的景区照明系统接入云平台进行组网,并结合MQTT通信和网络时间同步特性,实现了系统的同步控制和故障监测,采用FTP协议实现了花样文件的远程更新。该系统能够满足景观照明系统统一管理的需求,为城市级景观照明系统提供了可借鉴的方案。
关键词:城市景观照明系统;组网;MQTT;SNTP;FTP
中图分类号:TP273;TN915 文献标识码:A 文章编号:2095-1302(2018)01-00-04
0 引 言
随着城市化规模的扩大和品质要求的提升,景观照明范围和灯具数量逐渐增加,因此将景观照明进行有效控制、统一管理尤为重要[1]。目前城市景观照明存在的问题有:国内景观照明应用多以单体建筑照明系统为主,缺乏城市级景观照明的同步控制和统一管理;由于分散管理等原因,对于景观照明系统中的故障设备,无法得到及时有效的维护和处理;为了展现城市整体形象和局部区域特色,常需要对几个街区或区域的景观照明进行同时或联动展示,并且景观照明的花样可以根据不同的需要随时修改和更新[2]。
为满足城市级景观照明系统统一管理、故障信息实时获取、联动控制以及远程花样更新的需求,需要设计一种能够实现大规模、同步控制、可扩展性强的景观照明控制系统。消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议的发布订阅模型是一种实现了一对多、多对多的松耦合异步通信模式,突破了C/S架构请求/应答通信机制存在的同步、紧耦合、点对点等局限,可满足系统的通信需求。
本文针对景观照明系统的需求,提出了基于云平台的景观照明系统,在充分利用MQTT发布订阅模型优势的基础上,结合网络时间同步和网络文件传输服务,实现了景观照明系统的远程控制与管理,系统照明花样、图案等文件的远程更新,同步控制区域协调展示等功能,为城市级景观照明控制和管理提出了可借鉴的方案。
1 系统总体设计方案
结合目前城市景观照明系统的发展需求,本文设计的景观照明系统具有如下运作模式和特点:
(1)各景区单体照明系统既受控于本系统的监控中心,还将受控于城市级景观照明系统;
(2)城市级景观照明系统利用MQTT发布订阅模型传输控制信息,结合网络时间同步,确保城市景观照明系统的同步协调控制;
(3)城市级景观照明系统增加了网络文件服务,通过城市级景观照明监控中心实现大型景观照明花样的远程更新,减少了原有人工拷贝手动更新花样列表的工作量;
(4)城市景观照明系统利用MQTT发布订阅模型的优势,实现了故障信息向景区负责人员、城市级管理员、厂商维护人员等多方的实时推送,确保故障设备的及时发现和维护。
城市景观照明系统采用多层控制模式,其网络拓扑结构如图1所示,由城市级管理层、网络通信层、景区层、景点层等组成。
该城市级景观照明系统在保留景区照明系统监控中心原有功能的基础上,增加了MQTT通信服务,通过云平台实现了城市级景观照明系统的快速组网,并增加了网络时间同步服务和文件传输服务,从而实现了城市级景观照明系统的同步协调控制、花样远程更新以及故障监测。
(1)城市级管理层作为整个城市景观照明系统的监管中心,完成实现对整个照明系统的远程控制、管理和维护;
(2)网络通信层作为景观照明系统数据的存储中心以及数据传输的枢纽,可提供MQTT通信服务、文件传输服务、时间同步服务和数据分析、存储服务;
(3)景区层以下作为景区照明系统的监控中心,向上通过网络通信层与城市及照明管理层连接,是整个城市照明系统骨干网络的重要组成部分。
2 云平台接入与MQTT通信主题设计
2.1 云平台接入方案设计
云平台作为网络通信层的重要组成部分,是城市级管理层和景区层的通信桥梁。根据系统功能需求分析,云平台可提供用户信息管理、数据存储、MQTT通信及文件传输等服务。
云平台采用资源定位的方式设计,结合数据库实现对用户和灯具设备资源的存储和管理。采用Rest风格的Web服务对用户注册、数据管理等业务进行接口封装,通过URL描述终端,以HTTP常用操作POST、GET、DELETE、PUT等方法实现对数据库资源的CURD(增删改查)等功能[3]。通过部署Apache Apollo服务器(MQTT服务器),提供MQTT消息代理服务。FTP服务器采用Server-U软件进行配置。
监控中心(城市级监控中心和景区监控中心)的云平台接入包含以下几个步骤:
(1)监控中心信息注册。通过用户登录界面进行监控中心的信息注册,完成监控中心信息在云平台数据库中的创建。新的监控中心在注册时通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)访问云平台的接口,将监控中心的用户名和密码发送到云端数据库,完成注册。
(2)MQTT通信服务接入。监控中心注册成功后,通过HTTP协议访问云平台的接口,获取MQTT代理服务器的接入口令,验证通过后连接到MQTT代理服务器[4]。
(3)文件传输协议(File Transfer Protocol,FTP)传输服务接入。监控中心在连接文件服务器之前,通过HTTP协议访问云平台的接口,获取文件服务器授权的账号和域名,连接FTP文件服務器[5]。
2.2 MQTT通信主题设计
MQTT通信作为实现城市级管理层与景区层监控中心应用数据交互的核心,基于消息主题号建立数据交互的通道。针对景观照明系统运行模式的需求,将主题号分为私有主题号、组主题号和广播主题号三种类型。主题号的定义见表1所列。
私有主题号以各景区监控中心的用户名UserName命名,以确保各景区节点主题号的唯一性。当景观照明系统中的城市级监控中心需要对单个景区进行远程控制时,通过主题号“UserName\in”发送控制命令;当子景区监控中心需要进行命令回复或检测到景区子系统出现故障时,以主题号“UserName\out”向城市级监控中心发送回复信息或故障信息。
分组主题号用于实现景观照明系统的编组控制。针对某些场景效果,可能需要若干个节点端共同配合实现一个花样效果,在布置景观照明系统时,将需要进行编组控制的子景区合并成一个分组,以组号Group_ID作为组主题号,分组中的所有景区监控中心订阅该组主题号,城市级监控中心通过组主题号发布控制命令,实现对照明系统中景区的编组控制。
广播主题号用于实现对景观照明系统的整体控制。系统中所有的景区监控中心统一订阅“broadcast”广播主题号,当景观照明系统中需要进行整体定时开、关灯操作或整体联动时,城市级监控中心通过广播主题号发布控制命令,实现对整个景观照明系统的整体控制。
3 系统主要功能实现
3.1 同步控制功能实现
系统的同步控制是基于网络时间同步和MQTT通信实现的,网络时间同步可确保各节点端监控中心时间保持一致,保证不同区域的景观照明系统同时响应总控端的控制命令。MQTT通信可确保城市级监控中心到各景区监控中心一对多控制命令的下发。
3.1.1 网络时间同步
本设计中采用简单网络时间协议(Simple Network Time Protocol,SNTP)结合PC机内置的RTC时钟实现各景区监控中心的网络时间同步。
SNTP协议支持单播、多播和广播工作模式,本设计中选用单播模式。当各景区监控中心收到城市级监控中心广播的对时命令时,SNTP客户端与NTP服务器建立UDP连接,利用客户端发送请求时的时间戳T1,服务器接收到请求时的时间戳T2,服务器发送回复时的时间戳T3,客户端接收到回复的时间戳T4。计算客户端与服务器之间的时间偏差值:((T2-T1)+(T3-T4))/2,网络延时时间:(T2-T1)+(T4-T3)。根据偏差值校正本地的RTC时钟[6]。部分实现代码如下:
try
{
client = new UdpClient();
IPEndPoint ipEndPoint = _TimeServer.GetIPEndPoint();
client.Client.SendTimeout = _TimeOut * 1000;
client.Client.ReceiveTimeout = _TimeOut * 1000;
client.Connect(ipEndPoint);
client.Send(Request, byteCount);
byte[] received = client.Receive(ref ipEndPoint);
if (received.Length >= byteCount && ((received[0] & modeMask) == modeServer))
…
}
3.1.2 MQTT通信实现
M2Mqtt是一個适用于.NET平台以及WinRT平台的MQTT客户端开源项目。该MQTT客户端库使用C#语言开发,可连接任意MQTT代理服务器[7]。本系统中作为MQTT客户端的总控端和节点端正是基于M2Mqtt库开发的。
MQTT通信实现包含MQTT服务器连接、心跳管理、订阅主题、取消订阅、发布消息以及接收消息等完整的MQTT通信机制[8]。MQTT通信流程如图2所示。
3.2 花样远程更新功能实现
FTP是一种基于C/S架构的TCP/IP的应用层协议之一,用于实现计算机之间的文件传输。景观照明系统的花样远程更新采用FTP协议和MQTT通信实现,包括三个环节,即花样文件上传,花样更新消息通知,花样下载。
花样文件上传由城市级监控中心作为FTP客户端,利用FTP协议将花样文件上传至云端的FTP服务器[9]。上传文件时,首先使用OpenFileDailog()打开对话框,选择需要上传的花样文件并获取文件句柄,通过FileInfo()获取文件大小等具体信息,以分配缓存区。准备就绪后调用CreatFtpWebRequest ()将文件上传到服务器,文件上传结束后,关闭文件传输的通道,调用GetFileList()获取文件列表,继而刷新文件列表。
花样更新消息通过建立的MQTT通道传输消息,并根据景观照明效果的需求,将花样更新的通知消息按照各景区单播、组播或广播主题号下发到对应的景区监控中心,消息内容为已上传花样文件的相关信息。
花样下载由各景区监控中心作为FTP客户端访问云端FTP服务器,完成花样文件的下载。景区监控中心根据接收的城市级监控中心发送的花样更新消息,提取相关花样文件的信息,调用ShowFtpFileAndDirectory()获取服务器上的文件目录,选中要下载的文件,调用CreatFtpWebRequest()从服务器上下载文件[10]。
3.3 故障信息推送功能实现
景观照明系统的故障信息推送功能基于MQTT通信实现。城市级管理层所有用户需订阅所有子景区监控中心发布消息的单播主题号。子景区监控中心周期性查询子景区范围内各景点的灯具状态,当检测到灯具出现故障时,景区监控中心以主题号“UserName\out”发布故障信息,云平台中的代理服务器完成故障信息向城市级管理层多个用户的推送,能够及时获取设备的故障信息,方便及时维护和处理[11]。
4 系统测试
通过搭建测试平台对城市景观照明系统的功能进行测试,主要包括同步协调控制、花样更新以及故障监测等功能的实现。测试系统由1台安装有城市级监控中心软件的PC机、2台安装有子景区监控中心软件的PC机、2个包含控制器和调光驱动器的子灯具照明系统组成。城市照明管理系统的界面如图3所示,花样控制效果如图4所示。
经测试,该景观照明系统可以实现城市级监控中心对各景区监控中心对应灯具控制系统的同步控制、花样远程更新以及故障监测,系统运行稳定,达到了预期的效果。
5 结 语
本文提出了基于云平台的景观照明系统,通过对各景区监控中心的软件进行升级,增加MQTT客户端程序、FTP客户端程序以及SNTP客户端程序,将各景区监控中心接入云平台实现景观照明系统的快速组网,借助云平台提供的MQTT通信服务、文件传输服务,实现了城市景观照明系统的同步协调控制、花样更新以及故障监测等功能。经测试,该方法稳定可靠,满足了城市景观照明系统统一管理、灵活控制的需求,具有较好的前景和实际应用价值。
参考文献
[1]刘廷章,王健,杨晓.基于Web的城市景观照明远程监控技术研究[J].电气应用,2009,28(3): 32-35.
[2]张玉杰,周洁,邱金妮.LED景观照明系统设计与实现[J].电子器件,2017,40(1):262-266.
[3]周兰凤,孟驰,彭俊杰. 一种基于云环境的文件存储策略的研究[J].计算机工程与科学,2016,38(2):262-268.
[4]许金喜,张新有.Android平台基于MQTT协议的推送机制[J].计算机系统应用,2015,24(1):185-190.
[5]王占军,王伟,赵志刚.基于FTP协议的文件传输组件设计与实现[J].沈阳师范大学学报(自然科学版),2012,30(3):375-377.
[6]胡巨,高新华.SNT对时方式在数字化变电站中应用[J]. 电力自动化设备,2009,29(3):143-145.
[7]溫彬民.一种基于自适应心跳机制的MQTT通信协议的研究与应用[D].广州:华南理工大学,2015.
[8] Collina M, Corazza G E,Vacelli-Coralli A, Introducing the QEST broker: Scaling the IoT by bridging MQTT and REST[C].2012 IEEE 23rd International Symposium on Personal Indoor and Mobile Radio Communications (PIMRC), 2012:36-41.
[9] Cai Bin.Formalized Description and Analysis of FTP on Petri Net[C].2015 International Conference on Intelligent Information Hiding and Multimedia Signal Processing (IIH-MSP).IEEE, 2015:1135-1139.
[10]罗迁.嵌入式家庭信息中心研究与设计[D].北京:北京邮电大学,2015.
[11]彭可,冯准,郑怀鹏,等.城市LED照明系统远程监控平台设计与开发[J].计算机测量与控制, 2016,24(9):103-106.