W767(WiFi+蓝牙门禁控制器)API
本API适用于序列号开头为W767的设备,appid和appsecret请到 https://wdev.wmj.com.cn 填写手机号或邮箱登录获取。
点击下面的序号展开
1.注册设备
简要描述
将设备和appid、appsecret绑定
请求URL
https://wdev.wmj.com.cn/deviceApi/register
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
返回示例
{
"code": 0,
"msg": "注册成功"
}
{
"code": 1005,
"msg": "设备已注册"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码,0成功其他异常 |
| msg | string | 描述信息 |
备注
更多返回错误代码请看首页的错误代码描述
2.开门
简要描述
开门操作,适用于普通门禁模式
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "open",
"info": {
"sn": "W7671234567",
"cmd_id": "order_20260127_001",
"user_id": "user123"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 开门标识open |
| data.info.sn | 否 | string | 一旦传入sn,设备将校验传入sn是否与设备本身sn一致,校验成功才能开门 |
| data.info.cmd_id | 否 | string | 业务系统命令ID,回调时原样返回,用于业务追踪(v67.0.09+) |
| data.info.user_id | 否 | string | 操作用户ID,回调时原样返回,用于记录开门人(v67.0.09+) |
返回示例
{
"code": 0,
"data": {
"cmd_type": "open",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
3.设置常开/常闭模式
简要描述
设置设备常开或常闭模式
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_nonc",
"info": {
"type": 0
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_nonc |
| data.info.nonc_type | 是 | int | 0=常闭,1=常开 |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_nonc",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
4.设置继电器触发时长
简要描述
设置继电器触发时长(毫秒)
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_relay",
"info": {
"relay1": 1500
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_relay |
| data.info.relay1 | 是 | int | 继电器触发时长(毫秒),默认1500 |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_relay",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
5.设置蜂鸣器开关
简要描述
全局启用或禁用蜂鸣器
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_device_sound",
"info": {
"device_sound": 1
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_device_sound |
| data.info.device_sound | 是 | int | 0=禁用蜂鸣器,1=启用蜂鸣器 |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_device_sound",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
禁用蜂鸣器后,所有需要蜂鸣器提示的操作将静音执行
6.远程配置WiFi
简要描述
远程配置设备WiFi连接信息
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_wifi",
"info": {
"ssid": "WiFi_Name",
"passwd": "WiFi_Password"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_wifi |
| data.info.ssid | 是 | string | WiFi名称 |
| data.info.password | 否 | string | WiFi密码(开放WiFi可不传) |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_wifi",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
配置成功后设备将自动重启并连接新WiFi
7.修改密码
简要描述
修改设备Web端管理密码和开门密码
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_pwd",
"info": {
"device_pwd": "12345678",
"admin_pwd": "admin123"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_pwd |
| data.info.device_pwd | 否 | string | 设备Web端应急开门密码 |
| data.info.admin_pwd | 否 | string | 设备Web端配网管理密码 |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_pwd",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
8.获取设备信息
简要描述
获取设备当前配置信息
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "getdevinfo",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识getdevinfo |
返回示例
{
"code": 0,
"data": {
"cmd_type": "getdevinfo",
"info": {
"sn": "W7671234567",
"sw_ver": "67.0.06",
"hw_ver": "1.0",
"device_pwd": "12345687",
"admin_pwd": "admin",
"sta_ssid": "WiFi_Name",
"sta_pwd": "WiFi_Password",
"project": "W767",
"net_type": "wifi",
"iccid": "WiFi_Name",
"imei": "AA:BB:CC:DD:EE:FF",
"nonc": 0,
"rssi": -45,
"doorstate": 0,
"relay1": 1500,
"device_sound": 1,
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.sn | string | 设备序列号 |
| data.info.sw_ver | string | 软件版本号 |
| data.info → hw_ver | string | 硬件版本号 |
| data.info.device_pwd | string | 设备开门密码 |
| data.info.admin_pwd | string | Web管理密码 |
| data.info.sta_ssid | string | WiFi名称 |
| data.info.sta_pwd | string | WiFi密码 |
| data.info.project | string | 项目型号 |
| data.info.net_type | string | 网络类型(wifi) |
| data.info.iccid | string | SIM卡ICCID(WiFi模式下与sta_ssid相同) |
| data.info.imei | string | 设备MAC地址 |
| data.info.nonc | int | 常开常闭模式(0=常闭,1=常开) |
| data.info.rssi | int | WiFi信号强度(dBm) |
| data.info.doorstate | int | 门状态(0=关闭,1=打开) |
| data.info.relay1 | int | 继电器触发时长(毫秒) |
| data.info.device_sound | int | 蜂鸣器开关(0=禁用,1=启用) |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
9.获取门状态
简要描述
获取门当前开关状态
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "getdoorstate",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识getdoorstate |
返回示例
{
"code": 0,
"data": {
"cmd_type": "getdoorstate",
"info": {
"door_state": 0,
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.door_state | int | 门状态(0=关闭,1=打开) |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
10.配置回调地址
ℹ️ 版本要求:固件版本 v67.0.09 及以上
简要描述
配置开门成功后的HTTP回调地址,设备开门成功后会自动向该地址POST通知
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_callback",
"info": {
"enabled": 1,
"url": "https://your-server.com/door_callback"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_callback |
| data.info.enabled | 是 | int | 0=禁用回调,1=启用回调 |
| data.info.url | 是 | string | 回调地址(支持HTTP/HTTPS) |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_callback",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
- 回调地址需保证可访问,设备会自动重试直到成功
- 最多保存100条未成功的回调记录,设备重启后继续重试
- 推荐使用HTTPS地址
查询回调配置
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "get_callback",
"info": {}
}
}
返回示例
{
"code": 0,
"data": {
"cmd_type": "get_callback",
"info": {
"enabled": 1,
"url": "https://your-server.com/door_callback",
"pending_count": 0,
"success_total": 15,
"fail_total": 0,
"code": 0,
"msg": "OK"
}
}
}
10.1 开门回调通知
ℹ️ 版本要求:固件版本 v67.0.09 及以上
简要描述
设备开门成功后,自动向配置的回调地址POST通知
请求URL
由业务方配置的回调地址(通过set_callback设置)
请求方式
POST
请求格式
json
回调内容
{
"device_sn": "{{device_sn}}",
"msg_id": 124,
"event": "door_opened",
"open_type": "mqtt",
"timestamp": 1706345678,
"rssi": -56,
"cmd_id": "order_20260127_001",
"user_id": "user123",
"extra": {
"delaytime": 1000
},
"callback_id": 4
}
| 参数名 | 类型 | 说明 |
|---|---|---|
| device_sn | string | 设备序列号 |
| msg_id | int | 硬件云消息ID |
| event | string | 事件类型,固定为door_opened |
| open_type | string | 开门方式(mqtt/ble等) |
| timestamp | int | 设备运行时间戳(秒) |
| rssi | int | WiFi信号强度(dBm) |
| cmd_id | string | 业务系统命令ID(开门时传入,用于业务追踪) |
| user_id | string | 操作用户ID(开门时传入) |
| extra | object | 其他额外信息 |
| callback_id | int | 回调任务ID(用于去重) |
业务方响应要求
业务方接收到回调后,需返回HTTP状态码 200,设备才认为回调成功。
开门时传递业务参数
在开门接口中传入cmd_id和user_id,回调时会原样返回:
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "open",
"info": {
"cmd_id": "order_20260127_001",
"user_id": "user123"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| data.info.cmd_id | 否 | string | 业务系统命令ID,回调时原样返回 |
| data.info.user_id | 否 | string | 操作用户ID,回调时原样返回 |
备注
- 回调失败会自动重试,最多保存100条待回调记录
- 设备重启后会继续重试未成功的回调
- 建议业务方通过
cmd_id做幂等处理,避免重复处理
11.重启设备
简要描述
远程重启设备
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "restart",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识restart |
返回示例
{
"code": 0,
"data": {
"cmd_type": "restart",
"info": {
"code": 0,
"msg": "OK"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
设备收到命令后将在3秒内重启
12.OTA固件升级
简要描述
远程升级设备固件
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"data": {
"cmd_type": "set_ota",
"info": {
"url": "http://fm.wmj.com.cn/ota/W767/W767_67.0.09.bin",
"hw_ver": "1.0.0",
"sw_ver": "67.0.09"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令标识set_ota |
| data.info.url | 是 | string | 固件下载URL地址(HTTP/HTTPS) |
| data.info.sw_ver | 否 | string | 目标软件版本号 |
| data.info → hw_ver | 否 | string | 硬件版本号 |
返回示例
{
"code": 0,
"data": {
"cmd_type": "set_ota",
"info": {
"code": 0,
"msg": "开始升级"
}
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码,0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
- 升级过程中设备将自动重启
- 请确保固件URL可访问且固件文件正确
- 建议使用HTTPS链接确保固件安全
13.解绑设备
简要描述
删除解绑,将设备从当前appid解绑
请求URL
https://wdev.wmj.com.cn/deviceApi/logout
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
返回示例
{
"code": 0,
"msg": "解绑成功"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码,0成功其他异常 |
| msg | string | 描述信息 |
14.蓝牙开门接口
(1) 获取临时密码
通过云端API获取蓝牙开门所需的临时密码
请求URL
https://wdev.wmj.com.cn/deviceApi/TPassword
请求方式
POST
请求格式
json
请求参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
返回示例
{
"code": 0,
"data": {
"pwd": "03057414",
"roll_code": 26
}
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码,0成功其他异常 |
| data.pwd | string | 临时开门密码(用于蓝牙开门) |
| data.roll_code | int | 当前滚动码值(0-999循环) |
备注
- 临时密码一次性有效,开门成功后自动失效
- 后获取的密码开门成功后,之前获取的密码将失效
- 开门记录会回调到配置的回调URL
(2) 蓝牙开门操作
使用获取到的临时密码通过蓝牙开门
服务UUID
- 开锁服务:
FEE0 - 写特性:
FEE1(接收开门命令) - 通知特性:
FEE2(返回执行结果)
请求格式
通过蓝牙向特性 FEE1 写入JSON格式数据:
{
"cmd_type": "ble_pwd_open_lock",
"info": {
"data": "03057414"
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| cmd_type | 是 | string | 命令类型,固定为ble_pwd_open_lock |
| info.data | 是 | string | 临时密码(从云端API获取的pwd字段) |
返回格式
设备通过特性 FEE2 的通知返回结果:
{
"state": 1,
"info": {
"code": 0,
"msg": "Unlock success"
}
}
| 参数名 | 类型 | 说明 |
|---|---|---|
| state | int | 开门状态(0=失败,1=成功) |
| info.code | int | 业务错误码(0=成功,-1=失败) |
| info.msg | string | 执行结果描述 |
(3) 自行开发小程序的接入顺序
蓝牙开门与配网、硬件配置使用不同的服务和特征值。不要选择发现列表中的第一个可写特征,也不要复用配网流程中的服务及特征值。
| 用途 | 服务 UUID | 特征 UUID | 操作 |
|---|---|---|---|
| 开门指令 | FEE0 |
FEE1 |
Write |
| 开门结果 | FEE0 |
FEE2 |
Notify |
| 硬件配置(不是开门) | 0D38 |
33FF |
不用于普通开门接入 |
完整 UUID 分别为:
- 服务:
0000FEE0-0000-1000-8000-00805F9B34FB - 写特征:
0000FEE1-0000-1000-8000-00805F9B34FB - 通知特征:
0000FEE2-0000-1000-8000-00805F9B34FB
- 连接目标设备后发现服务及特征,按 UUID 精确匹配;比较时统一大小写及短 UUID/完整 UUID 表示方式,不依赖数组下标。
- 先注册通知接收回调,再订阅
FEE0/FEE2;等待订阅成功后才发送开门请求。 - 由业务后端鉴权后调用上述临时密码接口,获取当前目标设备的
data.pwd。开发者app_secret只保存在后端,不内置到小程序,也不通过蓝牙发送。 - 将上述
ble_pwd_open_lockJSON 编码为 UTF-8,写入FEE0/FEE1。info.data必须是字符串,使用接口实际返回的密码并保留前导零;示例密码不能直接用于真实设备。 - 蓝牙报文直接以
cmd_type、info为顶层字段,不要套用云端命令的app_id、device_sn、外层data等包装。 - 仅处理目标设备、目标服务及
FEE2的结果通知;以state=1且info.code=0判断设备接受并执行成功。写入 API 成功只代表写入完成,不代表门已打开;物理门状态应另行核验。
报文长度:当前 IDF 固件要求每次写入包含完整 JSON,没有应用层分片拼接。普通 ATT 写入容量受协商 MTU 限制(通常为 MTU 减 3 字节)。发送前确认实际写入容量足以容纳完整 UTF-8 报文;不要把 JSON 拆成多次独立写入。若平台无法提供足够容量,应报告不支持并排查兼容性,不要循环发送残缺报文。
(4) 蓝牙错误排查
以下错误文案适用于返回这些文案的 W767 IDF 固件;旧固件返回内容可能不同。
{"info":{"code":-1,"msg":"Hardware config rejected"},"state":0}
Hardware config rejected 表示硬件配置请求被拒绝,不等同于开门临时密码错误。普通开门流程出现此结果时,优先检查是否误写 0D38/33FF,或把硬件配置通知错误地当作开门通知。
处理方式是修正服务、写特征及通知特征,不是补填硬件配置密钥。普通蓝牙开门不需要提交硬件配置参数。
| 现象 | 排查步骤 |
|---|---|
Hardware config rejected |
检查实际写入 UUID 与通知来源;开门必须写 FEE0/FEE1 并监听 FEE0/FEE2 |
Unlock failed |
已进入开门处理;检查目标设备是否对应、临时密码是否正确、JSON 层级及字段类型。仍失败时联系支持排查设备执行状态,不要只归因于密码 |
Invalid request |
检查 UTF-8 编码、完整 JSON、报文长度,是否拆成了多次独立写入 |
| 写入成功但没有结果 | 检查通知订阅是否成功、是否监听目标设备的 FEE2,并设置结果等待超时;不要自动无限重试 |
若仍不能接入,请提供固件版本、手机系统与机型、实际服务/写特征/通知特征 UUID、发送字节长度及脱敏 JSON。不要提交真实临时密码、开发者密钥或硬件配置密钥。
安全机制: - 滚动码机制确保每次密码唯一 - 密码使用后滚动码自动递增 - 成功使用后获取的密码后,之前的密码可能无法继续使用;每次开门请重新获取临时密码,不缓存复用
+++
设备硬件规格
- WiFi: 2.4GHz IEEE 802.11 b/g/n
- 蓝牙: BLE 5.0
- 继电器: 1路控制
- 门磁检测: 实时监测门状态
- 蜂鸣器: 提示音
固件版本
当前固件版本: 67.0.09
技术支持
如有问题请访问: https://wdev.wmj.com.cn
更新日志
| 日期 | 内容 |
|---|---|
| 2026-09-11 | 完善蓝牙开门 UUID 对照、小程序接入顺序、通知结果判断及完整报文要求,补充 Hardware config rejected 等错误排查与密钥保护说明,规范接口凭据示例。 |
| 2026-01-27 | v67.0.09:新增开门回调功能及开门命令追踪参数。 |
| 未注明 | v67.0.06:初始版本。 |
最后编辑:极客师傅 更新时间:2026-09-11 17:30