基于MQTT协议与开源硬件的智能监控系统
陈建刚;黄国伟;刘星明;丘晓彬;李子贤
【摘 要】实现一种采用MQTT协议、通过安卓/iOS APP对基于开源硬件-WRTnode的移动智能监控设备(如智能设备,机器人等)进行远程控制的方案.采用开源MQTT服务器框架-mosquitto作为MQTT broker,通过APP发布控制指令主题,监控设备订阅该主题并根据控制指令执行操作,监控设备发布需要上报的监控数据主题,APP订阅该主题后将接收到监控数据.通过双向的发布-订阅模式,实现多功能智能监控过程.%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.
【期刊名称】开源mqtt服务器《单片机与嵌入式系统应用》
【年(卷),期】2017(017)010
【总页数】3页(P59-61)
【关键词】WRTnode;MQTT;发布-订阅;监控设备
【作 者】陈建刚;黄国伟;刘星明;丘晓彬;李子贤
【作者单位】深圳信息职业技术学院 计算机学院,深圳 518172;深圳信息职业技术学院 计算机学院,深圳 518172;深圳信息职业技术学院 计算机学院,深圳 518172;深圳信息职业技术学院 计算机学院,深圳 518172;深圳信息职业技术学院 计算机学院,深圳 518172
【正文语种】中 文
【中图分类】TP39;TP312
当前市面上的智能监控大都是固定式放置,监测方式为摄像头的视频监控和移动侦测,监
控手段较单一,不能满足移动安防应用需求,尤其是在厂矿、商场等大型空旷场所。本文通过在移动设备上设计多功能监控方式,包括移动侦测、检测到覆盖区域有WiFi探针信号、人体红外感应等,从而比已有设备监控手段更丰富、更实用。另外,还可将MQTT运用于多功能监控设备,实现智能手机APP与移动监控设备的远程双向通信过程。
通过在购买的WiFi设备的基础上实现多功能智能监控设备[7],设备结构如图1所示,硬件部分由WRTnode[8]主控板、视频监控摄像头及云台、Arduino单片机及扩展板、无线充电模块、设备控制模块、传感器数据采集模块所组成。实现的监控功能包括:
① 视频监控/移动侦测。通过WRTnode的mjpg-streamer软件包实现视频监控功能,将摄像头产生的帧通过其output_file模块发布出去。通过motion软件包实现移动侦测功能,当监控设备处于静止状态,摄像头检测到移动物体时生成图片。
② WiFi探针。在WRTnode中移植开源无线驱动,通过iwcap软件包提取移动终端主动发出的WiFi探针信号中的mac地址和信号强度(RSSI)。这样,若有人携带手机并开启了WiFi功能,就能被监控设备探测到,生成WiFi探针报警消息。
③ 红外热释电感应。通过Arduino外接人体红外热释电传感器,人体靠近时触发感应,生成红外热释电报警消息。
通过上述多种不同类型的监控方式,增加监控的准确度。另外设备还可以搭建温湿度传感器,用来检测环境的温湿度数据。设计的监控设备实物图如图2所示。
上述监控方式产生的监测数据通过MQTT协议推送消息给监控设备的用户手机。MQTT协议定义完善的通信方式,包括QoS、安全认证等,用户只需专注于应用实现。由于采用发布-订阅模式,数据分发方式多样化,可以是一对一或一对多等, 相比请求-响应模式,更能满足物联网应用需求,如监控数据可以上报给多个订阅的用户。主题(topic)是MQTT用来标识已发布消息的信息渠道,采用分层结构,用斜线“/”作为分隔符。定义了两种通配符:“#”和“+”, “#”通配多层结构,而“+”只能通配一层结构。
采用MQTT的多功能监控系统交互过程如图3所示,实现了与监控设备配套的手机APP,主要功能包括控制设备移动和接收监控数据等,在阿里云上采用开源Mosquitto搭建MQTT broker,作为手机APP与监控设备之间发布-订阅控制指令及上传监控数据的中间件。手机APP和监控设备作为MQTT客户端,都先与MQTT broker建立连接, 手机APP将控制指令
发布到指定主题,监控设备订阅相应主题以获得控制指令,并根据指令执行操作。而监控设备产生的监控数据同样发布到指定主题,手机APP则订阅该主题获得监控数据。
Mosquitto通过订阅树机制管理所有主题及客户端对主题的订阅关系[9] ,订阅树采用二叉树结构,使用孩子兄弟链表法进行二叉树节点存储,Mosquitto根据MQTT协议所定义的主题格式,将主题根据“/”分割并组织成一棵二叉树,从根节点沿着连线到树中的任意一节点即组成该节点所对应的主题,每个节点都保存一个订阅列表,该订阅列表中保存了所有订阅当前主题的客户端信息。
监控设备启动后即订阅由APP发布的控制指令主题,控制指令内容需要包含控制的功能模块及执行动作,如对于控制设备行径,控制功能模块名称为设备,执行动作为前/后/左/右/停。另外考虑到设备和APP的绑定关系,控制指令中需要带有设备标识,用于区分控制不同的设备,由于设备的主控板WRTnode为智能无线路由设备,需要通过WiFi中继到上级路由(上级路由可为无线AP,如家居的无线网关,在野外使用时可配带4G路由作为上级路由),WRTnode的BSSID各不同,采用各设备的BSSID作为设备标识。因而APP控制指令的内容为:设备标识->功能模块->动作。所定义的具体控制指令内容如图4所示。对应的功能模块含义如表1所列。
由于用户发布的控制指令针对的订阅者(监控设备)是唯一的,为降低MQTT broker维护订阅树的开销,从APP到监控设备的发布-订阅过程采用以BSSID倒序值为主题,将功能模块及执行动作为对应主题的消息体(payload),消息体以json格式组织,方便后续功能扩展。
如开启移动侦测功能,消息体内容为:
{"model":"Motion","action":"on"}
操作APP界面中对应按钮将通过MQTT协议组织上述消息内容发布出相应控制指令。
采用Mosquitto的openwrt版本在主控板WRTnode实现MQTT客户端功能,订阅APP发布的主题,解析payload内容,根据消息体中的功能模块和动作执行操作,如开启移动侦测功能等。WRTnode执行订阅控制指令主题的命令为:
mosquitto_sub-t BSSID倒序值-h MQTT broker 的IP地址
对于有数据上报的功能模块,包括温湿度上报、WiFi探针探测到的mac地址和RSSI,移动侦测产生的图片、视频监控的画面等。设备需要将生成的监控等数据进行发布,仍然采用
发布-订阅模式,设备发布的主题为BSSID/功能模块,消息体内容为需要上报的数据。WRTnode执行发布数据主题的命令为:
mosquitto_pub-t BSSID/功能模块-h MQTT broker的IP地址-m 上报的数据内容
MQTT broker 的Mosquitto根据设备发布的主题消息,根据“/”分割成主题片段,沿着订阅树的二叉树结构检测各主题片段是否存在,若不存在则创建节点存放该主题片段。
APP在发布有数据上报的功能模块的控制指令时,同时订阅该控制指令所对应的主题——BSSID/功能模块,如开启移动侦测功能则订阅主题为:BSSID/Motion。MQTT broker 的Mosquitto在收到订阅请求后,根据主题将该客户端挂到订阅树上对应节点的订阅列表中,若不存在客户端所订阅的主题,则会自动添加相应节点,最终创建的订阅树如图5所示。
实现的APP控制界面功能如图6所示,用户点击界面中各控制按钮发布主题为BSSID倒序值,参数为功能模块+动作的控制指令,设备收到指令后执行对应操作。对于需要上报数据的指令,设备发布BSSID/功能模块,参数为上报数据的消息,通过MQTT broker中转后推送在手机的消息栏,用户可以查看监控数据。另外,点击“远程监控”将打开设备的摄像头并
订阅摄像头图片主题,接收到图片后就显示在图片框中。点击“方向控制”将跳转到控制界面,用户可通过“设备行径”和“摄像头方向”控件,分别控制设备的方向行走(前/后/左/右/停)和摄像头的旋转(上/下/左/右/居中)。
通过在采用WRTnode作为主控板的智能设备上实现视频监控/移动侦测、WiFi探针和红外热释电感应等功能,搭建起多功能智能监控系统,采用MQTT协议作为通信方式,通过APP和监控设备的双向发布-订阅模式,实现APP发布控制指令而监控设备接收指令后上报监控数据过程,这种交互模式同样适用于物联网行业的其他应用。后续将研究将上报数据发布给多个订阅用户,如订阅用户的端等。
【相关文献】
[1] 许金喜, 张新有.Android平台基于MQTT协议的推送机制[J].计算机系统应用,2015, 24(1):185-190.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论