基于MQTT协议的数据监测系统在设施农业中的应用
2020-03-18孟丽荣赵海天
孟丽荣,赵海天
(1.沈阳理工大学 兵器博物馆,辽宁 沈阳 110159;2.沈阳和平百嘉丽医疗美容医院有限公司 网络部,辽宁 沈阳 110001)
0 引言
农业环境是农业生产的物质基础,农作物对环境有很强的依赖性、选择性和适应性,通过对空气温度、光照、空气湿度、CO2浓度以及土壤墒情等环境因素的动态监测,可以对环境因素进行实时掌控,获取全面、快速、准确的信息反馈,并能根据监测信息做出准确判断和提出相应的应对措施,实现农业资源的科学开发和合理利用,提高土地产出率.设施农业是集农作物种植、农业装备等多领域为一体的系统工程,突破了传统农作物受地域、自然环境、气候等诸多因素的限制,主要借助温室及相关配套装置来适时调节和控制作物生产环境,在人为可控环境下进行高效农业生产,对于农业生产、农产品销售、种植区域管理、环境控制具有重大意义.
目前,设施农业技术飞速发展,温室也趋向大型化发展,而无线终端节点传输距离有限,无法满足大型温室的要求,随着无线传感器网络(Wireless Sensor Network,WSN)的不断发展及物联网(Internet of Things,IOT)技术在农业领域的应用,使得大型温室的自动化、智能化管理成为可能.无线传感器网络一般包括传感器节点、汇聚节点和基站,传感器节点由传感器、微处理器、存储器和收发器等部件组成,具有计算和通信能力,以近距离无线的方式连接,从而形成多跳的无线网络[1],被广泛应用在环境数据采集领域.另外,通过利用无线传感器网络可检测到农作物实际生长情况,及时发现存在的病虫害,并对其进行有效防治,使农业生产产量能够得到保证[2-4].由于农业生产环境的复杂性和网络的不稳定性,以及本地传感器大量接入的需求,需要一种高质量、高可靠、低带宽占用的数据交换协议.
消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议因为其消息体积较小、基于发布/订阅的解耦通信模式、丰富的QoS选项及遗嘱(Last Will)机制,非常适合硬件资源、带宽受限的应用场景.基于MQTT协议的无线传感器网络监测区域与远程控制数据的传输使监控面积得到延伸,从而实现温室大型化、分区化管理,为实现农业环境数据的自动采集、远程无线传输、自动控制提供了技术保障.
1 系统组成及工作原理
基于物联网技术的农业环境数据监测系统由MQTT代理服务器、Wi-Fi中心节点、变送器、WSN传感器网络及软件通信系统组成.在温室中设立一个Wi-Fi中心节点作为整个数据采集的网关,它向上与MQTT代理服务器(远程服务器)通信,向下连接变送器,每个变送器连接其所属管辖监测区域内的采集器,每个采集器带有温度、湿度、光照、CO2等传感器,不同变送器管辖区域之间相对独立,共同完成温室环境的数据采集.变送器将采集的数据送入Wi-Fi中心节点后通过MQTT协议将数据传输给MQTT代理服务器,MQTT代理服务器通过对所采集的数据进行分析和运算产生控制命令,再通过MQTT协议将控制命令传输给变送器以实现温室的网络化控制.系统组网模型如图1所示.
2 MQTT协议通信的具体应用过程
MQTT协议是一种即时通信协议技术,是较早的物联网通信协议之一,由IBM公司于1999年开发,是一个为解决在不良网络状况中设备间通信,基于订阅/发布机制的轻量级传输协议.在通过MQTT客户端发布消息至服务器的主题下,任何订阅了该主题的MQTT客户端均可收到该消息,并且客户端可以通过订阅多个主题接收多个主题下的消息.MQTT协议是一个二进制协议,相比文本协议而言其消息体编码更为紧凑,可以传递各种类型的数据并能够对数据内容进行有效的屏蔽[5].
2.1 硬件设备对接协议
2.1.1 Wi-Fi中心节点分类
由于Wi-Fi中心节点设备类型较多,需要对配备不同传感器的中心节点设备进行统一分类,确保入网的每一个传感器设备编码唯一.编码分类:“1”——2个温湿度传感器+雨量传感器;“2”——2个温湿度传感器+土壤含水量传感器;“3”——2个温湿度传感器;“4”——雨量传感器;“5”——土壤含水量传感器;“6”——1个温湿度传感器;“8”——1个温湿度传感器+放风;“9”——2个温湿度传感器+雨量传感器+土壤含水量传感器.
2.1.2 Wi-Fi中心节点组网配置
每一个Wi-Fi中心节点设备安装前都必须进行入网配置,配置操作界面如图2所示,选择串口号:COM2.接入中心协议选择“TCP”,APN名称选择“CMNET”,如图3所示.
2.2 MQTT协议软件设计
MQTT协议由软件来实现,软件部分采用Java编程语言和mySQL数据库,可部署在Windows、Linux环境下.
2.2.1 数据传输的实现过程
Wi-Fi中心节点通过MQTT协议实现与MQTT代理服务器的通信,进行数据传输,其传输过程如图4所示.
MQTT代理服务器向Wi-Fi中心节点发送控制命令,Wi-Fi中心节点收到并且执行后,回发反馈信息,如果反馈超时,MQTT代理服务器重新发送,当反馈超时3次后,则认定发送失败,丢弃该控制命令.
MQTT代理服务器向Wi-Fi中心节点发送状态查询命令,Wi-Fi中心节点收到后回发状态数据.
Wi-Fi中心节点定时主动上报数据给MQTT代理服务器,MQTT代理服务器收到后,回发反馈信息.
2.2.2 MQTT代理服务器发送控制指令的实现
MQTT代理服务器发送一个参数控制指令:8,2,855,5,30,350,50,950,250,0,30,60,30,(设备类型8、指令类型2、设备ID号855、记录间隔时间5 min、上报间隔时间30 min、温度报警上限35℃、温度报警下限5 ℃、湿度报警上限95%、湿度报警下限25%、放风策略0、远程模式继电器动作时长30 s、本地模式检测时间间隔60 s、本地模式继电器动作时长30 s).其中,温度上下限设置参数为原数值×10(范围是-500~1000,对应温度为-50~100 ℃),湿度上下限设置参数为原数值×10(范围是0~1000,对应湿度为0%~100%),放风策略有4种方式:“0”——仅远程指令控制;“1”——只要有一个传感器超限即动作;“2”——两个传感器同时超限即动作;“3”——取两个传感器的平均值).如果MQTT代理服务器发送的参数设置指令连续三次超过30 s,则终止此条指令发送.
当Wi-Fi中心节点收到MQTT代理服务器发送的参数设置指令且执行成功后,向MQTT代理服务器上报执行结果,上传反馈信息内容:8,2,OK,(设备类型8、指令类型2、状态OK).
以上数据通信过程通过软件编程实现,利用多线程技术同步启动30 s计时器,当Wi-Fi中心节点在30 s内收到控制指令时则启动或关闭继电器,以达到对远程电器设备的控制.
程序设计流程如图5所示.
2.2.3 MQTT代理服务器发送状态查询指令的实现
MQTT代理服务器向Wi-Fi中心节点发送一个状态查询指令:8,3,(设备类型8、指令类型3).同步启动30 s计时器,当反馈连续三次超时后,终止发送此条查询指令.
Wi-Fi中心节点收到MQTT服务器发送的状态查询指令且执行成功后,向MQTT服务器上传查询结果数据,其实现过程通过软件编程实现,程序流程如图6所示.
Wi-Fi中心节点反馈上报状态查询的结果为:8,3,855,1,1,5,30,350,50, 1,30,60,30,0,(设备类型8、指令类型3、设备ID号855、程序版本号1、温湿度传感器1状态1、记录间隔时间5 min、上报间隔时间30 min,温度1报警上限35 ℃、温度1报警下限5 ℃、放风策略1、远程模式继电器1动作时长30 s、本地模式检测时间间隔60 s、本地模式继电器1动作时长30 s、控制状态0),温度上下限设置参数为原数值×10(数值范围-500~1000,对应温度为-50~100 ℃)
2.2.4 Wi-Fi中心节点主动上报数据
Wi-Fi中心节点设备不需要接收MQTT代理服务器发送请求,按照事先设置好的时间间隔主动上传采集到的环境数据.指令类型规定为:“1”——数据透传;“2”——参数设置执行结果反馈;“3”——参数状态反馈;“4”——雨量清零;“5”——数据.Wi-Fi中心节点主动上传数据包括设备类型、指令类型、分包标志、电量(电池电量)、时间间隔、温度1、湿度1、温度2、湿度2,其中温度单位为℃,电量、湿度用百分比表示,所有数值为整数,电量数值为原数值(数值范围0~100),温度数值为原数值×10(数值范围-500~1000),湿度数值是原数值×10(数值范围0~1000).
3 结语
本文结合农业物联网的发展趋势,通过MQTT网络协议搭建了基于无线传感器的远程通信系统,数据传输稳定、可靠.经过测试,基于MQTT的农业物联网系统适合小数据分组传输、高并发接入的场景,并在对通信时延要求不严格的情况下,对于较大数据分组有较高的通信质量,满足农业环境监测过程中对多测点、多要素、移动性、便捷性等方面的要求.实现农业环境监控网络化、智能化,使监控系统具有费用低、功耗低、使用方便、可靠性高等特点,能满足较大范围内的农业环境监控需求,对今后的农业环境监控技术的发展具有一定的借鉴作用.