W76R(4G UHF RFID电瓶车门禁控制器)API
W76R(4G UHF RFID电瓶车门禁控制器)API
概述
W76R 用于电瓶车停车场、车棚和出入口门禁。设备读取车辆标签的 EPC 与芯片 TID,在本地授权库内完成判断,授权通过后输出约 1 秒开门信号。
| 项目 | 说明 |
|---|---|
| 设备序列号 | 以 W76R 开头,以设备标签为准 |
| 接口域名 | https://wdev.wmj.com.cn |
| 请求格式 | application/json |
| 本地标签容量 | 每台最多 4096 张 |
| 通行判定 | 本地完成,正常通行不依赖当次云端往返 |
| 防复制校验 | 同时校验只读 TID 与 EPC |
| 重复识别 | 同一 EPC 持续停留时,每 3 秒可重新触发 |
API 凭据请在微门禁开放平台申请。示例中的 {{wmjv2appid}}、{{wmjv2appsecret}} 和 {{device_sn}} 均为环境变量占位符,请勿把正式密钥写入客户端、日志或公开代码仓库。
接入流程
- 注册 W76R,将设备绑定到客户账号。
- 查询设备在线状态。
- 在天线读区内只放置一张待发标签,读取 EPC 和 TID。
- 可选:改写 EPC,再次读取并确认。
- 把 TID、EPC 和有效期写入需要放行的 W76R。
- 车辆进入读区后,设备本地判断权限并输出开门信号。
写标签和授权通行是两个独立操作。任意一台已注册、在线且 RFID 功能正常的 W76R 都可以作为写标签设备,请用
device_sn指定实际执行设备。标签需要通过几台 W76R,就必须向这几台设备分别下发同一条 TID 与 EPC 授权记录。
设备命令公共规则
本文所有设备命令均复用硬件云 APIv2 通用接口:
- 请求 URL:
https://wdev.wmj.com.cn/deviceApi/send - 请求方式:
POST - 请求格式:
application/json type固定为1- 命令名放在
data.cmd_type - 命令参数放在
data.info
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}",
"type": 1,
"data": {
"cmd_type": "命令名称",
"info": {}
}
}
平台同步等待设备响应,默认最长约 15 秒。顶层 code 表示硬件云处理结果;data.info.code 表示设备执行结果。两层 code 都为 0 才表示命令真正成功。
1.注册设备
请求URL
https://wdev.wmj.com.cn/deviceApi/register
请求方式
POST
请求格式
json
参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
app_id |
是 | string | APIv2 应用 ID |
app_secret |
是 | string | APIv2 应用密钥 |
device_sn |
是 | string | W76R 设备序列号 |
返回示例
{
"code": 0,
"msg": "注册成功"
}
2.查询设备在线状态
简要描述
查询设备是否连接硬件云。本接口只读取平台在线记录,不向设备发送命令。
请求URL
https://wdev.wmj.com.cn/deviceApi/getOnLine
请求方式
POST
请求格式
json
参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
返回示例
{
"code": 0,
"msg": "查询成功",
"data": {
"on_line": 1
}
}
| 返回字段 | 类型 | 说明 |
|---|---|---|
code |
number | 0 表示查询成功 |
data.on_line |
number | 1 在线,0 离线 |
3.查询设备信息
简要描述
查询型号、软硬件版本、4G 信号和门禁输入输出状态。设备必须在线。
请求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": "getdevinfo",
"info": {}
}
}
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "getdevinfo",
"info": {
"code": 0,
"msg": "OK",
"model": "W76R",
"hw": "1.0.0",
"sw": "0.1.8",
"fwVer": "0.1.8",
"rssi": -55,
"csq": 24,
"ber": 0,
"doorstate": 0,
"relayStatus": 0
}
}
}
| 返回字段 | 类型 | 说明 |
|---|---|---|
data.info.model |
string | 产品型号 |
data / info / hw |
string | 硬件版本 |
data.info.sw / fwVer |
string | 固件版本 |
data.info.rssi |
number | 4G 接收信号强度,单位 dBm |
data.info.csq |
number | 蜂窝网络信号质量 |
data.info.ber |
number | 蜂窝网络误码率指标 |
data.info.doorstate |
number | 门磁输入状态 |
data.info.relayStatus |
number | 开门输出状态 |
响应可能同时包含设备和 SIM 网络标识字段。客户系统应按最小必要原则保存,不应公开这些标识。
4.读取现场标签
简要描述
获取设备最近一次成功读取的 EPC、芯片 TID 和本地授权数量。该接口不会自动注册标签,也不会主动开门。发卡时请确保天线有效读区内只有一张待发标签。
请求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": "rfid_tag_get",
"info": {}
}
}
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_tag_get",
"info": {
"code": 0,
"msg": "OK",
"epc": "{{tag_epc}}",
"tid": "{{tag_tid}}",
"card_count": 1250
}
}
}
| 返回字段 | 类型 | 说明 |
|---|---|---|
data.info.epc |
string | 标签 EPC,十六进制字符串 |
data.info.tid |
string | 标签芯片只读 TID,十六进制字符串 |
data.info.card_count |
number | 当前设备本地授权记录数量 |
- 尚未成功读到标签时,
epc和tid为空字符串。 - EPC、TID 不带
0x、空格或分隔符。 - 返回的是最近一次成功读取结果,发卡软件应提示操作员核对当前标签。
5.改写标签 EPC(可选)
简要描述
按当前 EPC 选中读区内标签并改写 EPC 存储区。多数项目可直接使用标签出厂 EPC,无需改写。
改写 EPC 不会改变 TID,也不会自动授权。写入后必须回读确认,再用原 TID 与新 EPC 调用“新增或更新车辆标签”。
请求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": "rfid_tag_epc_write",
"info": {
"current_epc": "{{current_tag_epc}}",
"new_epc": "{{new_tag_epc}}",
"access_password": 0
}
}
}
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
data.info.current_epc |
是 | string | 当前 EPC,2~16 字节 |
data.info.new_epc |
是 | string | 新 EPC,必须与当前 EPC 等长 |
data.info.access_password |
否 | number | 标签访问密码的十进制无符号 32 位数,默认 0 |
EPC 必须为偶数字节长度的十六进制字符串。写入时读区内只能有一张目标标签。本接口不开放标签锁定、销毁或修改 TID。
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_tag_epc_write",
"info": {
"code": 0,
"msg": "OK"
}
}
}
6.新增或更新车辆标签
简要描述
以芯片 TID 为唯一键,在目标 W76R 本地新增或更新授权记录。相同请求可以安全重试。
请求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": "rfid_card_upsert",
"info": {
"card_id": "EV-000001",
"tid": "{{tag_tid}}",
"epc": "{{tag_epc}}",
"enabled": 1,
"valid_from": 0,
"valid_until": 0
}
}
}
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
data.info.card_id |
是 | string | 客户业务卡号,最长 19 个字符 |
data.info.tid |
是 | string | 标签 TID,最长 16 字节 |
data.info.epc |
是 | string | 标签当前 EPC,最长 16 字节 |
data.info.enabled |
否 | number / boolean | 1 / true 启用,0 / false 停用;默认启用 |
data.info.valid_from |
否 | number | 生效时间,Unix 秒;0 表示不限制 |
data.info.valid_until |
否 | number | 失效时间,Unix 秒;0 表示不限制 |
valid_from 和 valid_until 同时非零时,开始时间不得晚于结束时间。同一 EPC 不能绑定到另一个 TID。
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_card_upsert",
"info": {
"code": 0,
"msg": "OK"
}
}
}
多设备部署时,本地授权库不会自动互相复制。客户平台应保存“标签—设备”关系,并向所有允许通行的 W76R 分别下发授权。
7.分页查询车辆标签
简要描述
分页查询目标 W76R 的本地授权记录,用于发卡结果确认、设备迁移和数据核对。
请求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": "rfid_card_list",
"info": {
"offset": 0,
"limit": 5
}
}
}
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
data.info.offset |
否 | number | 起始位置,默认 0 |
data.info.limit |
否 | number | 返回数量,默认 5,最大 5 |
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_card_list",
"info": {
"code": 0,
"msg": "OK",
"total": 1,
"offset": 0,
"limit": 5,
"cards": [
{
"card_id": "EV-000001",
"tid": "{{tag_tid}}",
"epc": "{{tag_epc}}",
"enabled": 1,
"valid_from": 0,
"valid_until": 0
}
]
}
}
}
| 返回字段 | 类型 | 说明 |
|---|---|---|
data.info.total |
number | 本地授权记录总数 |
data.info.offset |
number | 本页起始位置 |
data.info.limit |
number | 本页请求数量 |
data.info.cards |
array | 授权记录数组 |
offset 或 limit 超出范围、不是整数时,设备返回 data.info.code=-1 和明确的参数错误说明,不会静默改用默认值。此行为要求固件 0.1.8 或更高版本。
8.启用或停用车辆标签
简要描述
按 TID 修改一条授权记录的启用状态,不删除车辆信息。
请求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": "rfid_card_enable",
"info": {
"tid": "{{tag_tid}}",
"enabled": 0
}
}
}
| 参数名 | 必填 | 类型 | 说明 |
|---|---|---|---|
data.info.tid |
是 | string | 标签只读 TID |
data.info.enabled |
是 | number | 1 启用,0 停用 |
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_card_enable",
"info": {
"code": 0,
"msg": "OK"
}
}
}
9.删除车辆标签
简要描述
按 TID 删除目标 W76R 中的一条本地授权记录。删除后该标签在该设备上立即失去通行权限。
请求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": "rfid_card_delete",
"info": {
"tid": "{{tag_tid}}"
}
}
}
返回示例
{
"code": 0,
"data": {
"device_sn": "{{device_sn}}",
"cmd_type": "rfid_card_delete",
"info": {
"code": 0,
"msg": "OK"
}
}
}
10.本地鉴权和开门逻辑
W76R 识别标签后依次检查:
- TID 是否存在于本地授权库;
- 当前 EPC 是否与该 TID 保存的 EPC 一致;
- 授权记录是否启用;
- 当前时间是否处于有效期;
- 授权库是否可以正常读取。
全部通过后,设备输出约 1 秒开门信号。未注册、已停用、未生效、已过期、TID/EPC 不一致或定时授权无法取得有效时间时,均不输出开门信号。
标签识别语音只表示设备发现标签,不表示鉴权成功。当前版本不主动上报每一次允许或拒绝记录;如项目需要云端通行流水,应另行约定上报接口。
11.安全和多设备部署
- TID 通常由标签芯片提供且不可改写,EPC 可以改写。W76R 同时校验 TID 和 EPC,降低只复制 EPC 获得权限的风险。
- EPC 改写后,仍保存旧 EPC 的设备会拒绝通行,必须重新下发授权。
- RFID 管理命令应通过本文 HTTPS 接口发送,不支持客户直接向设备发送明文管理命令。
- 发卡区应限制射频覆盖范围,并确保一次只有一张标签。
- 客户平台应保存原始 TID、当前 EPC、业务卡号、授权设备和有效期,设备更换或恢复时据此重新下发。
- 3000 张以上标签建议使用后台任务队列逐台、逐条下发,保存每条命令的双层返回,并在完成后分页核对总数与抽样数据。
12.错误处理和常见问题
平台层常见返回
| code | 说明 | 建议处理 |
|---|---|---|
0 |
平台处理成功 | 设备命令继续检查 data.info.code |
1000 |
无权操作设备 | 先注册设备并核对账号归属 |
1001 |
参数错误、发布失败或等待超时 | 检查请求;超时前不要重复并发下发 |
1002 |
设备不在线 | 等待设备上线后重试 |
1003 |
设备尚未激活或不存在 | 确认设备已上电联网 |
设备命令失败时,以 data.info.code 和 data.info.msg 为准。管理命令返回 -403 表示未通过受保护通道,请使用本文的 /deviceApi/send,不要绕过硬件云协议。
写入 EPC 成功后为什么不能开门?
写入 EPC 不等于授权。请先回读确认,再把原 TID、新 EPC 写入每台需要放行的 W76R。
一台 W76R 写的标签能否在另一台使用?
可以。写标签设备不限制通行设备,但另一台设备必须保存相同 TID 与 EPC 的有效授权。
设备离线时车辆还能通行吗?
已保存且仍有效的授权可在本地判断。新增、修改、停用或删除授权需要设备重新在线后下发。
读标签接口为什么返回空字符串?
设备还没有成功读取标签,或标签不在有效读区。请调整距离和方向,并确保读区内只有目标标签。
13.解绑设备
简要描述
解除 W76R 与当前账号的绑定。解绑不会清空本地 RFID 授权库,不能用解绑代替删除标签。
请求URL
https://wdev.wmj.com.cn/deviceApi/logout
请求方式
POST
请求格式
json
参数
{
"app_id": "{{wmjv2appid}}",
"app_secret": "{{wmjv2appsecret}}",
"device_sn": "{{device_sn}}"
}
返回示例
{
"code": 0,
"msg": "解绑成功"
}
14.更新记录
| 日期 | 版本 | 说明 |
|---|---|---|
| 2026-08-20 | 1.0 | 首次公开 W76R 注册、在线查询、RFID 发卡、标签管理、本地鉴权和多设备部署接口;分页参数错误改为明确返回 |
最后编辑:极客师傅 更新时间:2026-08-22 15:42