04 蓝牙模块 - MiEcosystem/miot-plugin-sdk GitHub Wiki
废弃
我们提供了一个蓝牙示例插件,见 com.xiaomi.bledemo.ios 目录
无
参考 BluetoothEvent
Device.getBluetoothLE(perUUID).discoverServices //perUUID 在ios下需要
Device.getBluetoothLE(perUUID).getService("a-b-c-d-e").startDiscoverCharacteristics
蓝牙获取特征之后 read()
蓝牙获取特征之后 write()
蓝牙获取特征之后 write()
蓝牙获取特征之后 setNotify
废弃
废弃
废弃
废弃
废弃
retrievePeripheralsWithServicesForIOS
Device.getBluetoothLE(perUUID).disconnect
Bluetooth.startScan
Bluetooth.startSca
废弃
startScan 之后自行获取
废弃
废弃
废弃
Bluetooth.checkBluetoothIsEnabled
废弃,直接获取外设对象
Device.getBluetoothLE(perUUID).readRSSI
废弃
####didFoundXiaoMiBLEDevice 发现小米某model的蓝牙设备通知
MHXiaomiBLE.didFoundXiaoMiBLEDevice
Device.getBluetoothLE(perUUID)
Bluetooth.startScan
废弃
废弃
Device.getBluetoothLE(perUUID).disconnect
Bluetooth.encryptMessage
Bluetooth.decryptMessage
Bluetooth.createBluetoothLE(...).connect(...).then(device => {device.securityLock().toggle(0,5000).then(lock => {console.log('toggle success')}).catch(err => {console.log('toggle failed'})})
废弃
Bluetooth.createBluetoothLE(...).securityLock().isShareKeyValid
废弃
Bluetooth.createBluetoothLE(...).securityLock().getOneTimePassword
已废弃
主要参考 Bluetooth.BluetoothEvent
MHBluetoothLE模块中JavaScript to Objective-c的数据的传递都是以16进制字符串的方式进行的,例如向设备端写入一个字符串'1111'
,那么需要把字符串'1111'
转换成16进制字符串'30303030'
;设备端向外发生数据时也会被MHBluetoothLE模块转换成16进制字符串的形式,例如设备端发送数据是数字123
, 那么MHBluetoothLE就会转换为'7B'
。
在com.xiaomi.corebledemo.ios/Main/XiaoMiBLEMainPage.js示例中提供了两个方法:
- _hexStrToByteArr(hexStr); //16进制字符串转换为10进制数数组
- _byteArrToHexStr(byteArr); //10进制数组转换为16进制字符串(10进制数接受范围是0~255, 包含0和255)
在connect等方法中,配置超时参数,具体参见API文档
废弃
更多代码示例请看com.xiaomi.corebledemo.ios
无变化
-
获取当前固件最新版本
Service.smarthome.getLatestVersion
-
获取固件当前的版本号 通过蓝牙service、character读出当前固件版本号(成功连接的固件sdk会读取一次,通过MHPluginSDK.getDevicePropertyFromMemCache读取version属性可以获得,如果有问题,可以自行通过蓝牙读取)
-
固件下载、解压缩等操作在 Host.file 模块文档中有下载文件、解压缩等的接口
-
读写数据到固件的流程不变,写入升级数据
蓝牙网关设备具有米家 WiFi + BLE 双模通信能力,允许支持米家蓝牙协议的纯 BLE 设备通过其接入互联网。大致原理如下:
更多蓝牙网关信息请参考小米 IoT 开发者平台。
作为支持米家蓝牙协议的纯蓝牙设备,若处于蓝牙网关可扫描的范围内,则认为该蓝牙设备已经与蓝牙网关“连接”,蓝牙网关会实时接收蓝牙设备广播的数据,上报至云端。则:
1,用户通过米家 App 查看该蓝牙设备时,无需跟设备直接建立蓝牙连接,可查看设备上报的历史数据;
2,设备显示为在线,无需手机与设备建立连接。
注意,蓝牙设备“连接”蓝牙网关的前提是,两者处于同一小米账号下。
蓝牙设备插件可以通过 MHPluginSDK
模块中以下接口支持蓝牙网关功能:
废弃
调用米家云端 API ,查询蓝牙设备上报至云端的历史数据。
Service.smarthome.getDeviceData
Host.ui.openBtGatewayPage
如遇问题请提交 issue。