W76C(4G控制器)API
W76C 开发者API文档
概述
本文档描述了 W76C 智能门禁控制系统的云端 API 接口,开发者可通过这些接口实现设备注册、远程开门、设备控制等功能。
API基础地址: https://wdev.wmj.com.cn
错误码说明
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 1001 | 网络超时 |
| 1002 | 设备不在线 |
| 1003 | 参数错误 |
| 1004 | 设备未注册 |
| 1005 | 设备已注册 |
| 1006 | 认证失败 |
点击下面的序号展开
1.注册设备
- 将设备和appid、appsecret绑定
请求URL
https://wdev.wmj.com.cn/deviceApi/register
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C1234567"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| 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": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"type": 1,
"data": {
"cmd_type": "open",
"info": {
"delay": 1200
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| 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.delay | 否 | int | 延迟上锁时间(毫秒) |
返回示例
//成功
{
"code": 0,
"data": {
"device_sn": "W76C0998927",
"msg_id": 172,
"type": 1,
"cmd": "",
"app_id": "",
"cmd_type": "open",
"info": {
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1002,
"msg": "设备不在线"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| 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": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"data": {
"cmd_type": "restart",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令类型:restart |
| data.info | 是 | object | 暂未使用 |
返回示例
//成功
{
"code": 0,
"data": {
"cmd_type": "restart",
"info": {
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1001,
"msg": "网络超时"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| 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": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"data": {
"cmd_type": "getdevinfo",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令类型:getdevinfo |
| data.info | 是 | object | 暂未使用 |
返回示例
//成功
{
"code": 0,
"data": {
"device_sn": "W76C0998927",
"msg_id": 175,
"type": 1,
"cmd_type": "getdevinfo",
"info": {
"sn": "W76C0998927",
"model": "W76C",
"hw": "1.0.0",
"sw": "0.0.43",
"fwVer": "0.0.43",
"rssi": -65,
"doorstate": 0,
"nonc": 0,
"relayStatus": 0,
"ext_button_enabled": 1,
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1002,
"msg": "设备不在线"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码 0成功其他异常 |
| data.info.sn | string | 设备序列号 |
| data.info.model | string | 设备型号 |
| data.info.hw | string | 硬件版本 |
| data.info.sw | string | 软件版本 |
| data.info.fwVer | string | 固件版本 |
| data.info.rssi | int | 信号强度(dBm) |
| data.info.doorstate | int | 门状态:0=关闭,1=打开 |
| data.info.nonc | int | 常开常闭模式:0=常闭,1=常开 |
| data.info.relayStatus | int | 继电器持久模式:0=常闭,1=常开 |
| data.info.ext_button_enabled | int | 开门按钮:0=停用,1=启用 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
5.获取门状态
- 获取当前门磁状态
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"data": {
"cmd_type": "getdoorstate",
"info": {}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令类型:getdoorstate |
| data.info | 是 | object | 暂未使用 |
返回示例
//成功
{
"code": 0,
"data": {
"device_sn": "W76C0998927",
"msg_id": 176,
"type": 1,
"cmd_type": "getdoorstate",
"info": {
"doorstate": 0,
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1002,
"msg": "设备不在线"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码 0成功其他异常 |
| data.info.doorstate | int | 门状态:0=关闭,1=打开 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
6.设置常开常闭模式
- 控制继电器常开或常闭模式
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"data": {
"cmd_type": "set_nonc",
"info": {
"type": 1
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令类型:set_nonc |
| data.info.type | 是 | int | 模式设置:0=常闭模式,1=常开模式 |
返回示例
//成功
{
"code": 0,
"data": {
"device_sn": "W76C0998927",
"msg_id": 181,
"type": 1,
"cmd_type": "set_nonc",
"info": {
"nonc": 1,
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1001,
"msg": "网络超时"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码 0成功其他异常 |
| data.info.nonc | int | 当前模式:0=常闭,1=常开 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
7.设置开门按钮
- 启用或停用开门按钮
- 该配置持久保存,设备重启或断电后仍然有效
- W76C 固件
0.0.43起提供;以getdevinfo回读到目标版本及ext_button_enabled字段为可用依据
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
- POST
请求格式
- json
参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"type": 1,
"data": {
"cmd_type": "set_ext_button",
"info": {
"enable": 0
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户 app_id |
| app_secret | 是 | string | 用户 app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 固定为 set_ext_button |
| data.info.enable | 是 | int | 0=停用,1=启用;只接受数字 0 或 1 |
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"type": 1,
"cmd_type": "set_ext_button",
"info": {
"code": 0,
"msg": "OK"
}
}
}
行为说明
- 默认值为
1。 enable=0后,开门按钮的按下、单击、长按和释放均不驱动继电器,也不上报ext_button事件。enable=1后,恢复开门按钮控制和事件上报。- 该配置不影响板载按钮,不主动改变设置命令执行前的继电器状态。
- 设备仅在配置成功持久化后返回成功;重复设置当前值不会重复写入 Flash。
8.OTA固件升级
- 远程升级设备固件
请求URL
https://wdev.wmj.com.cn/deviceApi/send
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927",
"data": {
"cmd_type": "set_ota",
"info": {
"url": "http://ota.example.com/W76C_v0.0.5.bin"
}
}
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
| data.cmd_type | 是 | string | 命令类型:set_ota |
| data.info.url | 是 | string | 固件下载地址,联系客服获取 |
返回示例
//成功
{
"code": 0,
"data": {
"device_sn": "W76C0998927",
"msg_id": 182,
"type": 1,
"cmd_type": "set_ota",
"info": {
"code": 0,
"msg": "OK"
}
}
}
//失败
{
"code": 1002,
"msg": "设备不在线"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 调用接口错误码 0成功其他异常 |
| data.info.code | int | 业务错误码,0成功其他异常 |
| data.info.msg | string | 业务错误信息 |
备注
- 固件URL必须是可公网访问的HTTP/HTTPS地址
- 升级过程中设备会自动重启
- 建议在设备空闲时执行升级操作
9.回调通知
通知数据将发送到用户注册的回调地址上
a. 门状态变化通知
当门磁状态发生变化时,设备会主动上报:
{
"cmd_type": "door_state_notify",
"device_sn": "W76Cxxxxxxxx",
"info": {
"doorstate": 0
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| cmd_type | string | door_state_notify:门状态变化通知 |
| device_sn | string | 设备序列号 |
| info.doorstate | int | 门状态 0:关门状态 1:开门状态 |
b. 串口数据通知
当设备收到串口数据时,会上报到回调地址:
{
"cmd_type": "uart_data",
"device_sn": "W76Cxxxxxxxx",
"info": {
"data": "AABBCCDDEEFF"
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| cmd_type | string | uart_data:串口数据通知 |
| device_sn | string | 设备序列号 |
| info.data | string | 串口数据(HEX字符串格式) |
c. 设备上线通知
当设备连接到服务器时,会发送上线通知:
{
"cmd_type": "online",
"device_sn": "W76Cxxxxxxxx",
"info": {
"model": "W76C",
"sw": "0.0.4",
"rssi": -65
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| cmd_type | string | online:设备上线通知 |
| device_sn | string | 设备序列号 |
| info.model | string | 设备型号 |
| info.sw | string | 软件版本 |
| info.rssi | int | 信号强度(dBm) |
d. 开门按钮通知
开门按钮启用且经过防抖确认按下后,设备以 type=2 主动上报一次:
{
"device_sn": "{{device_sn}}",
"type": 2,
"cmd_type": "ext_button",
"info": {
"event": "press",
"state": 1,
"uptime_ms": 123456,
"event_uid": "{{device_sn}}-2-123456-1"
}
}
| 参数 | 类型 | 说明 |
|---|---|---|
| type | int | 固定为 2,表示设备主动事件 |
| cmd_type | string | 固定为 ext_button |
| info.event | string | 固定为 press |
| info.state | int | 固定为 1 |
| info.uptime_ms | int | 本次启动后的运行毫秒数 |
| info.event_uid | string | 事件唯一标识,业务服务可用于幂等去重 |
- 每次物理按压只上报一次,长按和释放不重复上报。
ext_button_enabled=0时不执行开门动作,也不上报该事件。- MQTT 离线时无法即时回调,但设备会将失败原因写入持久诊断日志。
10.查询在线状态
- 查询设备是否联网在线
请求URL
https://wdev.wmj.com.cn/deviceApi/getOnLine
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C0998927"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
返回示例
//成功
{
"code": 0,
"data": {
"on_line": 1
},
"msg": "查询成功"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码 0成功其他异常 |
| data.on_line | int | 在线状态:0=离线,1=在线 |
| msg | string | 描述信息 |
11.解绑设备
- 解绑设备,将设备和appid解除绑定关系
请求URL
https://wdev.wmj.com.cn/deviceApi/logout
请求方式
- POST
请求格式
- json
参数
{
"app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"app_secret": "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk",
"device_sn": "W76C1234567"
}
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| app_id | 是 | string | 用户app_id |
| app_secret | 是 | string | 用户app_secret |
| device_sn | 是 | string | 设备序列号 |
返回示例
//成功
{
"code": 0,
"msg": "解绑成功"
}
//失败
{
"code": 1004,
"msg": "设备未注册"
}
返回参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 错误码 0成功其他异常 |
| msg | string | 描述信息 |
+++
附录
设备序列号规则
W76C 设备序列号格式为:W76C + 7位数字
示例:W76C0998927
支持的命令类型汇总
| cmd_type | 说明 |
|---|---|
open |
开门/触发继电器 |
restart |
重启设备 |
getdevinfo |
获取设备信息 |
getdoorstate |
获取门状态 |
set_nonc |
设置常开/常闭模式 |
set_ext_button |
启用或停用开门按钮 |
set_ota |
OTA固件升级,请勿随意操作 |
回调通知类型汇总
| cmd_type | 说明 |
|---|---|
door_state_notify |
门状态变化通知 |
uart_data |
串口数据通知 |
online |
设备上线通知 |
ext_button |
开门按钮按下通知(type=2) |
更新日志
| 日期 | 内容 |
|---|---|
| 2026-08-22 | 【W76C 0.0.43】增加开门按钮 type=2 事件;增加 set_ext_button 启停配置和 getdevinfo.ext_button_enabled 状态回读;配置持久保存,停用后不执行开门动作或事件上报。 |
| 2025-12-16 | 初始版本。 |
作者:李汪 创建时间:2025-12-15 14:26
最后编辑:极客师傅 更新时间:2026-08-22 15:42
最后编辑:极客师傅 更新时间:2026-08-22 15:42