2995840376 066d374673 fix(M): 修复品类中文乱码, 子设备在线状态按父网关判定
乱码: 服务器 mysql 客户端在 C locale 下 character_set_client=latin1, 迁移脚本经 Windows type|plink 管道执行时 UTF-8 字节被按 latin1 解读, 中文双重编码。修复: V25/V26 脚本首行加 SET NAMES utf8mb4, deploy-all.bat 的 mysql 调用补 --default-character-set=utf8mb4, 新增 V26 按 code 写回正确中文(幂等)。已验证 product_category.name 的 hex 为正确 UTF-8。

子设备在线: 涂鸦 Mesh/Zigbee 子设备无独立在线通道, SDK 与云端快照对其 online 恒 false, APP 上报后被写成离线。后端新增 resolveEffectiveOnlineStatus —— 上报在线即 online; 子设备上报离线时以父网关为准(父在线则 online); 设备列表输出再做一次父网关聚合, 历史数据立即生效。前端 DeviceInfo 增报 parentDeviceId, 并按品类推断 is_gateway。

APP: 网关下挂设备不再用涂鸦 SDK 快照覆盖后端结论; 列表状态改为在线/离线/状态未知三态; uniapp 端修复状态比大写 ONLINE 导致恒离线、且把状态字符串当 DP JSON 解析的问题。生产验证: JD2BTSA/JD6BTSA 由 offline 变为 online。
2026-10-28 01:25:46 +08:00
..

IoT智能家居 APP

基于 uni-app + Vue 3 + TypeScript 开发的企业级物联网平台手机客户端。

✨ 核心特性

  • 🎨 一次开发,多端发布:H5 / iOS / Android / 微信小程序
  • 🌐 多平台设备:涂鸦、Google Home、Amazon Alexa、本地IoT设备统一管理
  • ⚡ 智能联动:可视化自动化场景编辑
  • 📊 实时数据:设备状态、历史数据可视化
  • 🔔 告警推送:多渠道告警通知
  • 🏠 场景管理:一键执行预置场景

🏗️ 项目结构

uniapp/
├── src/
│   ├── pages/                # 页面
│   │   ├── index/            # 首页
│   │   ├── login/            # 登录
│   │   ├── device/           # 设备管理
│   │   │   ├── list.vue      # 设备列表
│   │   │   ├── detail.vue    # 设备详情(控制面板)
│   │   │   └── add.vue       # 添加设备(配网)
│   │   ├── rule/             # 联动规则
│   │   │   ├── list.vue      # 规则列表
│   │   │   └── edit.vue      # 规则编辑
│   │   ├── alarm/            # 告警消息
│   │   │   └── list.vue
│   │   └── profile/          # 我的
│   │       ├── profile.vue
│   │       ├── setting.vue
│   │       └── about.vue
│   ├── services/             # 业务服务
│   │   ├── tuyaService.ts    # 涂鸦OpenAPI
│   │   ├── googleHomeService.ts  # Google Home
│   │   ├── alexaService.ts   # Amazon Alexa
│   │   └── deviceService.ts  # 设备统一抽象
│   ├── stores/               # Pinia状态管理
│   │   ├── user.ts
│   │   ├── device.ts
│   │   ├── rule.ts
│   │   └── alarm.ts
│   ├── utils/                # 工具类
│   │   ├── request.ts        # 网络请求
│   │   ├── config.ts         # 全局配置
│   │   ├── tuyaSign.ts       # 涂鸦签名
│   │   └── auth.ts           # 辅助函数
│   ├── static/               # 静态资源
│   │   ├── styles/
│   │   └── tabbar/           # 底部导航图标
│   ├── App.vue
│   ├── main.ts
│   ├── manifest.json         # uni-app配置
│   └── pages.json            # 页面路由
├── index.html
├── package.json
├── tsconfig.json
└── vite.config.ts

🚀 快速开始

环境要求

  • Node.js 16+
  • HBuilderX (推荐) 或 VSCode
  • 微信开发者工具(小程序调试)

安装依赖

cd f:/work/iotsaas/uniapp
npm install

H5 开发

npm run dev:h5
# 访问 http://localhost:9000

微信小程序开发

npm run dev:mp-weixin
# 用微信开发者工具打开 dist/dev/mp-weixin 目录

App 开发(Android/iOS)

推荐使用 HBuilderX 打开项目,运行 → 真机/模拟器。

⚙️ 平台配置

1. 涂鸦智能

  1. 在 涂鸦IoT开发平台 创建应用
  2. 获取 Client ID 和 Client Secret
  3. 修改 src/utils/config.ts:
TUYA: {
  CLIENT_ID: '你的ClientID',
  CLIENT_SECRET: '你的ClientSecret',
  ...
}

2. Google Home

  1. 在 Google Cloud Console 创建项目
  2. 启用 Smart Device Management API
  3. 创建 OAuth 2.0 客户端ID
  4. 修改 src/utils/config.ts:
GOOGLE_HOME: {
  CLIENT_ID: '你的ClientID',
  CLIENT_SECRET: '你的ClientSecret',
  ...
}

3. Amazon Alexa

  1. 在 Amazon Developer Console 创建 Smart Home Skill
  2. 配置 Account Linking(OAuth 2.0)
  3. 修改 src/utils/config.ts:
ALEXA: {
  CLIENT_ID: '你的ClientID',
  CLIENT_SECRET: '你的ClientSecret',
  ...
}

📱 功能列表

已实现 ✅

  • 多端登录(账号 + 第三方OAuth)
  • 设备列表(多平台聚合)
  • 设备详情(涂鸦控制面板)
  • 设备控制(开关/亮度/色温/颜色/温度/窗帘)
  • Wi-Fi配网(EZ/AP/蓝牙模式)
  • 联动规则管理
  • 告警消息查看
  • 第三方账号绑定

待开发 🚧

  • Google Home 设备控制(Phase 2)
  • Alexa 设备控制(Phase 3)
  • 数据可视化图表
  • WebSocket实时推送
  • 语音控制集成
  • Apple HomeKit 原生插件(Phase 4)

🎨 设备类型支持

类型 涂鸦 Google Alexa
灯(开关/亮度/色温/颜色) ✅ ✅ ✅
开关/插座 ✅ ✅ ✅
空调/温控 ✅ ✅ ✅
窗帘 ✅ ✅ ✅
门锁 ✅ ✅ ✅
摄像头 ✅ ✅ ✅
传感器 ✅ ✅ -

🔐 安全说明

  • 所有第三方平台的 Client Secret 建议保存在自家后端
  • Token 存储使用 uni.storage 加密保存
  • 生产环境应启用 HTTPS + 证书校验
  • 用户授权应使用 PKCE 流程

📋 开发规范

  • 使用 Vue 3 Composition API + <script setup> 语法
  • TypeScript 严格模式
  • 状态管理统一使用 Pinia
  • 样式使用 SCSS,遵循 BEM 命名
  • API 请求统一使用 utils/request.ts

🔗 相关项目

📄 许可

Copyright © 2026 IoT Platform. All rights reserved.