# iot-platform **Repository Path**: waynedu/iot-platform ## Basic Information - **Project Name**: iot-platform - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-31 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IoT 云平台 Demo > 业内标准 IoT 平台架构学习项目。覆盖设备遥测上报、实时 Dashboard、历史折线图、远程配置下发/同步、设备状态管理等核心场景。 > > **技术栈:** MQTT (EMQX) · WebSocket · Spring Boot 3.2 · Spring Cloud Gateway · InfluxDB · RabbitMQ · Redis · MySQL · Vue 3 + ECharts ## 快速启动 ```bash # 1. 中间件 docker compose up -d # 2. 后端(5 个服务,开 5 个终端,IDEA 直接 Run 更方便) mvn clean install -DskipTests mvn spring-boot:run -pl iot-device-service # 8081 mvn spring-boot:run -pl iot-telemetry-service # 8082 mvn spring-boot:run -pl iot-config-service # 8083 mvn spring-boot:run -pl iot-notification-service # 8084 mvn spring-boot:run -pl iot-gateway # 8080 # 3. 前端 cd iot-web-dashboard && npm install && npm run dev # → http://localhost:5173 # 4. 模拟器(先通过 Dashboard 注册设备,拿到 deviceId + deviceSecret) # 修改 iot-device-simulator/src/main/resources/application.yml: # device-id: dev-xxxxxxxx # device-secret: secret-xxxxxxxx mvn spring-boot:run -pl iot-device-simulator ``` ## 端口映射(Docker 端口已避让本地服务) | 服务 | 外部端口 | 内部端口 | 原因 | |------|---------|---------|------| | EMQX MQTT | **1884** | 1883 | 避让本地 mosquitto | | MySQL | **3307** | 3306 | 避让本地 MySQL | | Redis | **6380** | 6379 | 避让本地 Redis | | InfluxDB | 8086 | 8086 | — | | RabbitMQ AMQP | 5672 | 5672 | — | | RabbitMQ UI | 15672 | 15672 | — | | EMQX Dashboard | 18083 | 18083 | — | ## 中间件管理界面 | 服务 | URL | 账号 | |------|-----|------| | EMQX Dashboard | http://localhost:18083 | admin / public | | RabbitMQ UI | http://localhost:15672 | iot / iot123456 | | InfluxDB UI | http://localhost:8086 | admin / iot12345678 | ## 文档索引 | 文档 | 内容 | 读者 | |------|------|------| | [架构设计](docs/architecture.md) | Mermaid 系统架构图、数据流序列图、DB ER 图、技术选型 | 架构师 / 面试官 | | [API 参考](docs/api-reference.md) | REST API、WebSocket 协议、MQTT 主题、Event 格式 | 前端 / 设备端开发 | | [开发指南](docs/development.md) | 项目结构、关键代码、7 个踩坑记录、扩展指南 | 接手开发者 | | [设计指引](docs/iot-design-guide.md) | REST/MQTT/微服务/时序库/WS 各项设计的为什么 | 学习者 | ## Swagger UI 每个服务自带交互式 API 文档,服务启动后浏览器打开: | 服务 | Swagger | |------|---------| | Device | http://localhost:8081/swagger-ui.html | | Telemetry | http://localhost:8082/swagger-ui.html | | Config | http://localhost:8083/swagger-ui.html | | Notification | http://localhost:8084/swagger-ui.html | | Gateway | http://localhost:8080/swagger-ui.html | ## 需求验收清单 | # | 需求 | 验证方式 | |---|------|---------| | 1 | 设备定时上报指标 | 模拟器每 5s 上报温度+湿度到 MQTT | | 2 | Web 实时查看指标 | Dashboard 仪表盘卡片 + 实时折线图 (WebSocket) | | 3 | 历史折线图 | 选择时间范围 → InfluxDB 聚合查询 → ECharts 渲染 | | 4 | Web 修改配置→下发设备 | 配置面板编辑 JSON → MQTT 下发 → 设备 ACK | | 5 | 设备改配置→同步云端 | 设备 publish config/report → Config Service 存新版本 | | 6 | 设备上下线状态 | Dashboard 设备列表 🟢/🔴,LWT 遗嘱消息触发离线 | | 7 | 添加/删除设备 | Dashboard 注册/删除按钮 → REST API → MySQL |