1、FUJIANNONGJI福建农机FUJIANNONGJI第4期2022研究与探索MQTT协议在丘陵山区农作物环境监测系统中的应用*叶长榄(福建省机械科学研究院,福建 福州 350005)摘要:农业信息化、物联网、大数据的应用可以提高农业生产力,对农业现代化发展具有重要意义。为了对丘陵山区的农作物环境信息进行监测,设计一种丘陵山区农作物环境监测系统,通过传感器采集作物生长环境的空气温湿度、土壤温湿度和酸碱度、光照度、风速、降雨量等环境数据,应用物联网技术将数据传输至云服务器,应用数据分析软件对环境数据进行分析、比较、挖掘。文章介绍了MQTT协议原理及MQTT协议在系统中的应用。关键词:MQTT;
2、农业信息化;物联网;农业;丘陵山区中图分类号:TP27;S238文献标识码:A文章编号:1004-3969(2022)04-006-06Application of MQTT Protocol in Crop Environmental Monitoring System inHilly and Mountainous Areas*YE zhanlan(Fujian Academy of Mechanical Sciences,Fuzhou,Fujian 350005,China)Abstract:The application of agricultural informatization,
3、internet of things and big data can improve agricultural productivity,which is of great significance to the development of agricultural modernization.In order to monitor the crop environmental informationin hilly and mountainous areas,a crop environmental monitoring system in hilly and mountainous a
4、reas is designed.The system collectsenvironmental data such as air temperature and humidity,soil temperature and humidity,pH,illumination,wind speed,rainfall,etc.ofthe crop growth environment through sensors.The internet of things technology should be used to transmit the data to the cloud server,an
5、d the data analysis software should be used to analyze,compare,and mine the environmental data.This paper introduces the principleof MQTT protocol and its application in the system.Key words:MQTT;Agricultural informatization;Internet of things;Agriculture;Hilly and mountainous area*福建省科技厅省属公益类科研院所基本
6、科研专项(2021R1004007)作者简介:叶长榄(1979),男,高级工程师,主要从事物联网、智能农业装备研究和应用。农业信息化、物联网、大数据的应用可以提高农业生产力,对农业现代化发展具有重要意义。为了对丘陵山区的农作物环境信息进行监测,设计了一种丘陵山区农作物环境监测系统1,通过传感器采集作物生长环境的空气温湿度、土壤温湿度和酸碱度、光照度、风速、降雨量等环境数据,应用物联网技术将数据传输至云服务器,应用数据分析软件对环境数据进行分析、比较、挖掘,可通过数据分析为种植作决策,比如实现精准把握灌溉时机和灌溉量,减少无效灌溉,节约农业用水肥等资源。本文重点介绍MQTT协议在远程数据传输中的
7、应用。1丘陵山区农作物环境监测系统1.1系统结构原理丘陵山区农作物环境监测系统(以下简称系统)主要用于丘陵山区的农作物环境信息监测,由传感器、数据采集终端、网关、云服务器、用户终端等组成,如图1所示。传感器直接检测空气温湿度、土壤温湿 6FUJIANNONGJI福建农机FUJIANNONGJI第4期2022研究与探索度和酸碱度、光照度、风速、降雨量等环境数据并将模拟信号转换成数字信号;数据采集终端与一个或多个传感器连接,定期读取传感器采集的环境数据并缓存;网关与多个数据采集终端组成本地采集网络,与云服务器通信完成数据上云和指令下载,具有本地数据存储功能用于保存环境数据、系统参数、云端指令;用户
8、终端主要是PC、手机、显示屏以及相应的软件、APP,用于数据的浏览和参数指令的下发。网关 传感器 数据采集终端 云服务器用户终端 图图1 1系统结构框图系统结构框图Fig.1 System structure block diagram1.2通信部分的设计系统的通信涉及4个部分:1)传感器和数据采集终端之间的通信。采用RS485通信,一对多的主从模式,一个采集终端能够与一个或多个传感器进行通信,由于传感器类型不一样,会存在多种通信协议,需要数据采集终端进行处理。2)采集终端和网关之间的通信。采用LoRa无线通信,采集终端将采集到的环境数据通过本地通信网络(LoRa)传输到网关,网关将数据保存到
9、存储器。3)网关和云服务器的通信。采用4G通信,在传输层采用TCP协议,在应用层采用HTTP、MQTT协议将网关保存的数据上传到远程服务器,或将服务器指令下发到网关。4)用户终端和云服务器的通信。属于现有的互联网的应用部分,采用现有的互联网通信技术。2应用MQTT协议实现远程数据传输2.1MQTT协议原理MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议是一种构建于TCP/IP协议之上,基于发布/订阅(Publish/Subscribe)模式,用于传输消息的通讯协议,类似于广播模式。与广播模式不同的是,接收者可以“选择/取消”接收指定的消息
10、,而且广播者、接收者不是直接通信,而是通过代理者进行消息的传递。MQTT协议中有3种身份:发布者(Publisher)、代理者(Broker)、订阅者(Subscriber)。实现MQTT协议需要客户端和服务器端通讯完成,其中发布者和订阅者都是客户端,代理者是服务器。发布者可以同时是订阅者,发布者通过Publish方法发布消息,订阅者通过 Subscribe 订阅消息。MQTT 协议结构框图如图2所示。MQTT 客户端(Subscriber)MQTT 客户端(Subscriber&Publisher)MQTT 服务器(Broker)MQTT 客户端(Publisher)图图2 2MQTTMQT
11、T协议结构框图协议结构框图Fig.2 MQTT protocol structure block diagram一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(Payload)3部分构成。MQTT传输的消息由主题(Topic)和负载(Payload)两部分构成。MQTT协议中定义了Connect、Subscribe、UnSubscribe、Publish、Disconnect等方法(也被称为动作),如表1所示,用于表示对确定资源进行操作。表表1 1MQTTMQTT方法方法Tab.1 MQTT Method方法ConnectSubscr
12、ibeUnSubscribePublishDisconnect说明与服务器建立连接(会话)订阅消息取消消息订阅发送消息与服务器断开连接(会话)2.2MQTT通信协议的应用MQTT通信协议在系统中用于实现设备信息、环境数据及用户指令的传输。本方案采用物联网平台作为MQTT服务器,也就是MQTT协议中的Broker,而网关、用户终端作为 MQTT的客户端,也就是 MQTT协议中的Publisher和Subscriber,网关、用户终端都同时具备这两个身份,应用的关键在于消息主题和数据格式的定义、消息的交互流程的设计。2.2.1MQTT消息主题定义系统定义了3个消息主题,如表2中的devicein
13、7FUJIANNONGJI福建农机FUJIANNONGJI第4期2022研究与探索fo、datainfo、servercmdinfo。表表2 2系统消息主题系统消息主题Tab.2 System message topicTopicdeviceinfodatainfoservercmdinfoPayload设备信息、运行状态环境数据服务器(客户端)指令Publisher网关网关用户终端Subscriber用户终端用户终端网关消息内容使用JSON数据格式,数据定义见表3,不同的主题包含不同的数据项目。表表3 3数据定义说明数据定义说明Tab.3 Description of data defini
14、tion数据keyvergidzidqidcidsidriddtprdidrddirdtprddtimerddaterdtimedatadtimedate类型numbernumbernumbernumbernumbernumbernumbernumbernumbernumbernumberstringstringstringobjectstringstring说明协议id网关id采集终端id传感器id客户端id服务器id传感器类型设备类型采集编号采集序号采集类型采集日期和时间采集日期采集时间数据日期和时间日期数据keytimetimescmdccmdpdstatepwspwvrstateest
15、atemqttcfghttpcfginfordlonrdlatuserpassusername类型stringnumbernumberobjectnumberintegerintegernumbernumberarrayarrayobjectnumbernumberstringstring说明时间时长指令编号指令参数设备状态供电方式电池电量运行状态字故障状态字MQTT配置参数HTTP配置参数信息经度纬度密码用户名1)deviceinfo主题消息由网关发布,内容包含当时的设备信息、运行状态。消息内容的JSON数据格式如下:ver:1,data:rddtime:20221011210836,rdd
16、ate:2022-10-11,rdtime:21:08:36,rdlon:119.314972,rdlat:26.072372,gid:101,dstate:0,rstate:0,estate:0,pws:1,pwv:100其中状态字传输的是数值,状态按位表示,1个位1个状态信息,接收端需要按位进行状态分析。2)datainfo主题消息由网关发布,通过此消息上报环境数据。消息内容的JSON数据格式如下:ver:1,data:rdtp:0,rdid:101000001,rddi:4,rddtime:20221011210836,rddate:2022-10-11,rdtime:21:08:36,rdlon:119.314972,rdlat:26.072372,gid:101,zid:101001,qid:101001001,d01:22.2,d02:44.6,d03:22.2,d04:22.5,d05:0,d06:102,d07:22.2,d08:630,d09:22.2,d10:225,d11:222,d12:1020,d13:0,d14:0,d15:0,d16:0,d17:0,d18