bluelock-plugin)在小程序中的完整接入与使用流程。插件负责 BLE 扫描、连接、指令组包/解包;账号鉴权、门锁绑定、密钥管理需配合 BlueLock 开放平台 HTTP 接口完成。| 项目 | 要求 |
|---|---|
| 小程序主体 | 企业账号(插件一般仅支持企业主体) |
| 插件 AppID | wx8564070a5117797d |
| 插件别名 | bluelock-plugin |
| 建议微信基础库 | ≥ 2.21.4 |
| 建议微信客户端 | ≥ 8.0.2 |
app.json 中配置:{
"plugins": {
"bluelock-plugin": {
"version": "dev",
"provider": "wx8564070a5117797d"
}
},
"permission": {
"scope.bluetooth": {
"desc": "用于扫描和连接智能门锁、网关设备"
},
"scope.userLocation": {
"desc": "Android 扫描蓝牙设备需要位置权限"
}
}
}正式发布时将 version改为插件后台申请的正式版本号。
typings/exports/index.d.ts。┌─────────────────┐ HTTP API ┌──────────────────┐
│ 小程序页面 │ ◄──────────────► │ BlueLock 开放平台 │
│ (业务逻辑) │ 登录/绑定/上报 │
└───── ───┬────────┘ └──────────────────┘
│ requirePlugin
▼
┌─────────────────┐ BLE GATT ┌──────────────────┐
│ bluelock-plugin │ ◄──────────────► │ 智能门锁 │
│ (蓝牙通信层) │ 扫描/连接/指令│ │
└─────────────────┘ └──────────────────┘serverKeys / lockKeys)、操作记录上报登录账号
│
├─► 【新锁】扫描 → 蓝牙绑定 → HTTP 绑定 → initLock
│
└─► 【已绑锁】HTTP 获取门锁详情 → initLock
│
├─► 开锁 / 关锁 / 常开
├─► 用户管理(密码/卡/指纹/人脸/掌纹)
├─► 读取/下发门锁设置
├─► 读取操作记录
├─► 解绑
└─► 离线密码生成token、user.id、user.virtualIdauthSession)后续所有蓝牙操作都需要 userId和host(即virtualId)。
扫描默认超时 15 秒。iOS 上 deviceId为 UUID,业务侧请用deviceAddress(MAC)标识设备。
| 字段 | 说明 |
|---|---|
deviceId | Android 通常为 MAC;iOS 为微信分配的 UUID |
deviceAddress | 门锁 MAC 地址 |
bindStatus | 是否已绑定 |
rssi | 信号强度 |
getByMacAddress)。response 包含:key → 即 serverKeystimesTamp → 时间戳responseHex → 完整回包 hex,需上报后端| 字段 | 说明 |
|---|---|
host / slave / userId / deviceKey | 鉴权必填 |
deviceId | 可选,已知微信 deviceId 时缓存 |
disconnectAfterCommand | 可选,默认 true;设为 false 时指令完成后不断开 BLE |
initLock。扫描、连接、发指令时插件会在内部自动打开 蓝牙适配器,无需手动调用会话方法。
默认每条指令结束后会断开 BLE 连接(不关适配器);需连续操作时可在initLock设disconnectAfterCommand: false,离开页面时再disconnectBleDevice。
开锁后自动回锁的 0300可能在指令 Promise 结束后才上报,需通过此监听捕获。
| commandType | 含义 |
|---|---|
0301 | 开锁成功 |
0400 | 关锁 / 操作关锁应答 |
0300 | 门锁状态上报:已关锁 |
initLock。| 操作 |
|---|