智能家居物联网平台

智能家居物联网平台

智能家居物联网平台

基于微服务+微信小程序实现的物联网平台,目前处于软件实现阶段:模拟了智能灯和温湿度感应器的使用状态,后续打算基于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.04yml文件中部分配置使用的是192.168.242.137而非本机地址,根据自己的配置进行替换

准备工作

  • 安装MySQLRedis,替换账号密码
  • 安装MQTT中间件EMQX,并新建用户分配权限,将用户名和密码在yml中对应位置进行替换
  • 安装Influxdb,获取自己配置的用户名和密码进行替换,注意要先创建bucketdevice_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发生重连
  • 最重要一点:目前智能灯的指令下发没有做确认操作,可能会出现指令下发了,但是硬件没有接收,这会导致数据库状态不对,需要对已下发的指令做短时间监听,硬件回传状态后再进行数据库的更改

在这里插入图片描述

Read more

工具篇-如何在Github Copilot中使用MCP服务?

工具篇-如何在Github Copilot中使用MCP服务?

Model Context Protocol (MCP) 是由 Anthropic 公司于 2024 年 11 月推出的一种开放协议标准,目的在于标准化 LLM 与外部数据源、工具及服务之间的交互方式。MCP 被广泛类比为“AI 领域的 USB-C 接口”。 一、vscode的安装 下载vscodeVisual Studio Code - Code Editing. Redefined安装完成打开 选择copilot,这个是AI助手,帮助你编程  然后注册登录,可以使用GitHub的账号登录,很多工具都可以通过GitHub帐号登录,所以注册一个GitHub帐号是很有必要的。 二、使用MCP 2.1 准备好MCP 先按这篇文章准备好高德地图的MCP:工具篇-Cherry Studio之MCP使用-ZEEKLOG博客 2.2 在Github Copilot中配置 MCP服务

VS Code+GitHub Copilot避坑指南:从安装配置到最佳实践的完整手册

VS Code + GitHub Copilot 深度驾驭手册:从避坑到精通的实战心法 如果你是一名 Visual Studio Code 的用户,并且对那个传说中能“读懂你心思”的 AI 编程伙伴 GitHub Copilot 感到好奇,甚至已经跃跃欲试,那么这篇文章就是为你准备的。我们不再重复那些泛泛而谈的“AI 将改变编程”的论调,而是直接切入核心:如何在你最熟悉的 VS Code 环境中,真正驯服 Copilot,让它从一个偶尔“胡言乱语”的助手,变成你编码流中如臂使指的高效组件。我们将聚焦于从安装配置的第一分钟开始,到融入你日常工作流的每一个细节,过程中你会遇到哪些真实的“坑”,以及如何优雅地跨过它们。这不是一篇简单的功能罗列,而是一份融合了配置技巧、心智模型和实战策略的深度指南。 1. 环境搭建与初始配置:奠定高效协作的基石 在兴奋地敲下第一行代码之前,一个稳固且经过优化的起点至关重要。许多初次使用者遇到的挫折,

GitHub Copilot 教程

文章来源:https://vscode.it-docs.cn/docs/copilot/overview.html GitHub Copilot 为 Visual Studio Code 增加了多代理开发功能。规划好你的方法,然后让AI代理在项目中实现并验证代码变更。并行运行多个代理会话:本地、后台或云端。从一个中心视角管理所有角色。内联建议、内联聊天和智能行为会帮助你完成整个编码流程。 代理与代理会话 代理端到端地处理完整的编码任务。给代理一个高级任务,它会将工作拆分成步骤,编辑文件,运行终端命令,调用工具,并在遇到错误或测试失败时自我纠正。每个任务都运行在一个代理会话中,这是一个持续存在的对话,你可以跟踪、暂停、继续或交接给另一个代理。 重要 你们组织可能在VS Code中禁用了代理。请联系你的管理员以启用此功能。 从中央视图管理会话 并行运行多个代理会话,每个会话专注于不同的任务。聊天面板中的会话视图为你提供了一个统一的地方来监控所有活跃会话,无论是本地运行、后台还是云端运行。查看每次会话的状态,切换,查看文件变更,

Flutter for OpenHarmony 实战:疯狂头像 App(四)— 通义万相 AIGC 联调与相册持久化实战

Flutter for OpenHarmony 实战:疯狂头像 App(四)— 通义万相 AIGC 联调与相册持久化实战

Jan-31-2026 23-32-23 Flutter for OpenHarmony 实战:疯狂头像 App(四)— 通义万相 AIGC 联调与相册持久化实战 摘要:行百里者半九十。本文作为“疯狂头像”(Crazy Avatar)实战系列的终章,我们将完成从 AI 异步生成到图片系统级保存的全链路闭环。本文将重点攻克鸿蒙(HarmonyOS)侧的 module.json5 权限合规、媒体库写入逻辑及网络请求健壮性处理,助你打造商业级 AIGC 应用。 前言 在之前的《动效篇》中,我们为应用注入了生动的灵魂。但一个真正的 AI 工具,如果不能产生“作品”并持久化到物理存储,它就只是一个精致的“空中楼阁”。 在鸿蒙(HarmonyOS Next)生态中,文件的存储安全与权限管理有着极其严格的标准。