# mqtt-demo0730 **Repository Path**: tankedr/mqtt-demo0730 ## Basic Information - **Project Name**: mqtt-demo0730 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-04 - **Last Updated**: 2025-08-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MQTT Demo - Spring Boot定时推送数据 这是一个使用Spring Boot实现的MQTT定时数据推送演示项目。 ## 功能特性 - 🔄 定时推送传感器数据到MQTT代理 - 📊 多种类型的数据推送(传感器数据、系统状态、设备心跳) - 🎛️ 可配置的MQTT连接参数 - 🔌 自动重连机制 - 🌐 REST API接口支持手动发送消息 - 📈 完整的日志记录和监控 ## 项目结构 ``` src/main/java/com/tandan/mqttdemo0730/ ├── MqttDemo0730Application.java # 主启动类 ├── config/ │ └── MqttConfig.java # MQTT配置类 ├── service/ │ └── MqttService.java # MQTT发布服务 ├── scheduler/ │ └── MqttDataScheduler.java # 定时任务调度器 └── controller/ └── MqttController.java # REST API控制器 ``` ## 配置说明 在 `application.properties` 中配置MQTT相关参数: ```properties # MQTT配置 mqtt.broker.url=tcp://localhost:1883 # MQTT代理地址 mqtt.client.id=spring-boot-mqtt-client # 客户端ID mqtt.username= # 用户名(可选) mqtt.password= # 密码(可选) mqtt.topic=test/data # 默认主题 mqtt.qos=1 # 消息质量等级 mqtt.retained=false # 是否保留消息 # 定时任务配置 scheduling.fixed-rate=5000 # 定时推送频率(毫秒) ``` ## 定时任务说明 项目包含三个定时任务: 1. **传感器数据推送** - 按配置频率推送(默认5秒) - 主题:`test/data`(可配置) - 内容:温度、湿度、气压、CO2、光照等环境数据 2. **系统状态推送** - 每分钟推送一次 - 主题:`system/status` - 内容:JVM状态、内存使用、MQTT连接状态等 3. **设备心跳** - 每30秒推送一次 - 主题:`device/heartbeat` - 内容:设备在线状态、运行时间、消息计数等 ## REST API接口 启动应用后,可以通过以下接口进行操作: ### 1. 检查状态 ```http GET /api/mqtt/status ``` ### 2. 手动发送传感器数据 ```http POST /api/mqtt/send/sensor ``` ### 3. 发送自定义消息 ```http POST /api/mqtt/send/custom?topic=your/topic Content-Type: text/plain 你的消息内容 ``` ### 4. 发送JSON对象消息 ```http POST /api/mqtt/send/json?topic=your/topic Content-Type: application/json { "key": "value", "timestamp": "2024-01-01T12:00:00" } ``` ## 数据格式示例 ### 传感器数据格式 ```json { "timestamp": "2024-01-01T12:00:00", "messageId": 123, "deviceId": "sensor-001", "deviceType": "environmental_sensor", "location": "机房A区", "environmental": { "temperature": 25.67, "humidity": 65.43, "pressure": 1013.25, "co2": 450, "light": 750 }, "deviceStatus": { "battery": 95, "signal": -45, "errorCount": 0 } } ``` ## 运行方式 1. **启动MQTT代理**(如Mosquitto) ```bash # 使用Docker启动Mosquitto docker run -it -p 1883:1883 eclipse-mosquitto ``` 2. **配置MQTT连接参数** - 修改 `application.properties` 中的MQTT配置 3. **启动Spring Boot应用** ```bash mvn spring-boot:run ``` 4. **查看日志** - 应用启动后会自动连接MQTT代理并开始定时推送数据 - 观察控制台日志确认数据推送状态 5. **订阅MQTT主题查看数据** ```bash # 订阅所有主题 mosquitto_sub -h localhost -t "#" # 订阅特定主题 mosquitto_sub -h localhost -t "test/data" ``` ## 注意事项 - 确保MQTT代理正在运行并且可以访问 - 检查防火墙设置,确保1883端口可用 - 如果使用云端MQTT服务,请相应修改连接配置 - 应用支持自动重连,网络中断后会自动恢复 ## 技术栈 - Spring Boot 3.5.4 - Eclipse Paho MQTT Client 1.2.5 - Jackson JSON处理 - Spring Schedule 定时任务 - SLF4J 日志框架 ## 开发者 - 项目用于MQTT数据推送演示 - 支持自定义扩展和配置