【技术干货】通过DP实现经典蓝牙与APP配对

愚者千虑必有一得
Posts: 492

如何通过 DP 实现支持经典蓝牙的联网单品设备与 App 配对

经典蓝牙模块(Classic Bluetooth)主要用于呼叫和音频传输,所以经典蓝牙最主要的特点就是功耗大,传输数据量大。蓝牙耳机、蓝牙音箱等场景大多采用经典蓝牙,因为蓝牙是为传输声音而设计的,是短距离音频传输的最佳选择,传输速度比低功耗蓝牙(Bluetooth Low Energy) 快的多。

涂鸦Wi-Fi模组(Wi-Fi & 蓝牙双模模组) + 经典蓝牙的硬件组合,产品既可实现直接连入涂鸦云(不依赖网关),又可实现在无外网的情况下 App 仍然可通过经典蓝牙给设备传输音频等大流量数据。接下来通过具体案例分析来讲述如何实现产品连入涂鸦云后 App 和 经典蓝牙配对的功能。

方案背景

  • 产品硬件:Wi-Fi & 蓝牙双模模组 + 带经典蓝牙功能的MCU

  • 接入涂鸦方式:

    • 基于涂鸦提供的 MCU SDK 开发
    • App 也是基于涂鸦小程序开发
  • 想要实现的功能:设备通过 Wi-Fi 连入涂鸦云后,用户点开设备面板后可绑定设备的经典蓝牙模块。之后 App 可通过经典蓝牙向设备发送数据。


推荐解决方案

  • 数据交互通路: 通过自定义 DP 来进行配对数据交互

  • 自定义 DP 建议说明

    ​ dp1: 类型:字符串型

    ​ 作用:上报 经典蓝牙的 Mac 地址,名称, 配对状态, 连接状态。

    ​ dp2: 类型:布尔型

    ​ 作用: 让经典蓝牙恢复出厂设置

    ​ dp3: 类型:布尔型/数值型

    ​ 作用:让设备开启经典蓝牙配对窗口

  • 交互流程:

sequenceDiagram App ->> 设备: 1.发动 dp1 的查询指令 设备 ->> App: 2.返回 dp1,其中包含经典蓝牙的相关信息 App ->> App: 3.判断当前设备的经典蓝牙是否已经配对 opt 经典蓝牙未配对 App ->> App: 4.弹窗提醒 App需要在设备附近 App ->> 设备: 5.发送 dp3 让设备开启配对窗口。 note over App: 6.经典蓝牙配对流程 end opt 经典蓝牙已配对 App ->> App: 7.查询当前系统中的配对列表,<br/>判定是否当前手机已配对该设备,<br/>若不是,可给予相关提示。 App ->> App: 8.根据 dp1 中的连接状态进行显示。 end note over App,设备: App 与设备解绑 opt 设备本地解绑 设备 ->> 设备: 9.设备本地清除配对信息 end opt App 在线解绑 App ->> 设备: 10.断开与经典蓝牙的连接并发送 dp2 设备 ->> 设备: 11.收到 dp2 后,经典蓝牙设备恢复出厂 end

App 接口说明

  • 在步骤6 经典配对流程中,安卓和 IOS 的流程有差异。

    • 安卓:可直接调用 App SDK 提供的发起配对接口

      Code: Select all

      // deviceMac 从 dp1 中获取的经典蓝牙 mac
      // response 可告知是否配对成功 
      // 小程序对应接口 connectBTBond
      IThingBleOperator.createBond(String deviceMac, IResultCallback response);
    • IOS:弹窗提醒,用户点击弹窗后跳转到系统蓝牙去配对。

  • 在步骤 7 需要查询系统已配对列表
  • 在步骤10 中断开连接,可调用以下接口

    Code: Select all

    // deviceMac 从 dp1 中获取的经典蓝牙 mac
    // 小程序对应接口 removeBond
    IThingBleOperator.removeBond(String deviceMac, IResultCallback response);
    ```[/list]
scanway_lin
Posts: 9

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

我们现在是rn,而且 看起来是 拿到设备的mac地址,让面板去发起链接, 我看了下 用到的api现在rn是没有的。即使拿到了设备的mac地址,我也没办法发起请求。需要如何去解决

yingtao_33
Posts: 245

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

scanway_lin 2023年 Sep 11日 10:47

我们现在是rn,而且 看起来是 拿到设备的mac地址,让面板去发起链接, 我看了下 用到的api现在rn是没有的。即使拿到了设备的mac地址,我也没办法发起请求。需要如何去解决

如果是 RN,请参考文档:
https://appci.tuya-inc.top:7799/wiki/pa ... ger/1.0.3/
createBTbond 发起连接请求
removeBTbond 断开连接
jumpToSettingPage 跳转到系统的设置页面

scanway_lin
Posts: 9

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

https://appci.tuya-inc.top:7799/wiki/pa ... ger/1.0.3/ 链接打不开,需要开通什么权限不?

愚者千虑必有一得
Posts: 492

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

稍等,我们内部协调一下,安排一个面板的同事来协助。

WiSan
Posts: 32

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

你好,请帮忙提供下以下信息:

  1. 接入AppSDK 组件及版本号?
  2. 你是基于小程序还是RN面板开发方式?
  3. 期望涂鸦给出哪些能力支持及期望结果?(可用伪代码明示)
  4. 期望何时给到解决方案?
scanway_lin
Posts: 9

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

WiSan 2023年 Sep 11日 14:45

你好,请帮忙提供下以下信息:

  1. 接入AppSDK 组件及版本号?
  2. 你是基于小程序还是RN面板开发方式?
  3. 期望涂鸦给出哪些能力支持及期望结果?(可用伪代码明示)
  4. 期望何时给到解决方案?

1.tuya-panel-kit: "4.7.7"
2.RN
3.期望涂鸦能协助解决“透传模组+MCU经典蓝牙”方案可以通过app来控制连接经典蓝牙的功能,提供PDF格式的例程文档。
4.期望本周三能协助解决

WiSan
Posts: 32

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

scanway_lin 2023年 Sep 11日 14:57
WiSan 2023年 Sep 11日 14:45

你好,请帮忙提供下以下信息:

  1. 接入AppSDK 组件及版本号?
  2. 你是基于小程序还是RN面板开发方式?
  3. 期望涂鸦给出哪些能力支持及期望结果?(可用伪代码明示)
  4. 期望何时给到解决方案?

1.tuya-panel-kit: "4.7.7"
2.RN
3.期望涂鸦能协助解决“透传模组+MCU经典蓝牙”方案可以通过app来控制连接经典蓝牙的功能,提供PDF格式的例程文档。
4.期望本周三能协助解决

tuya-panel-kit是RN 基础库的版本,请问App是OEM App还是AppSDK开发的App?

scanway_lin
Posts: 9

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

WiSan 2023年 Sep 11日 15:11
scanway_lin 2023年 Sep 11日 14:57
WiSan 2023年 Sep 11日 14:45

你好,请帮忙提供下以下信息:

  1. 接入AppSDK 组件及版本号?
  2. 你是基于小程序还是RN面板开发方式?
  3. 期望涂鸦给出哪些能力支持及期望结果?(可用伪代码明示)
  4. 期望何时给到解决方案?

1.tuya-panel-kit: "4.7.7"
2.RN
3.期望涂鸦能协助解决“透传模组+MCU经典蓝牙”方案可以通过app来控制连接经典蓝牙的功能,提供PDF格式的例程文档。
4.期望本周三能协助解决

tuya-panel-kit是RN 基础库的版本,请问App是OEM App还是AppSDK开发的App?

AppSDK开发

lshinylee
Posts: 298

Re: 【技术干货】通过DP实现经典蓝牙与APP配对

tuya-panel-kit@4.10.0 上已经支持,文档正在审核中,预计明天上午会出来,到时可以关注下~ https://developer.tuya.com/cn/docs/iot/ ... 3o6dx30xf6

:D :D :D

Post Reply