蓝牙配网业务介绍
功能简介
蓝牙配网,顾名思义,通过使用蓝牙通道,完成对设备的配网过程。蓝牙配网相对于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和设备进行蓝牙通信,完成配网