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
..

XHai 智能物联 - Android 客户端

基于涂鸦 Thing Smart Home SDK 7.5.0 原生开发的 Android 客户端。 实现:用户登录(iotsaas 后端)+ 涂鸦账号绑定/授权。


一、功能范围(当前阶段)

功能 状态 说明
用户登录 ✅ 对接 iotsaas 后端 POST /api/v1/auth/member/login
用户注册 ✅ 对接 POST /api/v1/auth/member/register
涂鸦账号绑定 ✅ 涂鸦原生 SDK 登录,绑定后同步 tuya_user_binding
涂鸦账号解绑 ✅ 对接 POST /api/v1/tuya/auth/unbind
绑定状态查询 ✅ 对接 GET /api/v1/tuya/auth/status
设备管理/控制 ⏳ 走通绑定后再开发

二、环境要求

  • Android Studio(Hedgehog 或更新版本)
  • JDK 17(涂鸦 SDK 需要)
  • Android SDK(API 34)
  • NDK(arm64-v8a、armeabi-v7a)

三、涂鸦平台配置(必须完成)

⚠️ 关键:涂鸦 SDK 初始化要求 AppKey、AppSecret、包名、签名 keystore 的 SHA256 四项全部与涂鸦平台登记一致,否则报 illegal client。

1. 确认 App 授权信息

登录 涂鸦开发者平台 → 云开发 → 你的项目 → App 授权:

  • AppKey(Client ID):wuvw788psccvxndpyxnv
  • AppSecret(Client Secret):需确认
  • 包名:com.xhai.iot

2. 配置签名证书 SHA256

涂鸦 SDK 校验应用签名。必须把打包用 keystore 的 SHA256 配置到涂鸦平台对应 App 的"Android 签名证书"里。

本项目已生成开发用 keystore:app/xhai_iot.jks(密码 xhai123456,alias xhai)

  • SHA256:F0:D1:85:41:CD:D2:21:E2:84:77:FF:E1:A4:CF:F7:19:41:D4:8A:BD:B7:77:83:F2:C0:DB:CE:FB:69:25:F6:13
  • SHA1(涂鸦 identifier 用):0C44B4A0C696BC823B5BEFD52B16CFBF7D169B78

⚠️ 注意:涂鸦平台"App授权"里的 identifier(SHA1+包名)必须与打包签名一致。若涂鸦后台已配置了其他 keystore 的 SHA1,请使用那个 keystore 替换 app/xhai_iot.jks,或在涂鸦后台更新 SHA1。


四、构建步骤

方式一:Android Studio(推荐)

  1. 用 Android Studio 打开 f:/work/iotsaas/Android 文件夹
  2. Android Studio 会自动下载 Gradle、AGP、涂鸦 SDK 依赖(需网络)
  3. 等待首次 Gradle Sync 完成
  4. 连接手机,点击 Run

方式二:命令行

cd Android
gradle assembleDebug

五、关键配置文件

文件 作用
app/build.gradle 依赖、签名、ABI 配置
app/src/main/AndroidManifest.xml AppKey/AppSecret、Activity 注册
app/src/main/java/.../data/ApiConfig.java 后端地址、涂鸦密钥
app/src/main/java/.../TuyaApplication.java 涂鸦 SDK 初始化
app/src/main/java/.../ui/TuyaBindActivity.java 涂鸦登录+绑定

六、API 对接(iotsaas 后端)

后端接口 方法 作用
/api/v1/auth/member/login POST 登录
/api/v1/auth/member/register POST 注册
/api/v1/tuya/auth/status GET 涂鸦绑定状态
/api/v1/tuya/auth/bind-native POST 绑定同步
/api/v1/tuya/auth/unbind POST 解绑

所有涂鸦接口需要 Authorization: Bearer <token> 头。


七、常见问题

Q1: 启动报 illegal client

检查 AppKey/AppSecret/包名/keystore SHA256 四项与涂鸦平台是否一致。

Q2: 绑定同步失败

检查后端是否已登录(token 有效)、tuya_user_binding 是否写入。

Q3: 涂鸦登录失败

确认涂鸦账号存在、网络正常、SDK 已初始化成功。