基于NB-IoT 的智慧畜禽养殖系统设计
2022-07-09邝楚文
邝楚文
(惠州经济职业技术学院 广东省惠州市 516057)
1 绪论
20 世纪七十年代,美国、日本、荷兰等发达国家开始研究畜禽养殖的环境监测系统,建立自动化畜禽养殖场。日本的东京大学在1978 年研制出温室环境监控系统,对温室内的多个环境因子进行控制。法国的农业物联网发展较快,其研制的畜禽养殖系统可以根据不同的控制对象匹配不同的控制器或外围设备,实用性较强。荷兰nedap 公司研发的velos 畜牧管理系统在欧洲市场得到广泛应用,nedap 公司于1974 年就将配备了相应软件和电子组件的RFID 技术应用到畜牧业。近年,这些发达国家在农业物联网感知技术、数据传输技术、智能处理技术等方面做了进一步的探索性和应用性研究,比如新型生物传感器、高度集成的COMS 芯片等。
国内方面,在政府的大力支持下,我国畜禽养殖业的规模不断壮大,上规模的畜禽产品生产企业开始引进国外先进设备和技术,国内的科研团队也在相关领域做深入的探索研究。比如在畜禽环境监控方面,有团队建立了基于PIC18F2580 的畜禽舍环境控制系统,能在一定程度上改善畜禽舍的局部小气候环境。也有团队利用ZigBee 技术将分布在畜禽养殖场的传感器节点组成无线传感网,以ARMLinux 嵌入式服务器为现场控制中心,实时采集养殖场环境信息和对设备进行调控。目前我国智能养殖技术在不断发展,基于RFID 技术的农场管理系统等得到了广泛应用。但与国外相比,我国智能养殖业仍处于起步阶段,同时大部分的研究多面向大规模的生产企业和养殖场,针对规模以下小农户的产品开发相对较少。
2 相关理论及关键技术
2.1 NB-IoT技术
本文所设计的智慧畜禽养殖系统采用NB-IoT 作为终端设备与使能平台之间的通信方式。NB-IoT 即窄带物联网,是专为低功耗广域网(LPWA)移动IoT 业务设计的新兴技术,其支持低功耗设备在广域网的蜂窝数据连接。NB-IoT基于LTE 技术,采用超窄带、低成本设计理念,牺牲一定速率和时延性能,以实现更好的物联网低功耗、大连接等特性。NB-IoT 使用授权频谱,支持Stand-alone(独立载波)、In-band(LTE 带内)和Guard band(LTE 保护带)三种工作模式,与现有网络共存。
NB-IoT 具有覆盖面广(较GSM 系统覆盖增强20dB,覆盖面积扩大100 倍)、海量连接(一个扇区理论上能支持10 万个连接)、低功耗(功耗为2G 的1/10,通过优化待机功耗、数据传输功耗和业务模型来实现)和低成本(通过降低技术复杂度实现)等特性。
2.2 LwM2M与MQTT协议
LwM2M 即轻量型设备对设备协议,该协议轻量、紧凑,适用于设备管理及设备间通信。从网络层次结构来看,LwM2M 是应用层协议,其基于CoAP 协议,CoAP 协议基于UDP 之上,具有重传机制,适用于低功耗、低速率、对终端设备成本敏感的资源受限环境。
MQTT 即消息队列摇测传输协议,适用于计算机能力低下、带宽资源吃紧、不稳定网络环境下的设备通信。MQTT采用分发/订阅消息模式,依赖TCP/IP 网络,能实现一对多或多对一通信。
LwM2M 和MQTT 均采用轻量型架构,同样适用于资源受限的设备和不稳定的网络,但相较之下,MQTT 更适用于实时控制场景,LwM2M 更适用于只上报数据,且对功耗敏感的应用场景。经综合分析,本系统在终端设备与服务平台的连接协议方面,数据采集终端使用LwM2M 协议,执行设备终端使用MQTT 协议。
2.3 OneNet物联网平台
OneNet 是中国移动打造的物联网开放平台,该平台支持适配各种网络环境和协议类型,可实现各种感知终端和智能硬件的快速接入,利用其提供的API 和应用模板能有效降低物联网应用开发和部署的成本。OneNet 平台具有专网专号、海量连接、在线监控、数据存储、消息分发、数据分析等功能,本系统依托该平台提升应用能力和降低开发成本。
2.4 三层架构软件设计模式
三层架构是一种结构清晰的软件设计模式,其基于“高内聚,低耦合”思想,将整个软件划分为表示层(UI,用于显示数据和接收用户输入数据)、业务逻辑层(BLL,包含业务逻辑代码,作为表现层和数据访问层之间的桥梁)和数据访问层(DAL,实现对数据库的访问和操作)三个层次,每层之间采用接口互相访问,并通过对象模型的实体类作为数据传递的载体。采用三层架构设计模式,进行前后端分离开发,后端提供Restful API 供前端请求访问,让业务逻辑更清晰,有利于维护和更新。
2.5 Web APP开发技术
本系统的用户终端为Web APP,Web APP 是通过网页开发技术来实现APP 功能的应用程序,其功能逻辑主要由JavaScript 脚本实现。本系统的Web APP 采用Uni-app 框架进行开发,该框架以Vue 框架为基础,使用小程序标签,基于其自动的框架预载,提升页面加载速度,让打包后的Web APP 更接近原生APP 的使用体验。所开发的Web APP 为应用软件的前端部分,其为三层架构中的表现层,前端通过Ajax 技术向后端发出数据请求,实现局部刷新。
3 系统总体架构
本文设计的智慧畜禽养殖系统面向规模以下中小型养殖场及散户,将传感终端采集到的现场数据通过NB-IoT 模组实现远距传输,借助中国移动OneNet 物联网云平台构建禽舍数据资源接口,利用移动应用程序监测现场环境和控制相关设备。本系统由感知层、传输层、支撑层和应用层组成,总体架构如图1 所示。
图1: 系统总体架构图
(1)感知层由传感器组成,主要检测禽舍等养殖空间的温度、湿度、氨气浓度等。畜禽养殖会产生大量的动物粪便和部分饲料残渣,会滋生细菌和产生高浓度氨气等有害气体,容易诱发疾病,从而影响畜禽的生长水平。相比于传统的人工经验判断,通过传感器监测环境参数,依据控制策略自动或远程操控通风设备,在实时性、准确性等方面有很大提升。
利用带数字信号输出的传感器,将采集到的环境数据发送给STM32 单片机,单片机接收数据后采取两种执行策略。一方面将接收数据与设定的阈值进行比较,进而控制执行单元工作,比如气温过高,将自动打开风扇。另一方面将采集数据和单片机的处理结果经由NB-IoT 模组发送到物联网云平台。
(2)传输层基于NB-IoT,使用LwM2M 和MQTT 网络应用层协议。LwM2M 是轻量化的M2M 协议,依据其适用于非长连接、低速率、低功耗等资源受限场景,本系统通过该协议将采集到的温湿度等环境数据上报至OneNet 云平台。对于通风、清洗和照明等设备的控制方面,利用MQTT即时通信协议,该协议采用发布订阅模式通信,在硬件设备严重受限和低带宽、高延迟的网络上仍能实现稳定传输,在实时控制方面具有优势。
(3)支撑层使用OneNet 物联网云服务平台,该平台支持LwM2M、MQTT、EDP 等接入协议。本系统将硬件终端通过LwM2M 和MQTT 协议接入OneNet 平台,通过数据流与数据点来组织设备上行数据,以key-value 格式存储设备的某类属性,例如温度、湿度等信息。将平台提供的SDK移植至NB-IoT 模组实现快速配网,利用提供的API,构建应用程序开发接口。
(4)应用层为供用户使用的移动应用程序,该程序基于三层架构软件设计模式,采用Uni-app+JEECG+MySQL组合技术进行开发,包含养殖场环境监控和商城两大模块,面向农户和消费者两大群体,构建养殖、销售一体化方案。
4 系统应用层设计
本系统的应用层基于三层架构设计模式进行前后端分离开发。采用基于MVVM 模型的Uni-app 框架,搭配Uni-ui组件库构建前端SPA,并通过HbuilderX 开发工具,生成跨平台应用的Web APP。后端采用基于代码生成器的JEECG开源框架,采用Restful API 对接机制,构建多端Web 服务后台。数据库采用MySQL,其具有运行速度快、可移植性好等特点。为有效进行版本管理、数据备份和团队合作,采用SVN 作为版本控制工具。
根据养殖管理与销售应用一体化方案,本系统的应用层主要面向农户和消费者两大群体。
(1)农户:该类用户为整个系统的核心服务对象。一方面,其通过应用层APP 可实时获取养殖场的环境数据和对设备进行远程控制;另一方面,其可将养殖场产品(如:肉、蛋、奶或其它加工产品)通过APP 进行在线销售。
(2)消费者:该类用户为销售模块的目标群体,其通过APP 可在线购买养殖场上架的各类新鲜农产品。
根据用户需求,智慧养殖系统的应用层包含养殖现场监控和商城两大模块,基于三层架构软件设计模式构建出“智慧养殖助手”和“放心购农产品”两个APP。系统应用层的软件架构如图2 所示。
图2: 应用层软件架构图
4.1 基于JWT的身份授权机制
本系统应用层软件采用基于JWT(JSON Web Token)的身份授权机制,实现用户身份验证和权限管理。利用JWT的无状态和自包含特性,节省数据库查询成本,减轻服务器压力,解决跨域认证、第三方授权、表单重复提交和跨站请求伪造攻击等问题。
使用Java 语言编写JWT,在JWT Token 的Header 中存储所使用的加密算法为HMAC-SHA256、类型为JWT(JSON对象为{“alg”:“HS256”,“typ”:“JWT”}),然后将Header 进行base64 加密,构成第一部分。在Payload 中存储签发者、所面向的用户、失效时间、签发时间、唯一身份标识等信息,然后将其进行base64 加密,构成JWT 的第二部分。Signature部分使用secret将前两个部分的拼接内容进行加密,以验证JWT Token 是否被篡改。
APP 用户使用账号密码向服务端请求登录;服务端验证用户信息,验证成功后签发一个JWT Token 并将之发送给客户端;客户端收到JWT Token 后,将该token 通过Vuex 插件存储在内存中;用户之后的每次网络请求都将该token 值附带到参数中发送给服务端(若在有效时间内,无需再次带上账号密码);服务端收到请求后,验证客户端请求里携带的token,若验证成功,则向客户端返回请求的资源。基于JWT 的身份授权流程如图3 所示。
图3: 基于JWT 的身份授权流程图
4.2 基于Vuex的前端数据存储策略
应用层APP 采用基于Vuex 的前端数据存储策略,主要用于用户身份验证的JWT Token 存储、用户登录状态、智慧养殖助手APP 的设备添加功能、放心购农产品APP 的购物车功能、产品收藏功能等。应用层的两个APP 均为Web APP,采用Uni-app 框架开发,该框架以Vue.js 为基础,Vuex 则是基于Vue 应用程序的状态管理工具,利用Vue 的细粒度数据响应机制进行高效的数据更新。通过Vuex 集中管理APP 所有组件的状态,在APP 应用过程中,在个人信息管理、购物车等组件之间传递并保持用户登录状态信息、意向农产品标记信息等,以相应的规则保证状态以一种可预测的方式发生变化,避免数据污染。
依据Vuex 的单一状态树规则,将用户登录状态等信息存储在公共仓库store 中,利用State 和Getter 对象保存数据,Mutation 和Action 对象更新数据,基于Vuex 状态存储的响应式特点,构建数据与各页面的实时同步关联,实现一个组件值改变,其余组件同步更新。通过该策略将状态信息存储在内存中,数据为JSON 对象,无需额外类型转换,经测试相较于localStorage 响应速度更快。基于Vuex 的数据同步流程如图4 所示。
图4: 基于Vuex 的数据同步流程图
4.3 智慧养殖助手APP设计
该APP 主要实现对养殖场的环境监测和设备远程控制,结合农产品销售功能,打造线上智能化养殖平台,为农户提供养殖、销售一体化方案,降低成本和提高养殖效率。APP分为智能监控、农产品管理、用户信息管理三大模块,其功能结构如下。
4.3.1 智能监控
该模块包括环境监测和设备控制两部分。环境监测功能通过折线图、饼图等图形化展示方案,实时反馈养殖空间的环境信息,如温度、湿度、氨气和二氧化碳浓度等,对导常数据进行预警。农户根据现场监测数据,通过设备控制功能远程操控养殖场内的硬件设施,如水龙头、排气扇、照明设备等。
4.3.2 农产品管理
农产品管理模块分为四个部分,分别是商户入驻、产品管理、订单管理和经营数据。
(1)商户入驻:农户在使用农产品管理模块的相关功能前,须提供养殖场地址、联系方式、农产品类型、营业执照等证明其具备合法销售农产品的相关信息,建设在线商户。若无法提供经营信息,农产品管理模块的相关功能将处于锁定状态。通过此功能,保证销售的农产品具有合法性、安全性和一定的可溯源性。
(2)产品管理:该部分由新增产品、产品分类、产品详情三个子功能组成。
农户获得产品管理权限后,产品管理的一般流程为:进入产品详情功能,添加产品名称、产品分类、产品图片、产品描述和数量规格等信息,创建产品数据记录;通过新增产品功能,对添加的产品进行上下架管理(产品上架即将产品显示在商城的待售列表中供消费者购买);农户在产品分类功能管理查看已有产品的分类信息,根据销售策略对产品作进一步管理。
(3)订单管理:该功能将订单数据整理为待付款、待发货、待评价、待处理等集合,农户根据订单状态进行产品发货等管理工作。
(4)经营数据:该功能采用数据简报展示方案直观地反映农产品店铺的经营状况。统计数据包括总销售情况和当日数据,总销售情况每月更新一次,包括经营总额、订单总数、用户总数等;当日数据为实时更新数据,反映了一天的订单量和收益。
4.3.3 用户信息管理
通过该模块对用户的个人信息进行管理,其包括个人信息、关于软件等部分。通过个人信息功能可查看或修改当前用户的信息,如上传用户头像、修改密码等。关于软件功能除显示当前的APP版本外,用户可获取系统的更新升级信息。
4.4 放心购农产品APP设计
放心购农产品APP 面向农产品消费者,其与智慧养殖助手中的农产品管理模块对接,实现购买与销售对应关系,拓展农产品销售经营渠道。该APP 包含首页、分类、购物车和个人信息管理四大模块,其功能结构如下。
4.4.1 首页
该模块作为在售产品的主要展示窗口,依据上架产品的特点、用户购买习惯等构建各板块,其包含产品搜索、消息提醒、重点推送、限时活动、分类精选等功能。
4.4.2 分类
该模块将在售产品按照约定机制分板块组织展示,方便用户快速定位目标产品,提升用户体验度。
4.4.3 购物车该模块将用户尚未付款的意向农产品数据暂时存储,其后对接结算中心和支付功能,简化购物流程。
4.4.4 个人信息管理
该模块包含订单管理、个人资料维护、产品收藏、产品分享等功能。个人资料维护功能主要实现个人账户信息管理、收货地址管理、查看推送消息、进行实名认证等。通过订单管理功能查看用户的订单记录,记录标记为待付款、待收货、待售后等状态。
5 小结
本文在分析国内外自动化畜禽养殖研究现状的基础上,提出了一款面向规模以下小农户,基于NB-IoT 技术的智慧畜禽养殖系统,该系统包含感知层、传输层、支撑层和应用层四个部分,重点介绍了系统的整体设计和应用层Web APP的详细设计过程。本文的研究取得了一定成果,所设计的系统具有一定的研究价值和实用价值。