当前位置: 首页 > news >正文

Spring Boot3.x + MQTT + InfluxDB 物联网设备接入平台搭建

参考

  • 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 支持设备日志的查询、删除操作,以及设备远程控制功能。

项目功能

  1. MQTT 消息接收
    设备(如 ESP8266)通过 MQTT 协议发送数据到 Mosquitto Broker,Spring Boot 应用作为 MQTT 客户端订阅指定主题。

  2. 数据存储
    设备日志存储到 InfluxDB 时序数据库,按时间戳自动排序存储。

  3. RESTful API

    API 方法 说明
    /api/logs GET 查询设备日志列表
    /api/logs/{id} GET 查询单条设备日志
    /api/logs/{id} DELETE 删除设备日志
    /api/devices/{deviceId}/led/{state} POST 控制单个设备 LED
    /api/devices/broadcast/led/{state} POST 广播控制所有设备 LED
  4. 状态持久化同步机制
    当设备离线时用户在 Web 界面修改的状态(如 LED 开关),在设备重新上线后能够自动同步。

  5. OTA 在线升级设计
    支持 Web 端上传固件,ESP8266 设备自动拉取并更新固件。

  6. ESP8266 客户端

    ESP8266 端主要功能包括:

    • WiFi 连接:自动连接配置的 WiFi 网络
    • MQTT 连接:支持用户名密码认证,自动重连
    • 数据上传:每秒上传模拟传感器数据(温度、湿度、气压)
    • LED 控制:接收 MQTT 控制命令,控制板载 LED 开关
    • Last Will 死亡通知:设备异常断开时自动发送离线通知
    • 状态同步:设备上线后自动请求同步最新 LED 状态

Docker 启动与查看命令

  1. 启动 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
    
  2. 启动 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

遇到的问题及解决办法

  1. 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
    
  2. LED 控制命令不生效

    现象:发送 LED 控制命令后,ESP8266 上的 LED 没有反应

    可能原因

    1. MQTT 发布器未连接:MQTT 连接在应用启动时失败未自动重连

    2. ESP8266 未订阅控制主题:检查 ESP8266 代码中的主题订阅

    3. ESP8266 未正确连接到 MQTT:检查串口监视器输出

界面截图

设备管理页面

设备管理

日志管理页面

设备日志

ESP8266 WEB 页面

ESP8266WEB页面

http://www.jsqmd.com/news/1175840/

相关文章:

  • 2026中山埃安专修哪家靠谱 正规门店选择参考指南 - 互联网科技品牌测评
  • 西安夜大和函授区别:选对学习形式 - 最新政策解读
  • 2026年惠阳黄金回收市场盘点:五家机构服务透明度与专业度解析 - 生活测评小能手
  • Harmonizer模型版本选择终极指南:diffusion_harmonizer.pkl vs harmonizer_nontemporal.pt如何选择
  • TRON Wallet CLI TRC10代币操作:发行、转账与交易所交易全攻略
  • django郑州市旅游推荐系统77711 计算机课程设计/毕业设计
  • DeepSeek-R1本地部署实战手册(含量化压缩、显存优化与API服务封装)
  • 2026 全年龄段标准化瑞文智商测试平台 TOP5 大盘点,免实名 IQ 自测渠道横评 - 独家d资讯
  • 整理 2026 广州钻石回收实测 TOP5 榜单,新手线下出手钻戒无亏损流程 - 每日生活报
  • 鸿蒙智能体开发实战:42.智能体付费 - 数字商品支付服务对接
  • ibus-libpinyin开发者指南:如何构建和贡献代码的完整教程
  • NVIDIA Llama-Nemotron-Colembed-VL-3B-V2在医疗文档检索中的应用实践:终极指南
  • 第7篇:六大设计原则在模板方法中的体现
  • 老师备课必备!好用教案编写工具真实测评,备课少走弯路 - 品牌测评鉴赏家
  • (论文速读)GATv2:你的图注意力网络其实并不“注意”
  • CANN启航营哈工大课程实践
  • Inventory Kamera自动化更新系统:如何与Dimbreath游戏数据仓库同步
  • DeepSeek4j性能优化策略:如何提升AI请求的响应速度和稳定性
  • NSK超大导程滚珠丝杠技术手册
  • Ant JS 运行时 9 MB 跑通 Hono 冷启动 5.5 ms:从二进制大小到 JIT 后端 MIR 的工程拆解
  • 如何快速上手CCManager:5分钟搭建你的AI编码助手管理中心
  • 【Midjourney色彩控制终极指南】:20年AI视觉工程师亲授HSV/RGB映射底层逻辑与7大精准调色指令
  • 2026年美国中大件海外仓排名:五家优选品牌深度解析 - 科技焦点
  • WebAssembly AI 插件的工程模式总结:沙箱、通信、生命周期的三层架构
  • 如何快速集成CountryPicker到iOS项目?3分钟实现国旗选择功能
  • 淘天三面追问:RAG 检索结果怎么截断?TopK 之外的动态截断三层策略
  • 【未完工题解】ABC466_f Many Mod Calculation
  • 虚基表与虚继承的内存关系
  • GeoNet高级应用:Cityscapes数据集预训练与跨场景迁移学习
  • 深夜出图总失败?:紧急修复Midjourney氛围崩坏的4种实时诊断法——从seed漂移到--s参数过载全链路排查