植物监测——基于物联网、MongoDB 和 Flutter
植物监测
概述
Plant Monitor是一个基于物联网的植物健康监测项目,旨在简化植物健康状况的监测。该项目由三部分组成:
提交类别:
动作明星
代码链接
应用程序和物联网部分的代码都位于以下 GitHub 代码库中:
基于物联网、MongoDB 和 Flutter 的植物监控系统
植物监测
这是一个基于物联网的植物监测系统,连接到 MongoDB 数据库。这是一个 Flutter 应用,用于在移动设备上显示来自植物传感器的实时数据。
执照
版权所有 © 2022 Souvik Biswas
本文件遵循 Apache License 2.0 版(“许可证”)授权;除非遵守许可证的规定,否则您不得使用此文件。您可以在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律另有规定或书面约定,否则根据本许可协议分发的软件均按“原样”提供,不提供任何形式的明示或暗示的保证或条件。有关许可协议项下权限和限制的具体条款,请参阅许可协议。
项目描述
下面对该项目的所有三个部分进行详细描述。
物联网:传感器

ESP32模块用于采集数据、处理数据并上传至MongoDB数据库。它是一款低功耗微控制器,集成了WiFi和蓝牙功能。
DHT11传感器用于测量植物周围环境的原始温度和湿度数据。
LDR用于计算植物接收到的光照强度。
土壤湿度传感器模块用于测量土壤湿度或含水量。该传感器包含一个电位器,用于设置所需的湿度阈值。
数据库:MongoDB

MongoDB Atlas 使用 AWS、Azure 和 Google Cloud 提供云数据库服务。它还拥有各种自动化工具,用于执行各种后端功能,并配备了可视化工具。本项目中使用的服务如下所述。
Atlas被用作存储传感器读数及其时间戳的主要云数据库。

Realm 函数用于轻松存储来自 ESP32 模块的传感器数据。创建了一个HTTP 端点,用于从 ESP32 访问 MongoDB 数据库。
以下函数用于存储传感器数据:
exports = function(payload){
var atlas = context.services.get("mongodb-atlas");
var coll = atlas.db("plantdata").collection("readings");
try {
if (payload.body)
{
body = EJSON.parse(payload.body.text());
}
coll.insertOne(body);
console.log(body);
} catch (e) {
console.log("Error inserting doc: " + e);
return e.message();
}
};
图表用于在 MongoDB Web 应用程序中直接可视化传感器读数。

在这个项目中,我制作了四张图表:
- 植物光照强度(%):植物接收到的光照强度。
- 植物湿度(%):植物周围的湿度
- 植物含水量(%):土壤中水分的含量
- 植物温度(摄氏度):植物周围的当前温度
移动应用:Flutter

为了在 Flutter 应用程序中使用 Realm 数据,我创建了一个修改版的flutter_mongodb_realm插件,以支持 Dart 空安全,并在最新版本的 Flutter SDK 上运行它。
参考
文章来源:https://dev.to/sbis04/plant-monitor-mongodb-atlas-hackathon-submission-34j0