发布于 2026-01-06 1 阅读
0

植物监测器 - 基于物联网、MongoDB 和 Flutter 的植物监测器

植物监测——基于物联网、MongoDB 和 Flutter

植物监测

概述

Plant Monitor是一个基于物联网的植物健康监测项目,旨在简化植物健康状况的监测。该项目由三部分组成:

提交类别:

动作明星

代码链接

应用程序和物联网部分的代码都位于以下 GitHub 代码库中:

GitHub 标志 sbis04 /植物监测器

基于物联网、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

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();
    }
};
Enter fullscreen mode Exit fullscreen mode

图表用于在 MongoDB Web 应用程序中直接可视化传感器读数。

图表

在这个项目中,我制作了四张图表:

  • 植物光照强度(%):植物接收到的光照强度。
  • 植物湿度(%):植物周围的湿度
  • 植物含水量(%):土壤中水分的含量
  • 植物温度(摄氏度):植物周围的当前温度

移动应用:Flutter

Flutter 应用

为了在 Flutter 应用程序中使用 Realm 数据,我创建了一个修改版的flutter_mongodb_realm插件,以支持 Dart 空安全,并在最新版本的 Flutter SDK 上运行它。

参考

文章来源:https://dev.to/sbis04/plant-monitor-mongodb-atlas-hackathon-submission-34j0