Page 1 of 1

【技术干货】 蓝牙配网对接文档

Posted: 2023年 Apr 20日 15:02
by 0x1abin

蓝牙配网业务介绍

功能简介

蓝牙配网,顾名思义,通过使用蓝牙通道,完成对设备的配网过程。蓝牙配网相对于WIFI配网(EZ/AP/共存配网)而言,主要为获取路由信息不同,其余流程都是复用、相同的。

流程说明

蓝牙流程说明.png
  1. 设备SDK初始化完成,发蓝牙广播。
  2. APP发现蓝牙广播,并判断绑定标识。绑定标识为1,说明设备已配网,绑定标识为0,说明未配网。APP界面会显示未配网设备。
  3. APP主动连接未配网设备。
  4. APP下发0x00设备查询指令,获取设备信息。APP会根据这些信息指定此设备的蓝牙连接策略。
  5. APP下发0x01配对指令。未配对的连接过30s就会被设备当做非法设备踢除,从而蓝牙断连。
  6. APP下发0x21蓝牙配网指令。设备通过此指令获取到路由ssid/密码和token信息。
  7. 设备SDK通过ssid和密码去连接路由器。
  8. 设备SDK通过token连云激活。完成整个配网流程。

从上面流程可以看出,蓝牙配网流程很简单,除了通过蓝牙通道获取路由信息ssid/pwd/token,后面的配网流程和WIFI配网是一模一样的。

Demo 修改

蓝牙和串口的实现文件

Code: Select all

include/bt_ext_porting.h
include/bt_uart_drv.h
src/bt_ext_porting.c
src/bt_uart_drv.c
src/tuya_ipc_uart_demo.c

修改说明

sdk通过以下这组接口操作蓝牙,demo中已有默认实现

Code: Select all

STATIC TUYA_OS_BT_INTF m_tuya_os_bt_intfs = {
        .port_init      = tuya_ext_bt_port_init,
        .port_deinit    = tuya_ext_bt_port_deinit,
        .gap_disconnect = tuya_ext_bt_gap_disconnect,
        .send           = tuya_ext_bt_send,               //蓝牙发送数据
        .reset_adv      = tuya_ext_bt_reset_adv,     //重置广播数据内容
        .get_rssi       = tuya_ext_bt_get_rssi,
        .start_adv      = tuya_ext_bt_start_adv,      //开启蓝牙广播
        .stop_adv       = tuya_ext_bt_stop_adv,      //停止蓝牙广播
        .assign_scan    = tuya_ext_bt_assign_scan,
        .scan_init      = NULL,
        .start_scan     = tuya_ext_bt_start_scan,
        .stop_scan      = tuya_ext_bt_stop_scan,
        .set_mac        = tuya_ext_bt_setmac,
        .get_mac        = tuya_ext_bt_getmac,
};

蓝牙UUID修改

image_7576291991334063.png
image_45341736426023127.png

配网流程

  1. sdk通过tuya_ext_bt_reset_adv设置广播数据和扫描应答数据
  2. 蓝牙广播
  3. app发现设备,连接蓝牙
  4. 蓝牙连接后调用bt_msg_cb(0, TY_BT_EVENT_CONNECTED, NULL)上报给sdk
  5. app和设备进行蓝牙通信,完成配网

Re: 【技术干货】 蓝牙配网对接文档

Posted: 2023年 Apr 21日 11:26
by guoke

你好!附件里好像没有帖子提到的demo相关文件和接口?请问可以提供一下吗?


Re: 【技术干货】 蓝牙配网对接文档

Posted: 2023年 Aug 3日 11:02
by 0x1abin
guoke 2023年 Apr 21日 11:26

你好!附件里好像没有帖子提到的demo相关文件和接口?请问可以提供一下吗?

你好,蓝牙 demo 已经更新。