ESP32物联网 自动浇水系统(二)

后端系统,使用TraeCN + deepseek-v4-flash,由AI全自动构建。 

ESP32 物联网自动浇水系统 – 实施计划

使用 .NET 8 构建一个完整的物联网自动浇水系统,包含:

  • 内置 MQTT Broker(使用 MQTTnet)- 接收 ESP32 设备数据,下发控制指令

  • ASP.NET Core Web API 后端 – 提供 RESTful API,使用 SQLite 存储数据

  • Blazor WebAssembly 前端 – 设备监控面板、图表展示、手动控制

管理 20 个 ESP32 设备,每台设备检测土壤湿度(0-4095),记录浇水历史。

不到2小时一个完整的系统生成,包含设备模拟器。

ESP32 物联网自动浇水系统

基于 ASP.NET Core 9 + Blazor WebAssembly 的物联网自动浇水系统,内置 MQTT Broker,支持 ESP32 设备接入和管理。

技术栈

组件

技术

运行时

.NET 9

Web 框架

ASP.NET Core + Blazor WebAssembly

ORM

Entity Framework Core (SQLite)

MQTT

MQTTnet(内置 Broker + Client)

实时通信

SignalR

前端 UI

Bootstrap 5 + Chart.js

项目结构

Esp32Watering/
├── src/
│   └── Esp32Watering.Server/       # 后端服务
│       ├── Controllers/             # API 控制器
│       ├── Data/                    # 数据库上下文
│       ├── Hubs/                    # SignalR Hub
│       ├── Models/                  # 实体与 DTO
│       ├── Services/                # 核心服务
│       └── Client/                  # Blazor WebAssembly 前端
│           ├── Pages/               # 页面组件
│           ├── Services/            # 前端 API 服务
│           └── Layout/              # 布局组件
└── tools/
    └── Esp32Simulator/              # ESP32 设备模拟器

快速开始

前置条件

  • .NET 9 SDK

启动服务

# 克隆仓库
git clone https://gitee.com/zhux3/esp32-watering.git
cd esp32-watering

# 启动服务器
dotnet run --project src/Esp32Watering.Server

服务启动后,浏览器访问 http://localhost:5167 即可打开管理界面。

启动设备模拟器(可选)

dotnet run --project tools/Esp32Simulator

模拟器默认模拟 20 台设备,定时上报湿度数据。

核心服务

  • MqttBrokerService

     — 内置 MQTT Broker,监听 1883 端口,接收设备连接

  • MqttClientService

     — 订阅设备主题,处理上报数据

  • DeviceDataService

     — 处理湿度记录、浇水确认、设备状态更新

  • DeviceHeartbeatService

     — 每 30 秒心跳检测,120 秒无数据自动标记离线

API 接口

方法

路由

说明

GET

/api/devices

获取所有设备列表

GET

/api/devices/{id}

获取单个设备详情

GET

/api/moisturerecords/device/{deviceId}?take=10

获取设备湿度记录

GET

/api/watering/records/device/{deviceId}?take=10

获取设备浇水记录

POST

/api/watering/send

发送浇水指令

GET

/api/config/moisture-thresholds

获取湿度阈值配置

SignalR Hub

  • 端点

    : /hubs/watering

  • 事件

    : WateringCommandSent — 浇水指令确认推送

  • MQTT 主题

    主题

    方向

    说明

    esp32/{id}/soil_moisture

    设备 → 服务端

    上报土壤湿度 (0-4095)

    esp32/{id}/status

    设备 → 服务端

    上报在线状态 (online/offline)

    esp32/{id}/watering/cmd

    服务端 → 设备

    下发浇水指令

    esp32/{id}/watering/ack

    设备 → 服务端

    浇水指令确认

    数据库

    使用 SQLite,数据库文件自动创建于项目运行目录。包含 3 张表:

    • Devices

       — 设备信息与在线状态

    • SoilMoistureRecords

       — 土壤湿度历史记录

    • WateringRecords

       — 浇水操作记录

    预置 20 个设备作为种子数据。

    前端页面

    • 设备总览

       (/) — 卡片网格展示所有设备,显示在线状态、土壤湿度进度条,每 10 秒自动刷新

    • 设备详情

       (/device/{id}) — Chart.js 折线图展示湿度趋势、浇水记录柱状图,支持手动浇水(20 秒自动关闭)

    🌱🌱🌱未完待续

    发表评论