消息传输协议MQTT在云起智控智慧照明控制系统中的应用

云起智控物联科技(武汉)有限公司
2022-10-05

 一、引言


 智慧城市照明系统包含大量分布在户外的照明控制器、NB‑IoT单灯终端,设备运行在网络波动、信号不稳定的复杂蜂窝网络环境。传统HTTP短轮询通信模式数据包体积大、带宽消耗高、长连接维持困难,很难满足海量物联网终端双向实时交互的业务需求。MQTT消息队列遥测传输协议是一套面向受限物联网设备的轻量级发布订阅协议,基于TCP/IP网络,具备报文短小、带宽占用低、支持三种消息服务质量等级、遗嘱消息、会话保持等能力,非常适合智慧照明这类大规模分散部署的物联网业务场景。

标准版-1.jpg

 云起智控整套智慧照明控制系统,包括4G集中照明控制器、NB‑IoT单灯控制器全部采用MQTT协议作为端云之间的核心消息传输规范。MQTT消息中间件作为消息中转枢纽,打通嵌入式终端、云端微服务、B/S网页客户端、Android手机APP之间的消息通路,实现设备状态上报、故障告警推送、远程调光指令下发、定时预案同步、OTA升级通知全流程消息交互。本文结合MQTT协议技术原理与云起智控智慧照明项目落地实践,从MQTT协议适配照明业务的核心优势、系统整体通信架构、协议关键机制业务落地、端云消息交互流程、协同配套技术、行业综合价值六个部分展开论述。


 二、MQTT协议适配智慧照明控制系统的核心优势


 智慧照明终端大多部署在城市道路、郊区、隧道,网络环境复杂多变,设备硬件资源有限,同时存在海量设备并发接入的业务压力。MQTT协议相比传统HTTP通信,针对照明场景具备六大突出优势。


 第一,协议报文轻量,网络流量开销低。MQTT固定头部仅2字节,相比HTTP协议大幅减少数据包体积。照明控制器周期性上报电压、电流、光照等采样数据,小报文传输降低4G、NB‑IoT物联网卡流量消耗,大规模城市项目可以显著降低通信资费,同时适配NB‑IoT窄带单灯终端带宽受限的硬件条件。


 第二,发布订阅解耦架构,实现一对多消息分发。终端设备只负责发布数据消息,管理端网页、手机APP订阅对应主题获取消息,设备和客户端不需要直接点对点连接。一台控制器上报故障告警消息,平台、运维手机、GIS地图服务可以同时收到告警通知,一套消息同时供给多个业务模块使用,业务模块之间完全解耦,便于后期功能迭代扩展。


 第三,分级QoS消息服务质量,适配照明多样化业务。协议内置三级消息质量,可以针对不同业务灵活配置。普通周期性传感器采样数据可以使用低等级,允许少量消息丢失;远程开关、调光、故障告警等关键业务使用较高服务等级,保证消息至少送达一次,兼顾通信效率与业务可靠性,适配照明系统不同消息的重要程度。


 第四,遗嘱消息LWT实现设备离线自动感知。终端建立MQTT连接的时候预设遗嘱消息,当设备断电、网络异常非正常断开连接,MQTT消息中间件会自动向外发布该设备离线消息。平台不需要轮询每一台设备状态,就可以实时识别控制器离线故障,及时生成告警,解决海量路灯设备在线状态监测难题。


 第五,会话保持与心跳保活,适配弱网网络环境。支持Keep‑Alive心跳机制与会话持久化,当4G或者NB‑IoT网络短暂抖动断开,设备重连之后可以恢复原有订阅会话,未接收完成的消息会在Broker侧缓存,网络恢复之后继续下发,减少重连之后重复订阅、重复同步参数的开销,适配户外基站检修、信号波动场景。


 第六,协议生态完善,多类型终端统一接入。MQTT属于国际标准物联网协议,4G集中控制器、NB‑IoT单灯控制器都可以采用同一套协议接入平台,不需要为不同通信硬件开发多套私有通信规约,同时兼容阿里云物联网平台,方便对接城市一网统管第三方系统,降低多设备、多平台对接开发成本。


 三、云起智控智慧照明系统MQTT整体通信架构


 整套系统分为终端客户端层、MQTT消息中间件Broker层、云端业务服务层,同时对接电脑Web端与Android移动端,形成完整的消息流转闭环。

f09f2d82ff04ab0b82c91fd82ee4019d.jpeg

 (一)终端MQTT客户端层


 云起智控全系列照明终端作为MQTT客户端,包含4GCat.1多回路集中控制器、NB‑IoT单灯控制器。嵌入式Linux环境运行MQTT客户端SDK,完成连接建立、消息发布订阅。上行方向发布设备采样数据、故障事件、心跳报文;下行订阅属于自身设备的控制主题,接收云端下发开关、调光、定时预案、升级通知指令。设备端支持TLS加密传输,连接的时候携带一机一密设备身份凭证完成接入认证。


 (二)MQTT消息中间件Broker层


 云端部署分布式集群MQTT消息中间件,作为整套系统消息中枢。负责处理千万级设备并发连接,完成身份鉴权、主题路由分发、遗嘱消息触发、消息缓存、ACL访问权限控制。设备上报的所有消息先抵达Broker,再根据主题分发给各个订阅的云端微服务;网页和APP下发的控制指令,同样先发送到Broker,再路由下发到对应的现场照明终端。分布式集群架构消除单点故障,支撑城市级十万级别照明终端同时在线。


 (三)云端业务服务层


 多个微服务作为MQTT的订阅客户端,分别消费不同主题消息。时序数据服务订阅设备遥测主题,把能耗、光照采样数据写入MongoDB数据库;告警服务订阅故障事件主题,识别故障之后推送弹窗、手机告警通知;GIS地图服务订阅设备上下线主题,实时更新地图点位状态;管控业务服务接收管理后台指令,向对应设备控制主题发布控制报文。DMS数据管理系统对接消息数据流,完成数据清洗、统计与治理。


 (四)管理客户端层


 B/S网页管理端、Android手机APP同样作为MQTT订阅客户端,订阅设备状态、告警主题,实时展示设备在线状态、故障信息;用户在界面执行全开、半亮、调光操作,客户端向Broker发布控制消息,经由中间件下发到现场控制器,实现端‑云‑管理端完整双向交互。


 四、MQTT关键协议机制在智慧照明业务中的落地实现


 (一)分级主题Topic设计


 系统采用标准化分层主题命名规则,区分遥测上报、事件告警、指令控制、配置下发、OTA通知五大类主题,每一台设备拥有独立的主题集合。


 设备上行发布主题包含遥测数据主题用于周期性上报电压电流能耗;事件主题用于上报短路、断路等突发故障事件;状态主题上报设备在线离线状态。


 设备下行订阅主题包含控制主题接收开关调光指令;配置主题接收节假日、经纬度定时预案;通知主题接收固件升级提醒。


 平台使用通配符完成批量订阅,接收全部设备上报消息;每一台设备仅订阅属于自身ID的下行主题,避免收到其他设备无关消息,同时配合ACL访问控制,设备只能发布自身设备的上行主题,不能向其他设备控制主题发布消息,提升系统安全隔离能力。


 (二)QoS服务质量分级应用


 云起智控根据智慧照明业务重要程度,合理选用MQTT三级服务质量。


 QoS0用于普通周期性遥测采样数据,比如每分钟上报的电压、光照数值,允许极个别报文丢失,下一个周期会重新上报,追求低流量高传输效率,大量减少网络开销。


 QoS1用于故障告警、远程开关调光、定时预案下发这类关键业务,保证消息至少送达一次。照明系统控制路灯开关属于关键操作,保障指令可以抵达现场控制器,就算网络短暂波动也不会丢失告警与控制指令。


 QoS2极少使用,仅用于极少数不允许重复执行的特殊业务,避免高等级协议带来额外流量开销。


 (三)遗嘱消息LWT实现设备离线告警


 每一台照明终端建立MQTT连接时,预先配置遗嘱消息与对应的离线主题。当设备正常断电维护,终端会主动发送DISCONNECT断开报文,中间件直接丢弃遗嘱消息;如果现场设备停电、4G/NB‑IoT信号中断、模组死机属于非正常断开,Broker检测连接失效,自动发布预设离线消息。告警服务订阅该离线主题,收到消息立刻生成设备离线告警,GIS地图点位同步置为灰色离线状态,运维人员及时收到通知,不用依靠轮询扫描海量设备,大幅降低服务器算力消耗。


 (四)心跳保活与会话持久化机制


 根据4G与NB‑IoT不同网络特性配置心跳Keep‑Alive间隔。4G集中控制器心跳间隔设置60秒;NB‑IoT单灯终端兼顾低功耗,心跳间隔设置更长。当网络短暂断开,设备重连MQTTBroker,启用会话持久化,重连之后自动恢复原有主题订阅,Broker把断开期间缓存的下行控制、配置消息下发给终端,不需要重新全量同步定时预案参数,提升弱网环境下业务连续性。


 (五)TLS加密与设备身份鉴权


 MQTT连接不使用明文传输,全部启用TLS加密隧道。设备发起连接请求时提交设备唯一账号密钥,Broker完成一机一密身份校验,非法仿制终端直接拒绝建立连接。同时启用ACL访问控制列表,限制每一台设备只能发布和订阅自身所属主题,防止一台设备冒充身份篡改其他设备控制消息,保障市政照明基础设施通信安全。


 五、MQTT与整套智慧照明系统软硬件协同工作流程

智慧平台.jpg

 (一)完整消息交互闭环流程


 设备上电之后,4G/NB‑IoT模组完成网络附着,嵌入式客户端发起MQTT连接,携带设备密钥完成鉴权,订阅下行控制、配置主题,同时设置遗嘱消息。


 上行流程:控制器采集回路电压电流、光照数据,按照周期发布遥测主题;检测故障事件立刻发布事件告警主题。Broker转发消息给各个云端微服务,分别完成存储、告警推送、地图状态更新。


 下行流程:管理人员在网页或者手机APP下发调光开关指令,管理客户端发布控制主题,Broker路由下发到目标设备。终端收到MQTT报文解析之后执行继电器动作,并且把执行结果作为状态消息重新上报上行主题,平台收到执行反馈之后更新页面状态,形成“指令下发‑设备执行‑结果回传”完整闭环,避免平台显示操作成功,现场设备没有动作的问题。


 (二)MQTT和边缘离线运行机制协同


 MQTT负责云端和终端之间消息交互,但是不取代设备本地边缘计算。当4G、NB‑IoT网络完全中断,MQTT连接断开,照明控制器不依赖云端消息,依靠本地Flash保存的定时预案、经纬度策略独立完成亮灯调光。网络恢复MQTT重连之后,把断网期间缓存的故障、能耗数据批量发布上报给平台,实现云端消息交互与本地脱机运行互相补充。


 (三)适配两类不同通信硬件终端


 对于4GCat.1集中控制器,MQTT长连接持续在线,支持高频消息交互;对于NB‑IoT单灯终端,模组存在PSM深度休眠模式,MQTT客户端间歇唤醒,业务以周期上报为主,大批量预案配置优先在休眠唤醒窗口期下发,避开深度休眠不可达的时间,充分适配窄带物联网终端通信特征。


 六、MQTT协议在智慧照明项目落地综合行业价值


 (一)降低物联网通信流量成本,适配海量终端接入


 MQTT轻量报文特性,相比HTTP轮询模式显著减少4G、NB‑IoT终端数据流量。城市级几万台照明终端大规模部署,能够有效降低物联网卡资费开销;分布式MQTTBroker集群可以支撑十万级别设备同时长连接,满足大型城市全域智慧照明项目接入需求。


 (二)弱网环境下提升整套系统可靠性


 依靠心跳保活、会话缓存、遗嘱消息等协议原生能力,适配户外路灯复杂蜂窝网络环境。可以快速识别设备断电离线故障,故障告警消息优先保障送达,就算出现基站临时检修网络抖动,重连之后可以恢复会话,减少设备异常失联带来的管控风险,保障城市夜间照明安全。


 (三)发布订阅解耦架构便于系统迭代升级


 发布订阅模式把设备、存储、告警、GIS、前端界面完全解耦。后期新增能耗分析、人车联动、设备老化预判等新业务,只需要新增对应的订阅消费服务,不需要修改终端设备通信逻辑。设备固件不需要重新烧录,平台侧新增业务模块即可实现功能拓展,降低后期系统迭代改造成本。


 (四)统一通信规约,实现多终端兼容接入


 4G集中控制器、NB‑IoT单灯控制器采用同一套MQTT协议接入平台,不用针对不同硬件开发私有通信协议。标准化协议同时便于对接城市一网统管平台,第三方系统只需要订阅指定MQTT主题,即可获取照明设备状态与告警数据,打通智慧城市基础设施数据孤岛。


 (五)完善安全机制保障市政基础设施通信安全


 结合TLS传输加密、设备一机一密鉴权、ACL主题访问控制,从连接、报文、消息权限多个层面建立安全屏障,抵御伪造终端接入、指令劫持篡改风险,符合市政物联网设备安全认证与等保相关规范。


 七、总结


 MQTT轻量级发布订阅消息协议是云起智控智慧照明控制系统端云交互的核心通信底座。依托报文精简、分级QoS服务质量、遗嘱消息、心跳会话保持、主题发布订阅等协议原生能力,构建“终端‑MQTT消息中间件‑云端微服务‑管理客户端”完整消息流转闭环。协议可以同时适配4G集中控制器与NB‑IoT单灯两类不同硬件终端,兼顾远程指令下发、故障告警上报、周期性数据采集多样化业务,同时和设备本地边缘离线运行能力互相配合。

产品宣传画报 800.jpg


 在智慧城市照明大规模物联网建设背景下,MQTT协议有效解决户外弱网环境海量终端通信流量高、连接不稳定、设备状态难感知的行业痛点,实现设备、平台、管理端之间高效可靠双向消息交互。标准化协议带来良好的扩展性与兼容性,支撑智慧照明系统持续迭代,为城市路灯、景观亮化的数字化管控提供稳定可靠的消息传输技术支撑。


分享