APP下载

MQTT协议下的喂食器系统网络传输设计

2022-04-27卢雅丽鲍子宣谭玉龙赵文杰许正荣

关键词:应用层智能网消息

闫 勇,卢雅丽,鲍子宣,谭玉龙,赵文杰,许正荣

(安徽农业大学 信息与计算机学院,合肥 230036)

随着养殖现代化程度的飞速提高,养殖户们对设备智能化的要求也逐渐提高[1].在目前的市场中,喂食器多以家庭宠物类为主,且存在饲料仓容量小、机器无法灵活移动等问题.同时,目前高品质畜禽养殖业多为户外散养,其自动喂食器工作于野外无人或少人值守环境,而野外畜禽自动喂食领域仍是空白.现有动物喂食器大多没有远程控制与监视系统,不适合在长期无人值守的野外工作.因此,本设计就是为了克服以往小型宠物喂食器缺陷,让喂食器将养殖场的各种设备互联互通,用户或管理者可以通过手机或在喂食器本地对其进行管理.而野外、郊区等偏僻地区多存在信号差、基站少等网络问题,如何将受限环境下的喂食器设备与用户有效连接是我们当前面临的挑战.

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),主要提供订阅/发布两种消息模式,更为简约、轻量,此协议开放、易于实现[2],在受限环境(带宽低、网络通信不稳定)也能良好工作,特别适用于放置在野外信号弱、带宽低环境下,喂食器通过传输少量数据而进行远程连接的情况.

本文的贡献如下:

•设计并实现了一种拥有一套完善的硬件操作系统、数据库系统、数据分析处理后台与远程操控软件系统喂食器,并搭配有相应的手机客户端和微信小程序.

•基于MQTT协议的网络传输系统极大程度改善了受限环境下喂食器的运转,为野外喂食器与养殖户的连接提供了保障.

1 功能需求分析

(1)远程控制.为节约人力资源、提高养殖效率,用户可通过手机来对喂食器进行操作,如:定时或实时喂食、实时视频监控、监控饲料余量等功能,保障动物的高质量生长,为用户提供便利;(2)预约循环喂食,食量可选.针对动物的不同的生长周期,设定喂养时间、数量,节约人力资源,科学喂养;(3)环境温湿度监测.方便用户了解动物生长状态,进而达到改善品种、调节生长周期、提高经济效益的目的;(4)视频、拍照监控.在野外网络信号不稳定的情况下保障视频的实时传送,保障动物生活安全,提高养殖户的工作效率,方便及时发现和处置养殖场的突发情况;(5)进食动物数目识别.使用RFID对进食的动物计数,分析动物进食情况,便于调整养殖策略;(6)饲料余量监控.饲料桶上方有自主设计的基于超声波的传感器阵列,能够较准确地计算出饲料余量,方便养殖户及时添加.

2 系统设计

2.1 整体架构设计

为了满足当前喂食器的智能管理、实现系统所应具备的各项功能,结合当前射频识别(RFID)、红外感应器等信息传感设备的完善,近距离无线传输技术包括WIFI、蓝牙、UWB、MTC、ZigBee、NFC等的不断更新,物品与物品间逐渐能够进行信息交换和通信,从而实现对物品的定位、监控和管理的物联网技术[3],本系统建立感知层、网络层和应用层的三层体系架构,完成从数据采集、跨网段传递、存储、处理及结果反馈的过程,如图1所示.

图1 喂食器系统体系结构

2.1.1 感知层

感知层主要包括智能网关和传感器节点,传感器节点由若干传感器和数据集成模块构成.智能网关帮助传感器节点接入网络,实现运行状态数据的全面采集、实时反馈;对传感器节点实现唤醒、控制、诊断、管理;完成来自不同感知网络到接入网络的协议转换;将上层下达的指令数据包解析成感知协议层可以识别的指令、控制数据.

2.1.2 网络层

网络层作为感知层与应用层信令之间的传递通道,建立了客户端到服务器的连接,是喂食器系统信息传递和服务支撑的基础设施.传统的通信方式通常为客户端与服务端之间直接传输消息,而MQTT协议的通信方式是通过发布/订阅的方式进行的[4].

网络层的功能分为:1)从网关获取到目标数据后,将这些数据在局域网内打包、上传,实现了数据信息的实时动态感知;2)将收到的信息分类到不同的主题,随后将数据信息转发给订阅该主题的客户端;3)与各种应用接口建立连接,为喂食器系统提供网络服务功能,并实现信息的存储和跨网段传输,使系统能够管理资源,如设备日志、数据仓库等.

2.1.3 应用层

控制设备对用户发出的命令进行操作,作出反馈;应用软件为用户提供了查看、操作喂食器的平台,实时管理养殖场[5];硬件设备如电机、摄像头等在接受到信令后,将开始工作;数据分析系统通过对饲料桶、动物活动的分析,向用户反馈,为动物的生长提供保障[6].

2.2 网络层的设计

由于喂食器工作在野外环境,受地形地势等因素影响,网络信号不稳定、带宽较低、信号延迟时间长.但喂食器需能够被用户实时控制,运转的数据也应被及时上传,故合理地设计网络层能够避免消息传递的中断,用户与喂食器系统间也能够建立起稳定、安全的连接.

本MQTT协议是实现喂食器系统中的数据从传感器节点推送到应用层的较为理想的解决方案,智能网关的设计可获取传感器节点的数据并与广域网实现连接[7].如图2所示.

图2 基于MQTT协议的网络层

2.2.1 MQTT结构

MQTT可分为两部分:客户端(Client)、消息代理(Broker).客户端可细分为发布者(Publish)和订阅者(Subscribe),客户端直接使用该协议与消息代理进行连接[8].

本代理服务器端主要为ActiveMQ,发布者为各智能网关,通过服务器来发布各节点数据,作为订阅者的各应用层将实现数据的传输;应用层中的小程序或显示屏作为发布者,智能网关经主题订阅后将命令传递给各控制设备,最终实现喂食器系统的运转.

在系统工作过程中用分配不同身份、定义不同主题的方式,代理服务器将智能网关的传感器数据跨网段传输到应用层,同时也将指令下达到不同节点.

2.2.2 MQTT的消息格式

MQTT的数据包主要有三部分组成:固定报头(Fixed header)、可变报头(Variable header)和有效载荷(payload).其中每条消息都包含固定头,其长度固定为2 bytes,节省空间、降低流量消耗,为野外环境下喂食器系统与用户的连接提供了极大便利.有效载荷主要包括消息的内容,即本客户端的ClientID、订阅的Topic、Message以及用户名及密码,它确定了用户的登录身份和状态,以及订阅的消息主题,为后续接收、发送数据提供保障.

2.2.3 QoS(服务质量)

固定头格式如下表1.

表1 MQTT的固定头格式

其中的QoS level指服务质量等级,共有三种,QoS决定了服务器与客户端将如何接受消息,消息可以任意级别的QoS发布或订阅,客户端在接收时会选择QoS等级最高的接收.

3 设计实现

3.1 消息代理服务器(Broker)

本MQTT协议的消息代理服务器为ActiveMQ,采用的是ActiveMQ中发布-订阅(Publish-Subscribe Mode)的消息模式.在此模式下,发布者发送到Topic的消息,只有订阅了相关主题的消费者才能收到,且只能接收到自它订阅之后发布的消息.

3.2 发布消息(Publish)

以用户在手机端下发“实时喂食”指令为例,如图3.用户在设定好时间、投喂数量后,通过MqttClient.publish()方法将消息发送到相应Topic上,服务器查询是否存在相应执行设备.若设备存在,此时该条命令上传至Broker,Broker将判断该消息是否符合通讯协议,并找到对应Topic的订阅者,发送命令.在订阅者接收到消息后,将返回状态信息至Broker,经判断Topic类型后,返回设备的状态至用户,监听状态将一直循环至任务结束.同时,此次喂食记录,包括时间、地点、投喂数量、用户ID等信息都将上传至数据库进行保存.

图3 发布消息的过程

3.3 订阅消息(Subscribe)

以感知层的光照传感器上传数据至用户为例,由于用户订阅了每隔一段时间的光照数据,故此时传感器为发布者,用户为订阅者.

传感器检测到光照数据并打包后,主动上传至智能网关,此时智能网关将查询该信息是否符合通讯协议,若不符合将进行解码后将数据转发至Broker,待存储后,查询订阅了该消息的Topic后,将数据传送给相应的订阅者,至此一次完整的订阅工作完成.流程图如图4所示:

图4 订阅消息的过程

4 系统测试

Apache JMeter是一款可支持各种测试模块的性能测试工具,通过Apache JMeter模拟对网络系统加以重负荷下的抵抗力,分析其在不同类型负荷下的运行情况.

通过在jmeter.properties文件中修改cps值来限制网络带宽模拟不同的网络速度.其中cps指characeters per second,即每秒可通过的字符数,单位为B/s,计算公式为:

cps = (target bandwidth in kbps * 1024) / 8

(1)

根据表2建立不同的测试计划,表3为指标说明,分别得到的测试结果如表4所示.

表2 测试计划

表3 指标说明

表4 测试计划①~④的结果

由表4可知,在不同的网络环境下,消息成功率极高,且随着网络质量的提高,服务器每单位时间处理的请求数,即吞吐量也逐渐增加.因MQTT适合有限网络环境下数据传输,消息推送的延迟时间主要取决于当前所需传递的消息数,并只会对其造成轻微影响.

5 结语

文章主要研究了一种基于MQTT协议的智能喂食器系统.该系统结构简单、设计精妙,采用树莓派作为智能网关,能够在接收并处理各传感器采集数据方面有较好成效,同时通过MQTT协议,实现了跨网段数据上传、命令下达.

目前本系统已在安徽某稻鸭养殖场投入使用,获得了养殖户的良好反馈.该系统可较好解决在网络受限情况下的对动物的喂养,可广泛运用于各大养殖场,大大减轻劳动力负担.

本系统不足之处在于因设备数量较少、产品落地范围较窄,关于系统安全性以及多系统运行时的并发性并不能很好测试,未来将在系统的高可用和高并发方面进行改善和优化.

猜你喜欢

应用层智能网消息
交通运输部:扩大新能源智能网联汽车应用
一张图看5G消息
智能网联硬实力趋强
迎战智能网联大爆发
基于分级保护的OA系统应用层访问控制研究
基于SJA1000的CAN总线智能网桥设计
物联网技术在信息机房制冷系统中的应用
消息
消息
消息