涂鸦出行开发指导

更新时间:2026-06-17 09:51:23LLM 副本以 Markdown 格式查看下载 PDF

本文主要面向 硬件、嵌入式、App、售后联调 开发者,汇总了涂鸦出行品类(电动车、电摩、滑板车)开发者与集成商在产品落地、配网联调、量产上线过程中遇到的高频问题,覆盖 DP 上报、调试工具、HID 感应解锁、车辆体检、骑行轨迹与导航、地图选型、消息推送、配网与连接故障排查 等场景。适用于涂鸦开发者平台与公版 App(涂鸦出行/Tuya Ride)的能力。

相关说明

  • 文中 dpXX 指设备的 DP ID(功能点编号),具体功能名/标识符以平台 DP 列表实际配置为准。
  • 蓝牙车 = 仅蓝牙 LE 通道;4G 车 = 蜂窝(CAT.1/NB)通道;BLE+X = 蓝牙 LE 为系统中枢、4G 模组挂在蓝牙 LE 之下的双模架构。
  • 如遇到平台后台无法定位的问题,或本文中提到的 DP 列表/工具入口在您的产品配置页中无法找到,请联系与您对接的涂鸦项目人员或 提交工单
  • 如需参考对应文档,可根据提示在 涂鸦开发者文档中心 通过标题搜索查看。

DP 上报规则

涂鸦出行开发指导

建议上报规则:

  • 配网、重连查询时全量同步:保证云端首次拉取到完整快照。

  • 定时循环上报的 DP 组包上报:云端按 DP 数量计算设备的上报量,组包能显著降低条数与 4G 流量。

  • 其他场景按变化上报:DP 值无变化不要重复上报。

  • 无需云端记录的 DP 不上云:例如 骑行时间车速 等只需本地展示的数据。

  • BLE+X 设备的骑行轨迹相关 DP 必须组包上报,建议上报频率 5~10 秒一次,避免单点风暴。

上报频率与组包策略直接影响日云端账单,新设计请从开始就严格遵循上述规则,避免量产后被动整改。

调试工具

模组调试助手

涂鸦提供的 模组调试助手 可以让 PC 直接以串口的方式与蓝牙/4G 模组通信,是嵌入式联调阶段排错的第一道工具。它有两种典型的 扮演 模式:

  • 模拟模组:让 PC 充当模组,验证 MCU 代码 在收到协议帧后的行为(适合 MCU 通用对接方案)。

  • 模拟 MCU:让 PC 充当 MCU,验证 模组固件 的串口行为与配网流程(适合模组固件/TuyaOS 联调)。

获取方式

前往 涂鸦开发者平台,在开发产品 > 产品开发 > 硬件开发 > 下载资料 中下载 PC 端调试工具压缩包,工具中直接附带使用说明。

涂鸦出行开发指导

涂鸦出行开发指导

工具使用

打开调试助手后,完成以下操作步骤:

  1. 首先,可以单击 切换协议MCU 模拟模组模拟 之间切换并完成相应配置。

  2. 设置 下,完成以下配置:

    • 串口配置:选择 串口名波特率
    • DP 点文件:导入功能点调试文件。
    • 选择工作模式:
      方案 工作模式
      通用对接模组(MCU SDK) MCU 与模块配合处理
      TuyaOS 方案(模组直接跑业务) 模块自处理

    涂鸦出行开发指导

  3. 操作 下,可以按协议字段直接发起串口指令,验证模组对 DP、配网指令的响应。

    涂鸦出行开发指导

多语言配置

涂鸦出行品类的 App 文案、面板提示、故障告警等均从平台多语言配置读取,多语言不配置 = 上报到 App 端为空白或显示原始 Key。您可以参考以下图示完成多语言配置,也可以参考 产品多语言配置

涂鸦出行开发指导

涂鸦出行开发指导

涂鸦出行开发指导

输入对应词条各语种的描述。其中,简体中文英语 为必填内容,其他语种可按需求配置。

自定义 DP/自定义故障值上线前,必须 把对应多语言条目补齐;漏配的字段在 App 端会直接显示英文 Key 或空字符串,是售后投诉的常见来源。

电池信息

电池数据是出行品类最重要的呈现项,建议从 整包概要单体明细 两个维度组织 DP:

DP 设计建议

维度 推荐 DP 类型 典型字段 说明
整包概要 标准 DP(Value/Enum/Bitmap) SOC、总电压、总电流、电池温度、充电状态、循环次数、估算续航 App 公版面板与首页直接呈现,必须按变化上报
BMS 故障 Fault/Bitmap BMS 通信故障、过充、过放、过温、单体压差告警等 用于车辆体检与告警推送,请参考 车辆体检
单体明细 Raw DP 各串电芯电压(mV)、温度(℃)、内阻、均衡状态 二级页/工具页查看;BMS 协议私有字段都用 Raw 透传

具体 DP ID/标识符请以 产品配置 > 功能定义 中实际选用的标准 DP 为准;自定义 DP 一律配齐多语言。了解更多,可参考 多语言配置

上报与协议要点

  • SOC 抖动过滤:BMS 原始 SOC 可能瞬时跳变 1~2 %,建议设备端做平滑(滑动平均/滞回)后再按变化上报。

  • 充电状态切换必报未充电充电中/充满拔电 的状态变化必须主动上报,否则 App 端不会及时切到充电动画。

  • 单位与字节序在文档里固化:电压常见单位 0.01 V/mV,电流常见单位 0.01 A/mA单位/字节序/是否带符号必需要在协议文档中写清楚,避免双方各自实现造成 App 端面板返工。

  • BMS 协议透传走 Raw:国内常见 BMS 的私有协议建议封装成 Raw DP 透传,App/云端再按 BMS 厂商协议解析。

  • BLE+X 设备:电量、电压、故障 这类高频 DP 在骑行场景中应一并组包上报,详细请参考 DP 上报规则

NFC 与密码管理

电动车 App 端通常提供 NFC 卡片开机密码 两种本地解锁方式,作为 蓝牙 LE/App 解锁之外的兜底入口(手机没电、网络异常、HID 暂不可用时仍能开机)。

DP 点配置

DP ID DP 名称 DP code 传输类型 数据类型 说明
81 NFC 卡片添加 nfc_id_input 可下发可上报(rw) String 参考 NFC 卡片添加
82 NFC 卡片删除 nfc_id_delete 可下发可上报(rw) String 参考 NFC 卡片删除
83 NFC 卡片同步 nfc_id_sync 只上报(ro) String 上报格式:[{"nfc_id":"ID"},{"nfc_id":"ID"}]{} 个数表示 App/设备支持的卡片槽位数
84 NFC 卡片清空 nfc_id_reset 可下发可上报(rw) String 参考 NFC 卡片清空
87 密码创建 password_creat 可下发可上报(rw) Raw 参考 添加密码
88 密码删除 password_delete 可下发可上报(rw) Raw 参考 删除密码
89 密码同步 password_sync 只上报(ro) Raw 上报格式:[{"pass_id":"编号","pass":"密码"},...]{} 个数表示密码槽位数

dp81:NFC 卡片添加(nfc_id_input

  • 下发
    • 添加卡片:{"publish":"1"}
    • 取消添加:{"publish":"0"}
  • 上报
    • 添加成功:{"upload":"1"}
    • App 主动取消:{"upload":"2"}
    • 本地取消:{"upload":"4"}
    • 非认证卡:{"upload":"5"}
    • 超过数量限制:{"upload":"6"}

dp82:NFC 卡片删除(nfc_id_delete

  • 下发{"nfc_id":"编号"}
  • 上报
    • 销卡成功:{"upload":"1"}
    • 销卡失败:{"upload":"0"}

dp84:NFC 卡片清空(nfc_id_reset

  • 下发{"publish":"1"}
  • 上报
    • 重置成功:{"upload":"1"}
    • 重置失败:{"upload":"0"}

dp87:密码创建(password_creat

  • 下发{"pass_id":"编号","pass":"密码"}(每次仅一组)
  • 上报
    • 创建成功:{"upload":"1"}
    • 创建失败:{"upload":"0"}
    • 超过数量限制:{"upload":"2"}

dp88:密码删除(password_delete

  • 下发{"pass_id":"编号"}
  • 上报
    • 删除成功:{"upload":"1"}
    • 删除失败:{"upload":"0"}

NFC 卡片同步与添删

  • 上电/联网后先同步:设备上报 nfc_id_sync,例如最多 3 张卡时上报 [{"nfc_id":""},{"nfc_id":""},{"nfc_id":""}];槽位已满则 App 禁用 添加 按钮。
  • 添加:App 下发 dp81 {"publish":"1"} 并展示约 30s 倒计时;刷卡成功后设备上报 {"upload":"1"} 并刷新 nfc_id_sync(示例:[{"nfc_id":"1234"},{"nfc_id":"4321"},{"nfc_id":""}])。用户主动退出时 App 下发 {"publish":"0"},设备上报 {"upload":"2"}无需 再同步列表。
  • 删除:App 下发 dp82 {"nfc_id":"编号"};成功则上报 {"upload":"1"} 并同步列表;失败上报 {"upload":"0"}不同步
  • 重置(清空全部):App 下发 dp84 {"publish":"1"};成功则上报 {"upload":"1"} 并同步为空槽位列表;失败上报 {"upload":"0"}

扩展上报值需在 App 多语言中配置字段 ty_outdoor_dp_nfc_id_input_id

开机密码同步与添删

上电/联网后先同步:设备上报 password_sync,例如最多 2 组密码时 [{"pass_id":"","pass":""},{"pass_id":"","pass":""}];已满则 App 禁用添加。

密码添加

App 弹窗输入 4 位 PIN 后下发 dp87(password_creat),如 {"pass_id":"001","pass":"1234"};成功上报 {"upload":"1"}password_sync 全量同步。

涂鸦出行开发指导

密码删除

App 下发 dp88(password_delete{"pass_id":"001"};成功上报 {"upload":"1"} 并同步;失败上报 {"upload":"0"}不同步

涂鸦出行开发指导

扩展上报值需配置多语言字段 ty_outdoor_dp_password_creat_id

密码相关功能点(dp87–dp89)均为 Raw 类型,云端不存储;需设备联网后由设备端主动 password_sync 初始化上报,App 才能展示本地密码列表。

产品与安全要求

  • App 内提供 添加命名删除启停 NFC 卡片入口;设备端 本地比对 UID 即可解锁,无需联网;解锁来源通过 DP 上报供骑行记录与审计。
  • App 设置 4~6 位 PIN(公版交互为 4 位),MCU 校验并本地保存;密码勿明文落日志、勿回读上云
  • 推荐支持 输错 N 次锁定/延时/报警上报,策略写入 DP 与协议文档。
  • 解绑须清空 NFC 白名单与开机密码;切换主用户须强制重设。
  • NFC 卡片白名单与开机密码一旦写到设备就属于敏感数据,存储区建议加密。
  • 不要把 PIN/卡片 UID 明文打印到串口日志,量产固件务必关掉相关 Debug 输出。
  • 设备端切勿硬编码默认密码(如 0000123456)作为出厂兜底,避免被批量利用。

固件升级与 OTA

已下架的固件,App 仍提示升级?

现象:开发者把某个版本固件下架后,App 端依然提示有新版本可升级。

解决方案先在云端把目标版本固件上架,再到固件升级页面把发布暂停/撤销,App 端缓存自然失效。直接下架会导致版本树不完整,App 端逻辑仍按缓存指引升级。

涂鸦出行开发指导

涂鸦出行开发指导

泰凌 TuyaOS(TLSR),OTA 升级失败

根本原因:老版本 SDK 对固件大小做了硬限制,不支持升级大于 124 KB 的固件

解决方案:升级 TuyaOS SDK 版本,新版本已经放开此限制;或者把固件裁剪到 124 KB 以内(仅推荐紧急规避)。

涂鸦出行开发指导

HID 感应解锁

工作原理

技术上选择 BLE HID + SecurityManager 实现 无需打开 App,靠近设备就能触发解锁

  • 手机蓝牙开启时,靠近 已配对 的 HID 设备会 自动重连

  • 设备根据蓝牙 RSSI 信号强度判断远近,触发开锁/关锁。

  • 传统蓝牙 LE 设备只在 App 打开时即连即释放;HID 设备在系统蓝牙列表里 保持配对,App 端通过判断设备是否已被系统连接,决定走 读取广播响应包标准连接 路径。

与传统 Tuya 蓝牙 LE 设备的关键差异:

阶段 传统蓝牙 LE 设备 HID 设备
连接/绑定 即连即释放(App 打开 → 连接,App 退出 → 断开) 系统已绑定时 App 直接读取已连接设备;未绑定时 由设备主动发起配对请求
解绑(在线) 下发 Tuya 蓝牙 LE 命令清绑定 下发命令清绑定 + 同时删除手机系统蓝牙配对信息
解绑(离线) 任意手机端/网关下发异常解绑命令 不支持离线解绑
  • 电动车属安全类产品,离线解除会让任何人在户外打开 App 即配网,存在被恶意配走的风险。
  • 离线解绑后,如果没有打开 App 通知设备并删除手机 系统设置 里的配对信息,新用户依旧能 “靠近解锁”。试想用户卖车后只是关闭网络与蓝牙 —— 买家可以悄悄骑走车。

DP 速查

DP ID 标识符 功能 备注
dp92 auto_unlock 自动解锁 由 iOS App 下发,设备收到后主动发起配对请求
dp93 auto_unlock_pair 无感解锁 由 Android App 下发,由 App 发起配对请求
dp94 fortify_distance_record 设防距离记录 打开 自动解锁 后,自动关锁 自动开启
dp95 disarm_distance_record 解防距离记录 FR8018 HID 2.0 已忽略此 DP
dp96 hid_bind HID 绑定

当前 App 端通过判断 是否包含 dp93 来识别 HID 版本(HID 1.0 没有 dp93),后续 App 会做版本协商升级。

iOS 与 Android 表现不一致排查

Android 正常、iOS 失效

  • 检查 DP 列表是否同时包含 dp92dp93

  • 确认设备端是否处理 dp92 —— iOS 路径下 设备端必须主动发起配对请求

iOS 正常、Android 失效

  • 检查 DP 列表是否同时包含 dp92dp93

  • 确认设备端处理 dp92/dp93 的功能逻辑分支。

  • 确认 App 端 HID 版本 —— HID 1.0 的 Android App 不会主动发起配对请求

本地解绑后手机仍自动回连

  • 设备是否开启了 HID 功能?开启 HID 后,本地解绑必须同步到手机系统蓝牙里删除该设备的配对信息,否则系统层会自动重连。

  • 本地解绑流程是否同时清掉了设备里持久化的绑定信息。

车辆体检

故障型 DP 与故障值可按需 修改 / 自定义;每个 App 端 UI 槽位独立,最多支持 10 个故障型 DP

UI 交互

涂鸦出行开发指导

DP 配置

产品配置 > 功能定义 中按出行公版勾选/配置故障型 DP,典型项如下(具体 DP ID 以您的产品实际为准):

DP 名称 DP code 传输类型 数据类型 功能点描述
故障检测 fault_detection 可下发可上报(rw) 布尔型(Bool) 用户主动体检入口;App 下发 1 触发检测
动力系统 power_system 只上报(ro) 故障型(Fault) 故障值:
  • 电流故障:current_fault
  • 电压故障:voltage_fault
  • 线路故障:line_fault
  • 功率管故障:power_tube_fault
  • 霍尔传感器故障:hall_sensor_fault
  • 温度传感器故障:temp_sensor_fault
  • 通信总线故障:com_bus_fault
  • 驱动故障:drive_fault
智能系统 smart_system 只上报(ro) 故障型(Fault) 故障值:
  • OTA 故障:ota_fault
  • 部分车型另含车把故障:handlebar_fault,按方案增减
锂电系统 lithium_battery 只上报(ro) 故障型(Fault) 故障值:
  • 放电故障:discharge_fault
  • 充电故障:charge_fault
  • 电池均衡故障:battery_balance_fault
  • 电池温度故障:battery_temp_fault
  • 电池 BMS 故障:battery_bms_fault
电子系统 electronic_system 只上报(ro) 故障型(Fault) 按方案自定义故障位;需在多语言中为每位配置展示文案

配置说明:

  • 故障型 DP 与故障值可按需 修改/自定义;每个故障型 DP 在 App 端都做了 UI 区分,最多支持 10 个故障型 DP

  • 故障值的展示文案 必须在多语言里配置,否则 App 端故障弹窗会出现空白条目。

数据定义

故障型 DP 数据格式:长度 1/2/4 字节,按 位(bit) 表示具体测试项有无异常;超出定义的位补 0;如果把超出范围的位置 1,会触发异常分支。

举例:动力系统(含 8 个故障值)

current_fault, voltage_fault, line_fault, power_tube_fault,
hall_sensor_fault, temp_sensor_fault, com_bus_fault, drive_fault
上报值 含义
0x00 8 项均无异常
0x03 bit0、bit1 异常,即 current_fault + voltage_fault 异常,其余正常

对应的串口数据包(动力系统 0x03):

55 AA 00 07 00 05 1C 05 00 01 03 30

涂鸦出行开发指导

多语言设置

进入 产品配置 > 多语言管理 > 产品功能,找到对应故障型 DP,把每个故障值的多语言文案补齐。自定义故障型自定义故障值 必须完整配置多语言,否则 App 端会出现 Key 字符串外露。

涂鸦出行开发指导

涂鸦出行开发指导

涂鸦出行开发指导

用户主动体检 vs 设备主动上报

用户主动体检

  • 用户在 App 单击 车辆体检/重新体检,App 下发 fault_detection=1

  • 设备端收到后执行本地体检,完成后上报 fault_detection=1同时上报全部故障型 DP

  • App 端以收到 fault_detection=1 上报的时间作为体检时间,并统计上报的故障数量。

  • App 下发后会启动 60 秒 定时器,倒计时结束未收到上报会报错。所以 务必不要漏报

设备主动上报

车辆发生故障时,设备可主动上报故障 DP;可在涂鸦开发者平台对故障信息配置 FAQ 条目与消息推送,触发时直接推到用户 App 消息中心与系统通知栏(前提是产品已开通消息推送服务)。

关于设备消息推送,请参考 推送设备消息

骑行轨迹

蓝牙车与 4G 车的核心差异

维度 蓝牙车 4G 车
定位来源 手机 GPS 设备 4G 模组定位
上报通道 App 上报 设备直接上报,云端落库
进入轨迹方式 必须手动点 开始骑行 点开骑行导航即直接进入虚拟仪表盘
流程 地图导航 > 开始骑行 > 虚拟仪表 > 上报(云端补齐时间)> 退出 地图导航 > 虚拟仪表 > 上报(云端补齐时间)> 退出

若蜂窝未插卡/未激活,骑行轨迹按 蓝牙逻辑 生成;蜂窝成功激活后,按 蜂窝逻辑 生成。

蓝牙车 DP 上报逻辑

触发

通过监听 开始骑行/结束骑行 按钮点击生成轨迹;如果直接返回首页/杀进程,需要等一段时间才会形成轨迹。

App 内部已有的过滤逻辑

  • 设备上报速度 ≠ 0 时,App 才上报 GPS 位置;速度 = 0 时不上报。

  • 本次里程 < 100 m 的不会形成轨迹(避免误触)。

  • GPS 在室内会漂移,速度 = 0 的 GPS 点在轨迹生成阶段会被过滤(骑行过程中不过滤)。

设备端要做的事

相关 DP 有变化即上报即可,不需要组包:

  • start = 1(已上报过)

  • 速度

  • 本次里程

  • 电量

单次骑行时间/单次平均速度的取数策略

  • 客户在涂鸦开发者平台 DP 列表选择 单次骑行时间/单次平均速度:优先取设备上报值。

  • 没选这两个 DP:云端从轨迹起点开始计时,并用 本次里程/单次骑行时间 计算单次平均速度。

蜂窝(4G)车 DP 上报逻辑

涉及 DP

启动(ACC=1)单次里程速度电量GPS

轨迹起点

云端 同时收到 start=1本次里程GPS 数据的点。每次启动时,第一个点的本次里程 = 0

上报顺序

  • 车辆启动:组包上报上述 5 个 DP。其中 start=1本次里程GPS 必报,速度、电量选报。

  • 行驶过程:持续组包上报上述 5 个 DP,频率建议 5~10 秒 / 次,使用默认通道,优先走蜂窝

  • 车辆熄火:组包上报上述 5 个 DP。其中 start=0本次里程GPS 必报,速度 、电量选报。

单次骑行时间/单次平均速度的取数策略与蓝牙车一致。

骑行导航(仪表显示导航信息)

搜索目的地后点开始骑行 才是骑行导航;直接点开始骑行 是轨迹记录。

DP 配置

涂鸦出行开发指导

状态切换示例

涂鸦出行开发指导

涂鸦出行开发指导

涂鸦出行开发指导

方向 Code 解析

仪表上的转向箭头由方向 Code 驱动,Code 与转向类型的对应关系如下:

字段 数值
左转图标 2
右转图标 3
左前方图标 4
右前方图标 5
左后方图标 6
右后方图标 7
左转掉头图标 8
直行图标 9
进入环岛图标 11
驶出环岛图标 12
到达目的地图标 15
标准小环岛,绕环岛左转,右侧通行地区的逆时针环岛 21
标准小环岛,绕环岛右转,右侧通行地区的逆时针环岛 22
标准小环岛,绕环岛直行,右侧通行地区的逆时针环岛 23
标准小环岛,绕环岛调头,右侧通行地区的逆时针环岛 24

地图与导航选型

国内/海外、Android/iOS 选型

用途 区域 平台 服务商
地图 国内 Android 高德
地图 国内 iOS Apple 地图
地图 海外 Android 谷歌
地图 海外 iOS Apple 地图
导航 国内 Android 高德
导航 国内 iOS 高德
导航 海外 Android Mapbox
导航 海外 iOS Mapbox

涂鸦出行开发指导

Apple 地图 无需 申请地图 Key;其余地图/导航服务都需要按区域申请对应 Key 并填写到 App 控制台。

资源链接:

地图 Key 失效问题排查

地图 Key 错误/过期/限流时,App 端常见的视觉表现:

涂鸦出行开发指导 涂鸦出行开发指导

排查顺序:控制台 Key 是否过期、是否限制了 SHA1 签名、是否限了 IP 或域名、是否选错环境(Debug vs Release)。

地理围栏

参考文档:车辆地理围栏

消息推送

App 端消息中心/系统通知栏的推送消息由涂鸦云侧 设备消息服务 触发。

  • 参考文档:推送设备消息
  • 完整链路:设备 DP 上报 > 云端按消息模板匹配 > 推送到 App/系统通知栏。

自查清单:

  • 在产品配置 > 消息推送/告警服务 中确认目标 DP 已经配置了消息模板(含多语言)。

  • 设备端确认 DP 上报到云端可见(在产品调试面板里能看到 DP 值变化)。

  • App 端在 我的 > 消息中心 > 消息设置 中确认对应分类的开关已开启,系统通知权限已授予。

  • 若链路仍异常(消息已下发但 App 收不到,或缺少推送条目),请联系对接的涂鸦项目人员或 提交工单,由涂鸦支持协助查询 消息发送单/UID 推送状态

Debug 版本 App 没有 消息推送通道,要验证推送链路 请使用 Release 包

蜂窝上报蓝牙版本号

蜂窝模组上报蓝牙版本号有两个时机:

  • 蜂窝开机 → 发送查询版本协议给蓝牙 → 蓝牙回复 → 蜂窝在连上服务器后上报。

  • 通过蜂窝给其它外设升级完 → 蜂窝重新发送查询信息指令给蓝牙 → 蓝牙回复后蜂窝上报。

除以上两种场景,蜂窝默认不会主动上报蓝牙版本号;蓝牙回复的版本号也只在蜂窝模组的内存中保留。

通用排错

App 扫描不到设备

排查路径:

  • 通用对接(MCU SDK):模组未完成初始化,参考 基础功能模组调试助手 完成初始化流程。

  • TuyaOS:确认设备是否打开了广播。

  • nRF Connect 用法可自行上网搜索,如参考百度经验。

  • 配网状态:

    • 0x41(未配网):设备尚未绑定账号,可被 App 普通搜索 发现并发起配网;常见于出厂或解绑后的广播(Service Data 首字节为 0x41)。
    • 0x49(已配网):设备已绑定某一账号,必须先解绑 才能被新账号 App 搜到并连接。
  • 配网模式:

    • 0x06(自发现 + 扫码配网):App 可通过 设备列表搜索 发现设备,也支持 扫码 配网;Manufacturer Data 首字节为 0x06 时通常表示该能力。
    • 0x08(扫码配网):App 不会 用普通搜索发现,只能 扫码 完成配网;若 nRF Connect 能扫到但 App 列表没有,优先核对是否为 0x08
涂鸦出行开发指导

设备配网不成功

可能原因:

  • 配网成功后,App 紧跟着发送一个查询设备型号的命令(0x00),设备在超时时间内没有响应,导致 App 主动断开连接。此时,需要检查设备端对 0x00 命令的处理逻辑。

  • 设备 开启了强绑定功能,且 未在老账号上解除绑定。请参考下文 A 账号未解绑、B 账号无法连接

A 账号未解绑、B 账号无法连接

涂鸦把 设备 的绑定关系分成 强绑定/中绑定/弱绑定 三个等级,配置在 PID 上,可随时更改、即时生效(跨区强绑定 例外,需经过移除 + 激活事件后才生效)。

等级 释义 典型场景
强绑定 当前用户必须先在 App 解绑,下一个人才能配网;设备调云端重置接口会被云端拒绝 IPC、门锁、对安全性要求高的电动车
中绑定 限制弱于强绑定,常用于 卖出后通过工单解绑 场景
弱绑定 设备本地重置即可让新账号配网 无安全敏感的家电

强绑定的几个特殊情况

  • 未绑定即不受约束:调用 active 激活成功但还没绑用户的设备,可被第二次激活。

  • 同家庭管理员豁免(2023.05.18 起):如果配网人对设备所在家庭有 管理员权限,允许直接二次激活,不必走 先解绑

  • 判同设备的依据是 UUID:云端按 UUID 区分设备;物理上同一台设备烧不同 UUID 会被云端当作两台,不同物理设备烧同一 UUID 会被当成一台。

  • 强行配网会被拒:同区/跨区 App 端均会提示 设备已被别人绑定,您不能配网

如何解绑

  • App 内自助(推荐,较快):用绑定账号登录 → 设备详情 → 移除设备/解绑并清除数据

  • 走涂鸦支持:如遇旧账号联系不上、测试样机不知去向、客户已离职等情况,请 提交工单 并提供 PID + UUID + MAC,由涂鸦运营在后台帮助解绑。

强绑定现象

A 账号连接设备
  └─ 断连后设备本地重置
       └─ 设备广播为「未绑定」状态
            └─ B 账号能发现设备但连接不上(App 主动断开)
                 └─ A 账号原界面无法直接连接,但可以「添加设备」并配网成功
                      └─ A 账号执行「解除绑定」或「解绑并清除数据」后,B 账号才能连接

弱绑定现象

A 账号连接设备
  └─ 断连后设备本地重置
       └─ 设备广播为「未绑定」状态
            └─ B 账号能发现设备且能直接连接成功

排查

检查设备是否开启了 强绑定(看产品配置页 PID 的绑定级别属性)。

涂鸦出行开发指导

本地解绑后手机仍自动回连

请检查以下:

  • 设备是否开启了 HID 功能?开启 HID 后,本地解绑 必须 同时到手机系统蓝牙里删除该设备的配对信息。

  • 本地解绑时是否一并清掉了设备持久化的绑定信息。

授权码写在代码中,解绑后无法配网

  • 根本原因:客户在代码中直接硬编码了 三元组(PID、UUID、Authkey),同时启用独立授权流程,授权失败导致代码里写入的授权三元组失效。

  • 解决方式:更换为一组有效三元组,并重新授权;长期方案是不要硬编码三元组,并参考 烧录授权(涂鸦开发者文档) 完成标准烧录流程。

配网二维码丢失,如何重新找回

  1. 获取设备的 MAC 地址/SN

  2. 使用平台上的 二维码生成 工具重新生成。

  3. 把 SN 镭射贴附到设备上即可。

蓝牙跨区域配网

这里的 跨区 指设备在 A 区域生产,在B 区域激活与使用。

  • 关键规则:

    • 共享设备跨区激活蓝牙跨区同步 两个高级能力 必须打在下单 PID 上不要打在激活后的 PID 上

    • 激活后的 PID 在激活之后才能确定,而上面两个标位是在 设备发现阶段(激活前) 使用,所以采用的是 下单时的 PID 进行判断。

  • 如果两个标位被错误地打到激活后的 PID 上,自查方式:

    • 在产品配置页 核对 PID 与授权 PID 是否一致

    • 联系与您对接的涂鸦项目人员核查设备 下单 PID 与授权状态(涉及内部 授权信息查询 工具)。

蓝牙连接不稳定/频繁断连

排查顺序:

  1. 天线/屏蔽:检查产品硬件、模组天线是否被金属件遮挡,附近是否有电感等器件干扰。

  2. MCU 中断负载:Application 中是否有频繁中断占用(如高频 Timer 中断):高频中断会让蓝牙中断无法正常进入,导致连接不稳定。

  3. 中断回调耗时:尽量降低中断回调里的代码运行时间,避免阻塞蓝牙协议栈。