蓝牙配网业务介绍
功能简介
蓝牙配网,顾名思义,通过使用蓝牙通道,完成对设备的配网过程。蓝牙配网相对于WIFI配网(EZ/AP/共存配网)而言,主要为获取路由信息不同,其余流程都是复用、相同的。
流程说明
- 设备SDK初始化完成,发蓝牙广播。
 - APP发现蓝牙广播,并判断绑定标识。绑定标识为1,说明设备已配网,绑定标识为0,说明未配网。APP界面会显示未配网设备。
 - APP主动连接未配网设备。
 - APP下发0x00设备查询指令,获取设备信息。APP会根据这些信息指定此设备的蓝牙连接策略。
 - APP下发0x01配对指令。未配对的连接过30s就会被设备当做非法设备踢除,从而蓝牙断连。
 - APP下发0x21蓝牙配网指令。设备通过此指令获取到路由ssid/密码和token信息。
 - 设备SDK通过ssid和密码去连接路由器。
 - 设备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修改
配网流程
- sdk通过tuya_ext_bt_reset_adv设置广播数据和扫描应答数据
 - 蓝牙广播
 - app发现设备,连接蓝牙
 - 蓝牙连接后调用bt_msg_cb(0, TY_BT_EVENT_CONNECTED, NULL)上报给sdk
 - app和设备进行蓝牙通信,完成配网