参考
- TRAE SOLO
- 豆包
- Esp8266 MOD Nodemcu v3 2026年使用 Arduino 连接出现 A fatal esptool.py error occurred: Cannot configure port, something went wrong. Original message: PermissionError (13, '����ϵͳ�ϵ��豸 û�з������á�', None, 31)
环境
| 软件/系统 | 版本 | 说明 |
|---|---|---|
| Windows 10 专业版 | 10.0.19045 | 开发主机 |
| Docker Engine | 29.5.3 | 运行 InfluxDB 和 Mosquitto 容器(Docker Desktop 环境) |
| TRAE CN | 3.3.x | SOLO 模式生成代码和文章 |
| Spring Boot | 3.2.5 | Java 后端框架 |
| OpenJDK | 21 | 后端运行环境 |
| InfluxDB | 2.7.5 | 时序数据库(Docker 容器) |
| Mosquitto | 2.0.18 | MQTT Broker(Docker 容器) |
| Eclipse Paho | 1.2.5 | MQTT Java 客户端库 |
| influxdb-client-java | 6.8.0 | InfluxDB Java 客户端库 |
| Thymeleaf | 3.1.2 | Java 模板引擎 |
| Arduino | 1.8.19 | 由于2.0x打不开,多次尝试未解决后更换为老版本 |
| Esp8266 | Nodemcu v3 |
正文
本文由AI生成+博主审核与微调完成
项目介绍
本项目是一个基于 Spring Boot 的物联网设备接入平台,支持通过 MQTT 协议接收 ESP8266 设备数据,并将数据存储到 InfluxDB 时序数据库中。同时提供 Web 界面和 RESTful API 支持设备日志的查询、删除操作,以及设备远程控制功能。
项目功能
-
MQTT 消息接收
设备(如 ESP8266)通过 MQTT 协议发送数据到 Mosquitto Broker,Spring Boot 应用作为 MQTT 客户端订阅指定主题。 -
数据存储
设备日志存储到 InfluxDB 时序数据库,按时间戳自动排序存储。 -
RESTful API
API 方法 说明 /api/logsGET 查询设备日志列表 /api/logs/{id}GET 查询单条设备日志 /api/logs/{id}DELETE 删除设备日志 /api/devices/{deviceId}/led/{state}POST 控制单个设备 LED /api/devices/broadcast/led/{state}POST 广播控制所有设备 LED -
状态持久化同步机制
当设备离线时用户在 Web 界面修改的状态(如 LED 开关),在设备重新上线后能够自动同步。 -
OTA 在线升级设计
支持 Web 端上传固件,ESP8266 设备自动拉取并更新固件。 -
ESP8266 客户端
ESP8266 端主要功能包括:
- WiFi 连接:自动连接配置的 WiFi 网络
- MQTT 连接:支持用户名密码认证,自动重连
- 数据上传:每秒上传模拟传感器数据(温度、湿度、气压)
- LED 控制:接收 MQTT 控制命令,控制板载 LED 开关
- Last Will 死亡通知:设备异常断开时自动发送离线通知
- 状态同步:设备上线后自动请求同步最新 LED 状态
Docker 启动与查看命令
-
启动 InfluxDB 容器
docker run -d --name influxdb -p 8086:8086 \-e DOCKER_INFLUXDB_INIT_MODE=setup \-e DOCKER_INFLUXDB_INIT_USERNAME=<your-username> \-e DOCKER_INFLUXDB_INIT_PASSWORD=<your-password> \-e DOCKER_INFLUXDB_INIT_ORG=<your-org> \-e DOCKER_INFLUXDB_INIT_BUCKET=<your-bucket> \-e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=<your-token> \influxdb:2.7.5 -
启动 Mosquitto 容器
docker run -d --name mosquitto -p 1883:1883 -p 9001:9001 \-v "${PWD}/mosquitto-config:/mosquitto/config" \eclipse-mosquitto:2.0.18
访问地址汇总
| 服务 | 地址 |
|---|---|
| Spring Boot 应用 | http://localhost:8080 |
| Web 界面 | http://localhost:8080/logs |
| RESTful API | http://localhost:8080/api/logs |
| InfluxDB 后台 | http://localhost:8086 |
| MQTT Broker | tcp://localhost:1883 |
遇到的问题及解决办法
-
MQTT 连接失败
可能原因:Windows 防火墙阻止了 ESP8266 访问电脑上的 1883 端口
解决方案:
- Windows 下 PowerShell(管理员) 临时放行TCP入站,仅本次开机有效
New-NetFirewallRule -DisplayName "Temp_MQTT_1883" -Direction Inbound -Protocol TCP -LocalPort 1883 -Action Allow -PolicyStore ActiveStore验证方法:
Test-NetConnection 192.168.x.x -Port 1883 Test-NetConnection 192.168.x.x -Port 8080 -
LED 控制命令不生效
现象:发送 LED 控制命令后,ESP8266 上的 LED 没有反应
可能原因:
-
MQTT 发布器未连接:MQTT 连接在应用启动时失败未自动重连
-
ESP8266 未订阅控制主题:检查 ESP8266 代码中的主题订阅
-
ESP8266 未正确连接到 MQTT:检查串口监视器输出
-
界面截图
设备管理页面

日志管理页面

ESP8266 WEB 页面

