智能家居物联网平台

智能家居物联网平台

智能家居物联网平台

基于微服务+微信小程序实现的物联网平台,目前处于软件实现阶段:模拟了智能灯和温湿度感应器的使用状态,后续打算基于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

JetBrains 内的 GitHub Copilot Agent Mode + MCP:从配置到实战

JetBrains 内的 GitHub Copilot Agent Mode + MCP:从配置到实战

1. 背景说明:Agent Mode 与 MCP 的意义 Agent Mode 是 GitHub Copilot 的新形态,它能理解自然语言指令,自动拆分任务,遍历项目文件,执行命令并修改代码,像一个“自主项目助手”一样工作。 Model Context Protocol (MCP) 是一套用于 Copilot 调用外部工具的协议标准,让 Agent Mode 能访问终端、读写文件、检查代码等能力。 JetBrains 自 2025 年 5 月起已提供 Agent Mode + MCP 公测支持。最新版的插件已经是正式的非Preview版本。 2. JetBrains 中如何启用 Agent Mode (1)

Lostlife2.0玩家行为预测:LLama-Factory训练游戏内决策模型

Lostlife2.0玩家行为预测:LLama-Factory训练游戏内决策模型 在现代开放世界游戏中,NPC的“聪明程度”早已不再是脚本堆砌的结果。当玩家在一个充满选择与后果的世界中自由行动时,如何让非玩家角色真正理解“这个人接下来可能会做什么”,成了提升沉浸感的核心命题。《Lostlife2.0》正是这样一个高自由度沙盒RPG——玩家可以潜行、战斗、谈判、背叛,甚至彻底偏离主线。面对如此复杂的行为空间,传统的规则引擎很快暴露了短板:逻辑分支爆炸、维护成本高昂、难以适应新内容。 于是我们转向AI,试图构建一个能“读懂玩家意图”的行为预测模型。但问题随之而来:大模型虽强,却笨重难调;微调流程繁琐,依赖专业团队;部署更是从实验室到生产环境的一道鸿沟。直到我们遇见 LLama-Factory —— 它不仅让我们用消费级硬件完成了7B模型的定制化训练,还让策划人员也能参与模型迭代。这背后究竟发生了什么? 大语言模型进入游戏领域,并非简单地把ChatGPT塞进对话框里。真正的挑战在于语义级别的上下文建模:给定当前场景(角色状态、环境信息、历史交互),模型能否推理出合理的下一步行为?比如,

文心一言是百度开发的AI对话工具,支持中文场景下的多轮对话、文本生成、知识问答等

理解文心一言的基础功能 文心一言是百度开发的AI对话工具,支持中文场景下的多轮对话、文本生成、知识问答等。其核心优势在于对中文语境的理解,包括成语、古诗词、网络用语等。熟悉基础指令如“总结这篇文章”“写一封商务邮件”能快速提升效率。 优化提问方式获得精准回答 避免模糊问题,尽量提供具体背景。例如“如何写工作周报”可改为“为互联网运营岗位写一份周报,需包含数据增长、活动复盘、下周计划三部分”。提问时加入角色设定(如“假设你是资深HR”)能增强回答的专业性。 处理复杂任务的拆分技巧 对于长文本生成或复杂问题,采用分步交互。先要求生成大纲,再针对各部分细化。例如撰写方案时,先输入“列出智能家居市场分析报告的5个核心章节”,再逐章补充内容。这种方式能减少输出偏差。 中文特色场景的应用案例 * 古诗词创作:输入“以春天为主题写一首七言绝句,包含‘燕子’意象” * 方言转换:尝试“把‘今天天气真好’翻译成粤语” * 公文写作:

AI写作助手来了!Qwen3-1.7B创意生成实测分享

AI写作助手来了!Qwen3-1.7B创意生成实测分享 导语:你有没有过这样的时刻——盯着空白文档半小时,标题还没想好;赶着交营销文案,却卡在第一句话;想写个有趣的故事开头,结果写了删、删了写……现在,一个装进笔记本电脑就能跑的AI写作助手真的来了。它不是动辄几十GB的庞然大物,而是一个仅1.7B参数、能在消费级显卡上流畅运行的轻量模型:Qwen3-1.7B。本文不讲参数、不聊架构,只用你每天都会遇到的真实写作场景,带你亲手试一试——它到底能不能帮你把“写不出来”变成“写得出来”,甚至“写得不错”。 1. 为什么是Qwen3-1.7B?一个能塞进你工作流的写作伙伴 很多人一听“大模型”,下意识想到的是需要多张A100、部署复杂、调用麻烦。但Qwen3-1.7B不一样。它的核心价值,不是和千亿模型比谁更“全能”,而是专注解决一个具体问题:在资源有限的前提下,提供稳定、可控、有风格的中文创意输出能力。 我们来拆解几个关键事实: