智慧农业案例开发例程
智慧农业案例开发实验
目录
- 作者介绍
- 场景概述
- 实验准备
- 硬件连接
- 整体流程
- 创建项目
- 创建产品
- Profile 定义
- 编解码插件开发
- 设备开发
- IoT Link 工程创建
- IoT Link 程序编译及烧录
- 应用开发
- 开发应用
- 编辑应用
- 业务调试
- 观察监控参数
- 手动控制
- 设置自动开关灯规则
- 往期回顾
作者介绍
刘懿宵,男,西安工程大学电子信息学院,2017级本科生。
专业:通信工程
电子邮件:yixiao_liu1999@163.com
场景概述
智慧农业是智慧经济的重要内容,是依托物联网、云计算以及 3S 技术等现代信息技术与农业生产相融合的产物,可以通过对农业生产环境的智能感知和数据分析,实现农业生产精准化管理和可视化诊断。
在该文档中,将基于华为一站式开发工具平台—开发中心,从设备、平台、应用 端到端构建一款智慧农业解决方案样例,如图 1- 1 所示,带您体验十分钟快速上云。

实验准备
- 开发板:小熊派开发板(含 NB 卡、NB35-A 通信扩展板、E53_IA1 案例扩展板等)
- IDE:在 VScode 上安装 IoT- Link
- 平台:华为云账号(需完成实名认证)
硬件连接
连接好 E53_IA1 案例扩展板和 NB35-A 通信扩展板,NB35-A 通信扩展板需要安装 SIM卡,并注意卡的缺口朝外插入。将串口选择开关拨到 MCU 模式,并用 USB 线将开发板与电脑连接,如图 3- 1 所示。

整体流程
智慧农业案例的开发整体流程如图 4- 1 所示。

创建项目
在进行开发之前,开发者需要基于行业属性,创建一个独立的资源空间。在资源空间
内,开发者可以开发相应的物联网产品和应用。
步骤 1 使用华为云账号,登录物联网应用构建器,如图 5- 1 所示。

步骤 2 选择右下角的“新建项目”,填写“创建项目”,单击“确定”,如图 5- 2 所示。
配置示例:
- 项目名称:BearPi-IoT

步骤 3 创建完成后会生成自己建好的项目之后单击“进入开发”,如图 5-3 所示

步骤 4 进入“IoT Studio”界面下单击“创建应用”填写参数后,单击“确认”
如图 5-4 所示。配置示例: - 应用名称:Agriculture

创建产品
某一类具有相同能力或特征的设备的集合称为一款产品。除了设备实体,产品还包含该类设备在物联网能力建设中产生的产品信息、产品模型(Profile)、插件、测试报告等资源。
步骤 1 使用华为云账号,登录设备接入,选择页面左侧的产品,单击右上角下拉框,选择新建产品所属的资源空间(@创建项目)。如图 6- 1 所示。

步骤 2 单击右上角的“创建产品”,创建一个基于 CoAP 协议的产品,填写参数后,单击“立即创建”,如图 6- 2 所示。

| 基本信息 | |
|---|---|
| 所属资源空间 | 选择自己创建的资源空间。 |
| 产品名称 | 自定义,如“BearPi_Agriculture” |
| 协议类型 | 选择“CoAP” 数据格式 选择“二进制码流” |
| 厂商名称 | 自定义,如“BearPi” |
| 功能定义 | |
|---|---|
| 选择模型 | 物联网平台提供了三种创建模型的方法,此处选择“自定义功能” |
| 所属行业 | 智慧农业 |
| 设备类型 | Agriculture |
| 步骤 3 建完后可以发现“产品”里多了“Bearpi_Agriculture”如 6-3 所示,单击“详情” | |
![]() |
Profile 定义
在“功能定义”页面下,单击“自定义功能”,配置产品的服务。如图 7- 1 所示。

Profile 设计思路
设备服务列表:
| 服务描述 | 服务名称(Service ID) |
|---|---|
| 实时检测农业状态 | Agriculture |
| 服务能力: | |
| Agriculture | |
| 能力描述 | 属性名称 |
| -------- | ----- |
| 属性列表 | Temperature |
| 属性列表 | Humidity |
| 属性列表 | luminance |
| Light 命令列表 | |
| 能力描述 | 命令名称 |
| -------- | ----- |
| 命令列表 | Agriculture_Control_Light |
| 命令列表 | Agriculture_Control_Light |
| Motor 命令列表 | |
| 能力描述 | 命令名称 |
| -------- | ----- |
| 命令列表 | Agriculture_Control_Motor |
| 命令列表 | Agriculture_Control_Motor |
| 步骤 1 进入“新增服务”,填写相关信息后,单击“确认”用来管理农业的功能。如图 7- 2所示。配置示例: |
- 服务名称:Agriculture

步骤 2 在“Agriculture”的下拉菜单下点击“添加属性”填写相关信息“Temperature”,“Humidity”,“luminance”分别如图 7- 3,图 7- 4,图 7- 5 所示,单击“确认”。



步骤 3 在“Agriculture”的下拉菜单下点击“添加命令”填写相关信息,如图 7- 6 所示:

步骤 4 在“新增命令”里点击“新增输入参数”填写相关信息如图 7- 7,再单击“确定”,同样在“新增命令”里点击“新增输出参数”填写相关信息如图 7- 8 所示,再单击“确认”,最后在“新增命令”里点“确认”。


步骤 5 在“Agriculture”的下拉菜单下点击“添加命令”填写相关信息,如图 7- 9 所示:

步骤 6 在“新增命令”里点击“新增输入参数”填写相关信息如图 7- 10,再单击“确定”,同样在“新增命令”里点击“新增输出参数”填写相关信息如图 7- 11 所示,再单击“确认”,最后在“新增命令”里点“确认”。


编解码插件开发
编解码插件设计思路
消息列表:
| 消息名 | 消息类型 | messageid | |
|---|---|---|---|
| 1 | Agriculture | 数据上报 | 00 |
| 2 | Agriculture_Control_Light | 命令下发 | 01 |
| 2 | Agriculture_Control_Light | 响应 | 02 |
| 3 | Agriculture_Control_Motor | 命令下发 | 03 |
| 3 | Agriculture_Control_Motor | 响应 | 04 |
Agriculture:
| 码流序号 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| 参数名 | messageid | Temperature | Humidity | Luminance |
| 数据类型 | int8u | int8u | int8u | int16u |
| 长度 | 1 | 1 | 1 | 2 |
| 默认值 | 00 | / | / | / |
| 偏移值 | 0-1 | 1-2 | 2-3 | 3-5 |
| Agriculture_Control_Light 命令下发: | ||||
| 码流序号 | 1 | 2 | 3 | |
| -------- | ----- | ----- | ----- | |
| 参数名 | messageid | mid | Light | |
| 数据类型 | int8u | int16u | String | |
| 长度 | 1 | 2 | 3 | |
| 默认值 | 01 | / | / | |
| 偏移值 | 0-1 | 1-3 | 3-6 | |
| Agriculture_Control_Light 命令响应: | ||||
| 码流序号 | 1 | 2 | 3 | 4 |
| -------- | ----- | ----- | ----- | ----- |
| 参数名 | messageid | mid | errcode | Light_state |
| 数据类型 | int8u | int16u | int8u | Int8u |
| 长度 | 1 | 2 | 1 | 1 |
| 默认值 | 02 | / | / | |
| 偏移值 | 0-1 | 1-3 | 3-4 | 4-5 |
| Agriculture_Control_Motor 命令下发: | ||||
| 码流序号 | 1 | 2 | 3 | |
| -------- | ----- | ----- | ----- | |
| 参数名 | messageid | mid | Motor | |
| 数据类型 | int8u | int16u | String | |
| 长度 | 1 | 2 | 3 | |
| 默认值 | 03 | / | / | |
| 偏移值 | 0-1 | 1-3 | 3-6 | |
| Agriculture_Control_Motor 命令响应: | ||||
| 码流序号 | 1 | 2 | 3 | 4 |
| -------- | ----- | ----- | ----- | ----- |
| 参数名 | messageid | mid | errcode | Motor_state |
| 数据类型 | int8u | int16u | int8u | int8u |
| 长度 | 1 | 2 | 1 | 1 |
| 默认值 | 04 | / | / | / |
| 偏移值 | 0-1 | 1-3 | 3-4 | 4-5 |
| 步骤 1 在产品详情插件开发页面,选择“在线开发插件”,单击“在线开发插件”,如图8- 1 所示。 | ||||
![]() | ||||
| 步骤 2 在“在线开发插件”区域,单击“新增消息”,如图 8- 2 所示。 | ||||
![]() | ||||
| 步骤 3 新增消息 Agriculture 如图 8-3 所示。 | ||||
| 配置示例: |
- 消息名:Agriculture
- 消息类型:数据上报

a) 在“新增消息”界面,单击“添加字段”。
b) 在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId,如图 8- 4 所示。

c) 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“确认”,如图 8- 5 所示。
配置示例:
- 名字:Temperature

d) 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“确认”,如图 8- 6 所示。
配置示例: - 名字:Humidity

e) 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“确认”,如图 8- 7 所示。
配置示例: - 名字:Luminance
- 数据类型:int16u(16 位无符号整型)

f) 在“新增消息”界面,单击“确认”,完成消息 Agriculture 的配置。
步骤 4 新增消息 Agriculture_Control_Light 如图 8- 8 所示。
配置示例: - 消息名:Agriculture_Control_Light
- 消息类型:命令下发
- 添加响应字段:是

a) 在“新增消息”界面,单击“添加字段”,在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId,如图 8- 9 所示。

b) 在“新增消息”界面,单击“添加字段”,在“添加字段”界面,勾选“标记响应标识字段”,然后单击“确认”,添加响应标识字段 mid,如图 8- 10 所示。

c) 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“确认”,如图 8- 11所示。
配置示例:- 名字:Light
- 数据类型:string
- 长度:3

d) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId,如图 8- 12 所示。

e) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记响应标识字段”,然后单击“确认”,添加响应标识字段 mid,如图 8- 13 所示。

f) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记命令执行状态字段”,然后单击“确认”,添加命令执行状态字段 errcode,如图 8- 14 所示。

g) 在“新增消息”界面,单击“添加响应字段”,填写相关信息,然后单击“确认”,如图 8- 15 所示。
配置示例: - 名字:Light_State

f) 在“新增消息”界面,单击“确认”,完成消息 Agriculture_Control_Light 的配置。步骤 5 新增消息 Agriculture_Control_Motor 如图 8- 16 所示。
配置示例: - 消息名:Agriculture_Control_Motor
- 消息类型:命令下发
- 添加响应字段:是

a) 在“新增消息”界面,单击“添加字段”,在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId,如图 8- 17 所示。

b) 在“新增消息”界面,单击“添加字段”,在“添加字段”界面,勾选“标记响应标识字段”,然后单击“确认”,添加响应标识字段 mid,如图 8- 18 所示。

c) 在“新增消息”界面,单击“添加字段”,填写相关信息,然后单击“确认”,如图 8- 19所示。
配置示例: - 名字:Motor
- 数据类型:string
- 长度:3

d) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记为地址域”,然后单击“确认”,添加地址域字段 messageId,如图 8- 20 所示。

e) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记响应标识字段”,然后单击“确认”,添加响应标识字段 mid,如图 8- 21 所示。

f) 在“新增消息”界面,单击“添加响应字段”,在“添加字段”界面,勾选“标记命令执行状态字段”,然后单击“确认”,添加命令执行状态字段 errcode,如图 8- 22 所示。

g) 在“新增消息”界面,单击“添加响应字段”,填写相关信息,然后单击“确认”,如图 8- 23 所示。
配置示例: - 名字:Motor_State

f) 在“新增消息”界面,单击“确认”,完成消息Agriculture_Control_Motor 的配置。
步骤 6 拖动右侧“设备模型”区域的属性字段、命令字段和响应字段,与数据上报消息、命令下发消息和命令响应消息的相应字段建立映射关系,如图 8- 24 所示。



步骤 7 单击“保存”,并在插件保存成功后单击“部署”,将编解码插件部署到物联网平台,如图 8- 25 所示。

步骤 8 在“在线调试”下单击“新增调试设备”填写相关信息,列如图 8- 26 所示。
配置示例: - 设备名称:TEST(自定义即可)
- 设备标识码:该设备的 IMEI 号,可在设备上查看,如图 8- 27 所示:



设备开发
基于 IoT Link 工程创建,将程序样例烧录进小熊派开发板。
IoT Link 工程创建
步骤 1 打开 VScode 软件,在首页左下角单击”Home”按钮,打开 IoT Link,如图 9- 1 所示。

步骤 2 在首页上单击“创建 IoT Studio 工程”,如图 9- 2 所示。

步骤 3 在弹出导入界面,填写工程名称→选择工程储存目录→选择“STML431_BearPi”硬件平台→选择“oc_Agriculturet_template”,单击“完成”按钮导入相应工程,如图9- 3 所示。

IoT Link 程序编译及烧录
步骤 1 单击工具栏中的
,对当前工程进行编译。编译成功后,在控制台输出面板中显示“编译成功”,如图 9- 6 所示。

步骤 2 连接好开发板,单击工具栏中的 
,即可将已编译好的程序烧录至开发板,如图 9- 7 所示。

应用开发
回到华为“IoT Studio”里的“web 在线开发”单击之前创建好的应用,进入,如图 10- 1所示。

开发应用
步骤 1 在“开发应用”界面,点击“开发应用”,如图 10- 2 所示。

编辑应用
步骤 1 将鼠标移至“自定义页面 1”上,在弹出的列表中选择“修改”,修改页面信息。在弹出的窗口中,修改“菜单名称”为“农业管理”,其他保持默认,然后点击“确定”,如图 10-3 所示。

步骤 2 选择“农业管理”页面,设计页面组件布局。
-
拖动 1 个“选择设备”组件、6 个“监控”组件和 2 个“命令下发”组件至页面中,并按图 10-4 所示的布局进行摆放。

-
分别单击页面中的“监控”组件,在右侧“配置面板→样式”中设置组件的样式。
| 标题 | 显示类型 | 样式 |
|---|---|---|
| 温度监控 | 简易 | 保持默认 |
| 温度变化 | 图表 | 保持默认 |
| 湿度监控 | 简易 | 保持默认 |
| 湿度变化 | 图表 | 保持默认 |
| 光强监控 | 简易 | 保持默认 |
| 光强变化 | 图表 | 保持默认 |
- 分别单击页面中的“监控”组件,在右侧“配置面板→数据”中设置组件的数据源。此处以监控温度为例讲解,湿度和光强同样操作。因为 2 个温度的“监控”组件都是用于监控环境的温度,只是显示方式不同,所以“数据”页面参数设置一样,如图 10- 5 所示
- 产品:选择创建产品中已创建的产品“Bearpi_Agriculture”
- 服务:Agriculture
- 属性:Temperature

- 分别单击页面中的“命令下发”组件,修改各自的标题分别为“补光灯控制”,“电机控制”在它们的右侧“配置面板”设置对应功能的属性参数,则“补光灯控制”如图 10-6 所示;再“电机控制”如图 10-7 所示:


步骤 3 路灯管理页面构建完成,点击右上角“保存”,然后点击“预览”查看应用页面效
果,如图 10- 3 所示。

业务调试
使用已经烧录程序的开发板和构建完成的应用系统,进行智慧农业业务功能的调试。
观察监控参数
点击“预览”进入查看设备的参数,把设备切换到不同的环境下,观察其参数变化,如图11- 1 所示。

手动控制
步骤 1 选择“农业管理 →补光灯控制”,点击“设置参数”,“Light”选择“ON”,单击“发送命令”,如图 11- 2 所示。

此时扩展板的补光灯为打开状态,如图 11- 3 所示。

关灯命令与开灯命令操作步骤一样,差别是“Light”选择“OFF”。
步骤 2 选择“农业管理 →电机控制”,点击“设置参数”,“Motor”选择“ON”,单击“发送命令”,如图 11- 4 所示。

此时扩展板的电机开始转动,关电机命令与开电机命令操作步骤一样,差别是“Motor”选择“OFF”。
设置自动开关灯规则
步骤 1 新建两条规则,分别用于控制照明灯在不同条件下的开和关。 选择“规则”,单击“创建规则组”,如图 11- 5 所示。

步骤 2 在“创建规则组”里填写名称(自定义),例如 Light,如图 11- 6 所示:创好后可以发现所有规则里多了一个 Light 组,之后点亮 Light 前的框,在点击右上角的“创建规则”选择“设备联动规则”如图 11- 7 所示:


步骤 3 在“创建规则”界面,分别填写开、关灯规则信息。
| 参数 | 开 | 关 |
|---|---|---|
| 规则名称 | Light_ON | Light_OFF |
| 条件 | ||
| 条件类型 | 设备类型 | |
| 选择设备模型 | 选择创建产品中已创建的产品 | |
| 服务类型 | Agriculture | |
| 属性名字 | luminance | |
| 操作 | < | > |
| 值 | 50 | 500 |
| 动作 | ||
| 动作类型 | 设备 | |
| 选择设备模型 | 选择创建产品中已创建的产品 | |
| 点击选择设备 | 选择注册设备中新增的设备 | |
| 服务类型 | Agriculture | |
| 命令名称 | Agriculture_Control_Light | |
| 参数 | Light | |
| 值 | ON | OFF |
| 命令状态 | 启用 | |
| 描述 | 光强小于 50 时,补光灯开启。 | 光强大于 500 时,补光灯关闭。 |
| 参照上述表格,填写开灯的规则信息。 |
- 填写规则名称:Light_ON,规则组选择“Light”如图 11- 8 所示。

- 设置开灯规则的条件信息。在“条件”模块,点击“设备行为”所在行右侧的 “添加”,如图 11- 9 所示。

- 按照参数表中开灯规则的条件参数填写条件信息,如图 11- 10 所示。

- 设置开灯规则的动作。在“动作”模块,点击“设备行动”所在行右侧的“添加”,如图 11- 11 所示。

- 按照参数表中开灯规则的动作参数填写动作信息,如图 11- 12 所示。

- 然后单击右上角的“提交”,开灯规则创建完成。关灯规则的创建操作和开灯的一样,只是规则名称、条件的取值和动作执行不同。
步骤 4 测试自动开关灯。
- 遮住光强传感器(E53_IA1),使开发板处于黑暗环境中(亮度<50),查看“农业管理”中光强监控数值如图 11- 13 所示和扩展板的补光灯如图 11- 14 所示:扩展板的补光灯应该自动打开。


2 移除遮挡物,使开发板处于明亮环境中(亮度>500),查看“农业管理”中光强监控数值如图 11- 15 所示和扩展板的补光灯如图 11- 16 所示:扩展板的补光灯应该自动关闭。


步骤 5也可自行创建其他规则,例如当温度或者湿度达到一定阈值后,自动控制电机模拟
通风加湿等操作。
往期回顾
2021物联网开发学习自学历程记录汇总
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!



