预测植物生长与物联网 本课程概述的草图笔记 草图笔记由 Nitya Narasimhan 制作。点击图片查看大图。 预习测验 预习测验 引言 植物需要水、二氧化碳、养分、光和热量才能生长。在这节课中,你将学习如何通过测量空气温度来计算植物的生长和成熟速率。 在本课中我们将涵盖: 数字农业 为什么温度对耕作很重要? 测量环境温度 积温(GDD) 使用温度传感器数据计算GDD 数字农业 数字农业正在改变我们的耕作方式,利用工具收集、存储和分析农业数据。我们正处于世界经济论坛所描述的“第四次工业革命”时期,而数字农业的兴起被称为“第四次农业革命”,或“农业4.0”。 数字农业还包括整个“农业价值链”,即从农场到餐桌的整个过程。

草图笔记由 Nitya Narasimhan 制作。点击图片查看大图。
植物需要水、二氧化碳、养分、光和热量才能生长。在这节课中,你将学习如何通过测量空气温度来计算植物的生长和成熟速率。
在本课中我们将涵盖:
数字农业正在改变我们的耕作方式,利用工具收集、存储和分析农业数据。我们正处于世界经济论坛所描述的“第四次工业革命”时期,而数字农业的兴起被称为“第四次农业革命”,或“农业4.0”。
数字农业还包括整个“农业价值链”,即从农场到餐桌的整个过程。它包括跟踪食品运输和加工过程中的产品质量,仓库和电子商务系统,甚至拖拉机租赁应用程序!
这些变化使农民能够提高产量,减少化肥和农药的使用,并更有效地用水。尽管主要应用于富裕国家,但传感器和其他设备的价格正在逐渐降低,使其在发展中国家更加可及。
一些由数字农业支持的技术包括:
✅ 做些研究。还有哪些技术用于提高农作物产量?
“精准农业”一词用于定义在田间或田地的部分区域观察、测量和响应作物。这包括测量水分、养分和病虫害水平,并准确响应,例如仅在田地的一小部分浇水。
当学习植物时,大多数学生都被教导需要水、光、二氧化碳(CO2)和养分。植物也需要温暖才能生长——这就是为什么植物在气温升高时会开花,为什么雪花莲或水仙花能在短暂的暖春中提前绽放,以及为什么温室和暖房如此擅长促进植物生长。
温室和暖房的作用相似,但有一个重要区别。温室是通过人工加热来控制温度,允许农民更准确地控制温度;而暖房依靠阳光提供热量,通常唯一能控制的是窗户或其他开口以调节热量。
植物有基温(最低温度)、最适温度和最高温度,所有这些都基于每日平均温度。
这些是平均温度,平均值来自日间和夜间的温度。植物还需要不同的昼夜温度以更高效地进行光合作用并节省夜间能量。
每种植物的基温、最适温度和最高温度各不相同。这就是为什么有些植物在热国生长良好,而其他植物则在冷国生长良好。
✅ 做些研究。对于你花园、学校或当地公园里的任何植物,看看能否找到它们的基温。

上图显示了一个示例生长速率与温度的关系图。在基温以下没有生长。生长速率随温度上升至最适温度而增加,然后超过这个峰值后开始下降。在最高温度时生长停止。
这种图形的形状因植物种类而异。有些在最适温度以上有更陡峭的下降,有些从基温到最适温度的增加较慢。
农民要获得最佳生长,需要了解三种温度值并理解他们种植的植物的图形形状。
如果农民能够控制温度,例如在商业暖房中,他们可以为植物优化条件。例如,商业暖房种植西红柿时,白天温度设定为约25°C,夜晚为20°C,以获得最快生长。
结合这些温度、人工照明、肥料和受控CO2水平,商业种植者可以全年种植和收获。
温度传感器可用于与物联网设备一起测量环境温度。
根据相关指南操作以使用你的物联网设备监测温度:
积温(也称为积温单位)是一种基于温度测量植物生长的方法。假设植物有足够的水、养分和CO2,温度决定了生长速率。
积温,或称GDD,每天计算为高于植物基温的日平均温度(摄氏度)。每种植物都需要一定数量的GDD来生长、开花或生产成熟的作物。每天的GDD越多,植物生长得越快。
对于美国人,积温也可以用华氏度计算。5 GDDC(摄氏度下的积温)相当于9 GDDF(华氏度下的积温)。
完整的GDD公式有点复杂,但通常使用简化公式作为很好的近似:

有一些变体处理Tmax超过30°C或Tmin低于Tbase的情况,但我们暂时忽略这些。
根据品种不同,玉米需要800到2,700个GDD来成熟,基温为10°C。
在基温以上的第一天,测量了以下温度:
| 测量 | 温度(℃) |
|---|---|
| 最高温度 | 16 |
| 最低温度 | 12 |
将这些数值代入公式:
这给出了以下计算:

玉米在那天收到了4个GDD。假设一种玉米品种需要800个GDD才能成熟,那么还需要796个GDD才能达到成熟。
✅ 做些研究。对于你花园、学校或当地公园里的任何植物,看看能否找到它们达到成熟或生产作物所需的GDD。
植物不会在固定日期生长——例如,你不能种下一粒种子,知道植物将在100天后结果。相反,作为农民,你可以大致估计植物的生长时间,然后每天检查以确定作物何时成熟。
这对于大型农场来说具有巨大的劳动力影响,并且有可能使农民错过意外早熟的作物。通过测量温度,农民可以计算植物收到的GDD,从而只在预期成熟期附近检查作物。
通过使用物联网设备收集温度数据,农民可以自动接收到植物接近成熟的提醒。典型的架构是让物联网设备测量温度,然后使用MQTT等协议将这些遥测数据发布到互联网。服务器代码监听这些数据并将它们保存到某处,例如数据库。这意味着数据可以在以后进行分析,例如每天晚上计算当天的GDD,累计每种作物至今的GDD,并在植物接近成熟时发出警报。

服务器代码还可以通过添加额外信息来增强数据。例如,物联网设备可以发布标识符来指示它是哪个设备,服务器代码可以使用此信息查找设备的位置以及它监控的作物。它还可以添加基本数据如当前时间,因为某些物联网设备没有必要的硬件来准确记录时间,或者需要额外的代码来通过互联网读取当前时间。
✅ 你认为为什么不同的田地可能有不同的温度?
根据相关指南操作以使用你的物联网设备通过MQTT发布温度数据,以便以后分析:
一旦物联网设备开始发布遥测数据,就可以编写服务器代码订阅这些数据并存储它们。而不是将数据保存到数据库,服务器代码将保存到逗号分隔值(CSV)文件中。CSV文件将数据存储为文本行,每个值之间用逗号分隔,每条记录在新行上。这是一种方便、可读性强且广泛支持的数据文件格式。
CSV文件将有两个列:日期 和 温度。日期 列设置为消息被服务器接收的时间,温度 来自遥测消息。
重复第4课的步骤创建服务器代码以订阅遥测数据。你不需要添加发布命令的代码。
步骤如下:
配置并激活Python虚拟环境
安装paho-mqtt pip包
编写监听MQTT主题上发布的遥测消息的代码
⚠️ 如果需要,可以参考 第4课中创建Python应用接收MQTT代理遥测的说明。
将项目命名为 temperature-sensor-server。
确保 client_name 反映这个项目:
client_name = id + 'temperature_sensor_server'
在文件顶部现有导入语句下方添加以下导入语句:
from os import path import csv from datetime import datetime
这些导入语句引入了用于读取文件的库、用于与CSV文件交互的库以及用于处理日期和时间的库。
在 handle_telemetry 函数之前添加以下代码:
temperature_file_name = 'temperature.csv' fieldnames = ['date', 'temperature'] if not path.exists(temperature_file_name): with open(temperature_file_name, mode='w') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader()
这段代码声明了一些常量,用于指定要写入的文件名以及CSV文件的列头名称。CSV文件的第一行传统上包含以逗号分隔的列头。
然后代码检查CSV文件是否已经存在。如果不存在,它将被创建,并在第一行包含列头。
在 handle_telemetry 函数末尾添加以下代码:
with open(temperature_file_name, mode='a') as temperature_file: temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames) temperature_writer.writerow({'date' : datetime.now().astimezone().replace(microsecond=0).isoformat(), 'temperature' : payload['temperature']})
这段代码打开CSV文件,并在末尾追加一行新数据。该行包含以人类可读格式格式化的当前日期和时间,接着是来自物联网设备的温度。数据存储在ISO 8601格式中,包含时区,但不含微秒。
按照以前的方式运行这段代码,确保你的物联网设备正在发送数据。将在同一文件夹中生成一个名为 temperature.csv 的CSV文件。如果查看该文件,你会看到日期/时间和温度测量值:
date,temperature 2021-04-19T17:21:36-07:00,25 2021-04-19T17:31:36-07:00,24 2021-04-19T17:41:36-07:00,25
运行这段代码一段时间以捕获数据。理想情况下,你应该运行一整天以收集足够的数据进行GDD计算。
如果你使用的是虚拟物联网设备,请选中随机复选框并设置范围以避免每次返回相同的温度。
如果你想运行一整天,请确保运行服务器代码的计算机不会进入睡眠状态,可以通过更改电源设置或运行类似 此保持系统活动的Python脚本 来实现。
你可以在 code-server/temperature-sensor-server 文件夹中找到此代码。
一旦服务器捕获了温度数据,就可以计算植物的GDD。
手动执行此操作的步骤如下:
找到植物的基温。例如,草莓的基温是10°C。
从 temperature.csv 中找到一天中的最高和最低温度。
使用上面给出的GDD计算公式计算GDD。
例如,如果一天中的最高温度为25°C,最低温度为12°C:

因此,草莓在那一天收到了 8.5 个GDD。草莓大约需要250个GDD才能结果,所以还有一段时间。
植物需要的不仅仅是热量。还需要什么?
为此,查找是否有传感器可以测量这些因素。关于控制这些水平的执行器呢?你将如何使用一个或多个物联网设备来优化植物生长?
声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。