W767(WiFi+蓝牙门禁控制器)API
本API适用于序列号开头为W767的设备,appid和appsecret请到 https://wdev.wmj.com.cn 填写手机号或邮箱登录获取。
回调版本说明
当前回调维护版本:67.1.22,适用W767硬件1.0.0。回调协议与另一款统一;能力及验证范围见回调章节。
67.1.17只有配置读写、不投递HTTP回调;请升级至本文版本,不能通过改参数解决。
点击下面的序号展开
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.配置回调地址与开门通知
统一开门回调协议
适用 W767 67.1.22、W76M 76.0.8,硬件1.0.0。使用前通过 getdevinfo 确认型号和版本;旧版本不能只按版本数值推断支持全部回调。
配置及回读
POST https://wdev.wmj.com.cn/deviceApi/send,Content-Type: application/json。
{"app_id":"{{wmjv2appid}}","app_secret":"{{wmjv2appsecret}}","device_sn":"{{device_sn}}","type":1,"data":{"cmd_type":"set_callback","info":{"url":"https://example.com/callback","enabled":1}}}
url 为 HTTP(S) 地址,最多255字节;enabled 必须为数值0或1。兼容 callback_url/callback_enabled 别名;同时提交两套字段时值必须一致。省略字段保留原值。空参数、错误类型、冲突值、启用但URL为空均返回设备 data.info.code 非零。平台 code=0 不等于设备配置或投递成功。
{"app_id":"{{wmjv2appid}}","app_secret":"{{wmjv2appsecret}}","device_sn":"{{device_sn}}","type":1,"data":{"cmd_type":"get_callback","info":{}}}
回读设备 data.info 示例:
{"code":0,"err_code":0,"msg":"","callback_ready":true,"callback_url":"https://example.com/callback","callback_enabled":1,"pending_callbacks":0,"callback_capacity":4,"callback_success":1,"callback_failed":0,"callback_dropped":0,"callback_storage_errors":0,"callback_last_http":200,"callback_last_error":0}
ready 表示回调功能初始化状态;pending/capacity 为待发数和容量。success/failed/dropped/storage_errors 为本次启动计数,不是终身计数。last_http 为最近HTTP状态;last_error 为传输错误码,0表示无传输错误,仍须检查HTTP状态。
POST 通知格式
设备向配置的URL发送 HTTP POST,Content-Type: application/json,不包裹 data/info:
{"device_sn":"{{device_sn}}","event":"door_opened","open_type":"api","event_uid":"example-device-8ce5dafcc085d6d8","callback_id":627159385,"msg_id":206,"timestamp":23,"rssi":-40,"cmd_id":"order-001","user_id":"user-001"}
| 字段 | 类型 | 说明 |
|---|---|---|
| device_sn | string | 设备序列号 |
| event | string | door_opened,表示控制器执行开门动作,不代表物理门已打开;门磁需另查 |
| open_type | string | api / ble / button / web / schedule / delay |
| event_uid | string | 幂等键,重试及重启补发保持不变 |
| callback_id | number | 数字事件编号,优先以event_uid去重 |
| msg_id | number | API open消息ID;其他入口为0 |
| timestamp | number | 事件产生时设备本次启动的秒数,不是Unix时间戳 |
| rssi | number | 当时WiFi信号dBm;获取失败可能为0 |
| cmd_id | string,可选 | API open.info透传,最多96字节 |
| user_id | string,可选 | API open.info透传,最多96字节,不代表设备自动识别用户 |
api 为API触发开门;ble 为蓝牙鉴权后开门;button 为控制器可感知的开门按钮;web 为本地应急网页;schedule 为定时计划;delay 为延时到期。蓝牙/按钮等不带 cmd_id/user_id,其他自定义字段不透传。关闭或释放继电器不产生door_opened。
W76M 开门按钮支持button;W767板载按键用于配网/复位,不因此变成开门按钮。外接按钮若绕过控制器直接接门禁电源,固件无法感知其操作。
投递、离线及错误处理
- 接收端返回 HTTP200/201/204 表示成功,正文不限;其他状态和网络失败重试。不跟随重定向。
- 重试间隔10/20/40/80/160/300秒,之后上限300秒;必须按event_uid幂等,不能假设只到达一次或严格按发生顺序到达。
- 最多4条持久化待发记录;断网期间启用状态下的开门记录入队,联网后补发。满队列不会覆盖旧记录,新记录可能丢弃,应监测callback_dropped/storage_errors;不保证无限离线事件留存。
- API open应答中的callback_queued/callback_error独立于开门结果。队列失败不撤销开门动作;禁用时不入队。仅ACK成功不能证明业务服务器收到通知。
- 禁用暂停旧队列;重新启用后按事件原URL补发,已在途请求可能完成。恢复出厂清除回调配置与队列。升级前产生的旧事件保留原内容,可能仍含旧值mqtt。
- 建议使用HTTPS并校验业务关联。本载荷没有应用级签名,不应仅凭此通知授予新的开门权限。
验证范围:两款均已验证API开门、延时回调及失败重启补发;W76M另有按钮实测。蓝牙、网页、定时计划的回调入口已接入,但本轮尚未完成对应现场触发验证;HTTPS、满队列与长时间离线需按业务环境验证。
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固件升级
适用W767硬件1.0.0,目标版本67.1.22。POST https://wdev.wmj.com.cn/deviceApi/send,Content-Type: application/json。
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"type": 1,
"data": {
"cmd_type": "set_ota",
"info": {
"hw_ver": "1.0.0",
"sw_ver": "67.1.22",
"url": "http://fm.wmj.com.cn/ota/W767/W767_v67.1.22_ota.bin"
}
}
}
目标版本必须高于当前版本。ACK仅表示升级受理;重启上线后通过getdevinfo回读版本并验证业务。
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。不要提交真实临时密码、开发者密钥或硬件配置密钥。
安全机制: - 滚动码机制确保每次密码唯一 - 密码使用后滚动码自动递增 - 成功使用后获取的密码后,之前的密码可能无法继续使用;每次开门请重新获取临时密码,不缓存复用
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 | 描述信息 |
+++
设备硬件规格
- WiFi: 2.4GHz IEEE 802.11 b/g/n
- 蓝牙: BLE 5.0
- 继电器: 1路控制
- 门磁检测: 实时监测门状态
- 蜂鸣器: 提示音
固件版本
本文原版接口基线:67.0.09,不是全部设备的当前版本。实际版本以 getdevinfo.sw_ver 为准;回调能力请查看页面顶部的适用范围提示。
技术支持
如有问题请访问: https://wdev.wmj.com.cn
更新日志
| 日期 | 内容 |
|---|---|
| 2026-09-14 | 更新 67.1.22 回调维护版本及OTA示例,统一六种开门来源、配置别名、完整通知字段和重试去重规则,明确验证范围。 |
| 2026-09-14 | 修正回调功能版本范围,明确 67.1.17 不支持 HTTP 回调投递;修正查询字段、回读验证、通知来源及时间字段说明。 |
| 2026-09-11 | 完善蓝牙开门 UUID 对照、小程序接入顺序、通知结果判断及完整报文要求,补充 Hardware config rejected 等错误排查与密钥保护说明,规范接口凭据示例。 |
| 2026-01-27 | v67.0.09:新增开门回调功能及开门命令追踪参数。 |
| 未注明 | v67.0.06:初始版本。 |
最后编辑:极客师傅 更新时间:2026-09-14 11:41