蓝牙配网

Aqara蓝牙配网方式有多种,区别在于获取蓝牙mac地址,modelId的方式不同(比如通过扫描广播,从二维码读取等);数据层可以分成蓝牙网关蓝牙子设备两套

本SDK包含Aqara设备配网的逻辑部分和UI界面; SDK依赖 的iOS版本 不能低于11.0 编译器环境: XCode14.0 以上版本 语言:Object-C

集成SDK

1.环境搭建

配网SDK需要用到Wi-Fi的权限功能,需要宿主工程添加以下Capability:

 Wireless Accessory Configuration

2.权限配置

SDK需要向iOS申请以下系统权限:

1.NSCameraUsageDescription 摄像机访问权限(扫描设备上的二维码进行配网) 2.NSLocalNetworkUsageDescription 本地网络查找权限(局域网配网) 3.NSLocationWhenInUseUsageDescription 使用地理位置权限(手机获取WiFi名称,iOS 13 需要确认App已开启地理位置权限。 iOS 14 需要确认App开启精确位置权限。 如果上述配置后仍然获取不到WiFi名称,则需要开发者另外处理,比如手动输入WiFi名称)

  1. NSBluetoothAlwaysUsageDescription 获取蓝牙权限 (蓝牙配网)
  2. NSBonjourServices使用mDNS服务发现绿米设备,设置服务名称"_aqara._tcp."

可以在宿主项目的info.plist文件中快捷添加如下配置:

<plist version="1.0">
   <key>NSBonjourServices</key>
   <array>
          <string>_aqara._tcp.</string>
   </array>
   <key>NSCameraUsageDescription</key>
   <string>允许本App使用相机去添加配件</string>
   <key>NSHomeKitUsageDescription</key>
   <string>允许本App控制支持HomeKit的设备</string>
   <key>NSLocalNetworkUsageDescription</key>
   <string>需要使用本地网络以发现局域网上的设备信息</string>
   <key>NSLocationWhenInUseUsageDescription</key>
   <string>需要您的位置信息提供更好的服务</string>
   <key>NSBluetoothAlwaysUsageDescription</key>
   <string>允许本App使用蓝牙连接</string>
</dict>
</plist>

4.导入SDK

需要在宿主工程中导入如下SDK:

  1. LMSmartConnect.framework 蓝牙相关API封装 SDK
  2. LMFramework.framework 基础SDK,Aqara的基础配置,宏定义以及通用逻辑的封装

资源文件:

  1. LMFramework.bundle Aqara 多语言文件

5.时序图以及接口说明

引用头文件

#import <LMSmartConnect/LMSmartConnect.h>

需要确认已经获取系统蓝牙权限,并调用方法开启扫描蓝牙设备:

- (void)startBluetoothScanDevice:(NSString *)manufacture model:(NSArray *)models macAddress:(NSString *)macAddress completion:(void (^)(CBManagerState state, CBPeripheral *peripheral, NSString *macAddress, NSString *model))completion
参数 说明
manufacture 广播数据中的设备厂商(绿米固定传4D4C)
models 广播数据中需要过滤的设备model数组(从开放平台获取)
macAddress 指定设备的蓝牙地址(广播数据筛选出对应的对象)

返回参数说明

参数 说明
state CBManagerState 当前蓝牙状态,参见Apple 文档
peripheral CBPeripheral 蓝牙对象,需要保存准备后续连接用
macAddress 蓝牙地址
model 设备的model
接口1

向AIoT获取bindkey请求,

/app/v1.0/lumi/dev/bindkey

请求实例:

{
 "positionId":  "real2.550691449629310976",
 "appUrl": "https://aiot-rpc.aqara.cn"
}

返回数据: |名称|类型 |备注| |----|----|---| |bindKey|string|入网使用bindKey| |controlUnitId|string|入网miot设备返回的参数|

返回示例:

{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "result": {
        "bindKey": "HVFLFgHgPy56X"
    }
}

具体参见开放平台接口文档

接口2
- (void)startConnectBleWithPeripheral:(NSString *)peripheralId serviceId:(NSString *)serviceId writeCharacteristicId:(NSString *)writeCharacteristicId readCharacteriticId:(NSString *)readCharacteriticId completion:(void (^)(NSError *error))completion
参数 说明 是否可选
peripheralId peripheral.identifier.UUIDString 必传
serviceId 外设的服务id 可选
writeCharacteristicId 写值特征id 可选
readCharacteriticId 读值特征id 可选
接口3
- (void)startBleAccessToNetWithType:(LMSmartBleConnectType)bleConnectType
                        bindKey:(nullable NSString *)bindKey
                         homeId:(NSString *)homeId
                           ssid:(NSString *)ssid
                       password:(NSString *)password
                  countryDomain:(NSString *)countryDomain
                   deviceDomain:(nullable NSString *)deviceDomain
                     macAddress:(nullable NSString *)macAddress
                     completion:(void (^)(NSError *error))completion
参数 说明 是否可选
bleConnectType LMSmartBleConnectType 网关/子设备 必传
bindKey 从Aqara云平台API获取 可选
writeCharacteristicId 写值特征id 可选
readCharacteriticId 读值特征id 可选
接口4

向AIoT请求设备是否注册成功

dev/bind/query

请求实例:

{
 "bindKey":  "xxxxx.xxxxxx",
}

返回数据

名称 类型 是否必须 默认值 备注
code integer 必须 0-成功、1-绑定中,2-非法 616设备模型不支持(可用于串货提醒)

返回示例:

{
    "code": 0,
    "requestId": "",
    "message": "Success",
    "result": {
        "code": 0
    }
}  

具体参见开放平台接口文档

Copyright © 2023 深圳绿米联创科技有限公司 all right reserved,powered by Gitbook文档修改时间: 2024-09-27 21:51:47

results matching ""

    No results matching ""