涂鸦蓝牙有三条技术方案。蓝牙设备与手机一对一相连的蓝牙单点设备(BLE),涂鸦自研的蓝牙拓扑通信 涂鸦 Mesh 和蓝牙技术联盟发布的蓝牙拓扑通信 蓝牙 Mesh。除了以上三种之外,还有一些多协议设备也会使用到蓝牙技术,例如同时具备 Wi-Fi 能力和蓝牙能力的 双模设备,也可以兼容使用蓝牙和 Wi-Fi 进行配网。
类型 | 设备应用示例 |
---|---|
蓝牙单点 | 体脂秤、手环、温控器、电动牙刷、门锁等 |
蓝牙 Mesh | 一路、二路、五路等灯泡、插座、传感器等子设备 |
涂鸦 Mesh | 与蓝牙 Mesh 产品类似,通信协议为涂鸦自研 |
双模设备 | 蓝牙 Mesh 网关、IPC 设备、新版多协议 Wi-Fi 设备等 |
说明:双模配网的蓝牙配网部分,使用的是蓝牙单点技术为设备配网,将放到蓝牙单点章节进行说明。
功能描述
蓝牙技术具备的部分功能如下:
- 设备配网
- 扫描并发现设备
- 设备配网
- 设备管理
- 检查设备当前联网状态
- 连接设备
- 设备操作和远程控制
- 解绑设备
- 固件升级
- 检测设备版本
- 升级设备固件 OTA
App 使用蓝牙所需要权限
在 iOS 13 中,苹果将原来蓝牙申请权限用的 NSBluetoothPeripheralUsageDescription
字段,替换为 NSBluetoothAlwaysUsageDescription
字段。在 info.plist
中添加新字段:
<key>NSBluetoothAlwaysUsageDescription</key>
<string></string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string></string>
蓝牙单点
单点蓝牙设备指的是具有和手机终端通过蓝牙一对一连接的设备,例如蓝牙手环、蓝牙耳机、蓝牙音箱等。每个设备最多同时和一个手机进行蓝牙连接,每个手机终端目前同时蓝牙连接数量控制在 6 ~ 7 个内。
类名 | 说明 |
---|---|
TuyaSmartBLEManager | 单点蓝牙相关类 |
TuyaSmartBLEWifiActivator | 双模设备配网相关类 |
TuyaSmartBLEManager
包含单点蓝牙 SDK 的所有相关功能,包含扫描设备、单点设备配网、双模设备配网、蓝牙设备操作、固件升级、错误码等功能。
TuyaSmartBLEWifiActivator
包含设备双模配网所需方法。
监测系统蓝牙状态
接口说明
SDK 提供了对系统蓝牙的状态监测的方法,在蓝牙状态变化(如开启或关闭)时,可以通过设置代理收到具体的消息。
示例代码
Objc:
// 设置代理
[TuyaSmartBLEManager sharedInstance].delegate = self;
/**
* 蓝牙状态变化通知
*
* @param isPoweredOn 蓝牙状态,开启或关闭
*/
- (void)bluetoothDidUpdateState:(BOOL)isPoweredOn {
NSLog(@"蓝牙状态变化: %d", isPoweredOn ? 1 : 0);
}
Swift:
// 设置代理
TuyaSmartBLEManager.sharedInstance().delegate = self
/**
* 蓝牙状态变化通知
*
* @param isPoweredOn 蓝牙状态,开启或关闭
*/
func bluetoothDidUpdateState(_ isPoweredOn: Bool) {
}
扫描设备
开始扫描
接口说明
处于待连接的蓝牙设备都会不停的向四周发蓝牙广播包,客户端作为终端可以发现这些广播包,根据广播包中包含涂鸦设备信息规则作为目标设备的过滤条件。
/**
* 开始扫描
*
* 如果扫描到未激活设备,结果会通过 `TuyaSmartBLEManagerDelegate` 中的 `- (void)didDiscoveryDeviceWithDeviceInfo:(TYBLEAdvModel *)deviceInfo` 返回;
*
* 如果扫描到激活设备,会自动进行连接入网,不会返回扫描结果
*
* @param clearCache 是否清理已扫描到的设备
*/
- (void)startListening:(BOOL)clearCache;
参数说明
参数 | 说明 |
---|---|
clearCache | 是否清理已扫描到的设备 |
示例代码
Objc:
// 设置代理
[TuyaSmartBLEManager shared