跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaWeChat大前端java

智能家居物联网平台

综述由AI生成一个基于微服务架构实现的智能家居物联网平台项目。后端采用 JDK 21、Spring Boot 3.2.5 及 Spring Cloud Alibaba,数据库使用 MySQL 和 Redis,时序数据存入 Influxdb。前端基于 Uniapp 和 Vue2 开发微信小程序。通信协议采用 MQTT(EMQX)和 WebSocket。文章详细列出了技术栈、部署流程(含 Nacos、MySQL、Redis、EMQX 配置)、MQTT 主题说明及 WebSocket 连接校验逻辑。同时指出了当前项目的不足,如权限校验待优化、消息同步延迟、指令下发无确认机制等,并提出了后续改进方向,包括引入 Spring Security、RabbitMQ 异步处理及硬件状态回传确认。

BackendPro发布于 2026/4/6更新于 2026/5/1848 浏览
智能家居物联网平台

智能家居物联网平台

基于微服务 + 微信小程序实现的物联网平台,目前处于软件实现阶段:模拟了智能灯和温湿度感应器的使用状态,后续打算基于 STM32 制作硬件并接入,接入硬件后会将微信小程序改成 Android 版本。

Gitee 地址:仓库链接

技术栈

后端

  • JDK:21
  • Spring Boot:3.2.5
  • Spring Cloud:2023.0.1
  • Spring Cloud Alibaba:2023.0.1.0
  • Spring Data JPA
  • Nacos:2.5.2
  • MQTT
  • WebSocket

数据库

  • MySQL:8.0
  • Redis:6.2.x
  • Influxdb:2.8.0

前端

  • Uniapp
  • Vue2

部署流程

需要先确保技术栈中所有的依赖均已安装,MQTT 这里使用的中间件是 EMQX(5.8.9),测试 MQTT 连接使用的是 MQTTX。推荐将中间件安装在 vmware 中,我使用的 Linux 版本是 20.04,yml 文件中部分配置使用的是 192.168.242.137 而非本机地址,根据自己的配置进行替换。

准备工作

  • 安装 MySQL 和 Redis,替换账号密码
  • 安装 MQTT 中间件 EMQX,并新建用户分配权限,将用户名和密码在 yml 中对应位置进行替换
  • 安装 Influxdb,获取自己配置的用户名和密码进行替换,注意要先创建 bucket:device_report
  • 安装 Nacos 用于服务注册

1. 克隆仓库代码

  • 后端使用 IDEA 软件
  • 仓库代码中 iot_miniprogram.zip 为前端压缩包,解压后使用 uniapp 打开

2. MySQL 中运行 iot.sql 文件

3. 启动所有服务

  • gateway-service
  • user-service
  • device-service

4. 在 uniapp 中替换 manifest.json 文件中微信小程序的 AppID 并运行到微信小程序

5. 查看 MySQL 中用户表手机号,使用手机号进行登录,登录成功后可以开始体验

项目中所有的控制器 controller、入参和回参都带注释,可以查看注释了解对应功能

MQTT 主题说明

为了及时更新设备联网状态,使用了 EMQX 自带的主题上下线订阅。在 yml 文件中,预置订阅的主题 $SYS/brokers/+/clients/# 可以在设备上下线后推送通知。

所有的设备在与 MQTT 建立连接时,设置的 client_id 为数据库中 iot_device 表中的 device_sn 字段,这样服务器收到消息时可以通过 sn(设备序列号)来标识每一个设备。

MQTT 所有消息体均使用 JSON 格式。

WebSocket 连接说明

在 device-service 服务中的 WebsocketConfig 文件中,可以看到建立连接时会校验 token 参数,由于 token 只有在登录成功后才会返回给用户,因此没有携带此参数的连接会被拒绝。这个权限校验方式可能还不太完善,后续会考虑使用其他校验方式。

学习说明

本项目目前比较简单,微服务中只拆分了网关服务,用户服务和设备服务。

  • 网关服务主要用于负载均衡,Nacos 很多特性比如统一配置管理和自动刷新还没有使用;
  • 用户服务权限校验也只是引入了 JWT,后续打算使用 Spring Security 做权限校验;
  • 设备服务中 Influxdb 的定时同步还可以继续优化,目前是逻辑是每 2 分钟同步一次温湿度消息,可能延迟会有点严重,再想想怎么同步好一点;
  • MQTT 的监听消息逻辑中,会考虑使用消息队列 RabbitMQ 或者异步处理,因为在实际操作中,出现过一个 BUG,监听消息处理过程中,如果处理时间过长会影响 MQTT 的心跳,导致 MQTT 发生重连;
  • 最重要一点:目前智能灯的指令下发没有做确认操作,可能会出现指令下发了,但是硬件没有接收,这会导致数据库状态不对,需要对已下发的指令做短时间监听,硬件回传状态后再进行数据库的更改。

在这里插入图片描述

目录

  1. 智能家居物联网平台
  2. 技术栈
  3. 后端
  4. 数据库
  5. 前端
  6. 部署流程
  7. 准备工作
  8. 1. 克隆仓库代码
  9. 2. MySQL 中运行 iot.sql 文件
  10. 3. 启动所有服务
  11. 4. 在 uniapp 中替换 manifest.json 文件中微信小程序的 AppID 并运行到微信小程序
  12. 5. 查看 MySQL 中用户表手机号,使用手机号进行登录,登录成功后可以开始体验
  13. MQTT 主题说明
  14. WebSocket 连接说明
  15. 学习说明
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 鸿蒙分布式智能办公应用架构设计与性能优化
  • C++ 树状数组算法详解与实战
  • AIGC 个性化与定制化内容生成:技术原理与实践
  • 基于FPGA的数字下变频Verilog实现:CORDIC与CIC滤波器协同设计
  • Gossip 协议解读
  • AI 编译器 SRAM 内存分配管理算法调研
  • Python 爬虫入门:新手如何编写你的第一个脚本
  • 主流大模型架构全景:GPT、LLaMA、DeepSeek 与 Qwen 深度对比
  • AIGC 核心技术解析:GPT、BERT 与 Transformer 模型原理
  • 免疫治疗门诊动线优化:Go 离散事件仿真从常规排队到 ResusBay 挤兑
  • MixAIHub:主流 AI 模型镜像访问方案
  • Linux 下 OpenClaw 安装、初始化及 Web UI 配置指南
  • 制造业与大模型深度融合:10 家头部企业实践解析
  • Flutter 三方库 anthropic_sdk_dart 鸿蒙适配与 Claude 集成指南
  • JavaAI 插件深度体验:自然语言驱动的项目快速构建
  • 从零开始理解词向量:共现矩阵与语义表示
  • 基于 PaddleOCR-VL 的本地 OCR 工具搭建与公网访问指南
  • C++ WebSocket 在线五子棋对战系统全栈实战
  • 大厂 Android 性能优化实战案例合集:腾讯、字节、阿里等技术分享
  • 数据结构:二叉树基础概念与堆实现详解

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online