用户开放平台 · 对接文档
返回官网 登录工作台
开放平台 · 对接文档 · 免登录

物联网灌溉平台 API

本页属于用户开放平台的对接文档,完整接口说明公开可读。联调与回调排查请进入开放平台工作台(需 AppId 验证);现场操作请使用用户客户端(/h5/)。

接口说明

本系统对外提供 REST 风格 JSON 接口,主要用于:

  • 查询当前用户绑定的工程与设备
  • 管理工程下的设备信息
  • 向在线工程网关下发控制指令
  • 配置回调地址,接收绑定工程的业务事件通知(见 回调通知)
对接前请在后台「用户管理 → 密钥」生成 AppId 与 AppSecret。客户端页面与开放 API 均使用 AppId + AppSecret,业务接口仅携带 access_token。各接口的返回字段见对应接口文档中「返回字段」一节。

基础地址

开放 API 位于 api 模块,入口文件为 api.php,路由前缀为 /wlw/。

完整请求地址:{BASE_URL}/wlw/{路由名}

示例:/api.php/wlw/projects

路由列表

以下路由均通过 api.php 访问,控制器位于 app/api/controller/。

方法路由控制器说明鉴权
GET/POST/wlw/auth/tokenAuth/tokenAppId + 签名换取 access_token否
POST/wlw/auth/refreshAuth/refresh刷新 access_token是
POST/wlw/projectsProjects/projects工程列表是
POST/wlw/projectDetailProjects/projectDetail工程详情是
POST/wlw/getEquipmentConfigProjects/get_equipment_config设备类型/闸门类型等配置否
POST/wlw/gateEquipmentsProjects/gateEquipments可关联闸门列表(水位仪添加用)是
POST/wlw/equipmentProjects/equipment设备列表是
POST/wlw/equipmentDetailProjects/equipmentDetail设备详情是
POST/wlw/getEquipmentByIdProjects/getEquipmentById按 ID 查设备是
POST/wlw/equipmentAddProjects/addEquipment添加设备是
POST/wlw/equipmentEditProjects/editEquipment编辑设备是
POST/wlw/equipmentDeleteProjects/deleteEquipment删除设备是
POST/wlw/commandsProjects/commands可用指令列表是
POST/wlw/sendMessageProjects/sendMessage发送设备指令(单台即时下发;可 mode=broadcast)是
POST/wlw/sendBroadcastProjects/sendBroadcast广播群控(设备域 ffffffff,无回执)是
POST/wlw/resetOriginAlphaProjects/resetOriginAlpha重置水位仪原点角 α(同步等待回包,最多 30s)是
POST/wlw/sendMessageBatchProjects/sendMessageBatch批量指令入队(逐台串行下发)是
POST/wlw/deviceRecordsProjects/deviceRecords设备分表历史(含 sensor)是
POST/wlw/groupsProjects/groups设备分组列表是
POST/wlw/groupSaveProjects/groupSave保存设备分组是
POST/wlw/groupDeleteProjects/groupDelete删除设备分组是

客户端统一使用 AppId + AppSecret 签名 换取 access_token,业务接口携带 access_token 调用。

响应规范

所有接口均返回 JSON。成功时 code = 1,失败时 code = 0(鉴权类错误可能带数字子码,见鉴权错误码)。

字段类型说明
codeint1 成功,0 失败
msgstring提示信息,失败时说明原因
datamixed业务数据,具体字段见各接口文档
extendobject分页等扩展信息(仅部分列表接口返回)

extend 分页字段

字段类型说明
countint符合条件的总条数
pageint当前页码
limitint每页条数
{
  "code": 1,
  "msg": "获取成功",
  "data": {}
}

鉴权流程

第三方客户端仅支持 AppId + AppSecret:先用签名换取 access_token,再调用业务接口。

  1. 使用 AppId + AppSecret 签名 调用 /wlw/auth/token 换取 access_token(有效期 7200 秒)
  2. 调用业务接口时携带 access_token,业务接口不再重复签名

若在账号设置中配置了 IP 白名单,换 Token 与业务接口均会校验请求来源 IP;不填写表示全部开放。多个 IP 用逗号分隔填写。

签名算法

sign = UPPER(MD5(appid + timestamp + nonce + appsecret))
参数说明
appid开放平台 AppId(8 位数字),示例:{APP_ID}
timestampUnix 时间戳(秒),300 秒内有效
nonce随机字符串,16~32 位,仅可使用一次
appsecretAppSecret(32 位),仅用于服务端计算签名,勿外传

携带 access_token(业务接口)

方式示例
HeaderX-Api-Token: oat_xxxxxxxx
BearerAuthorization: Bearer oat_xxxxxxxx
Query?access_token=oat_xxxxxxxx

完整调用示例

BASE="{BASE_URL}"
APPID="{APP_ID}"
APPSECRET="你的AppSecret"
TS=$(date +%s)
NONCE=$(openssl rand -hex 8)
SIGN=$(echo -n "${APPID}${TS}${NONCE}${APPSECRET}" | md5sum | awk '{print toupper($1)}')

TOKEN=$(curl -s -G "${BASE}/wlw/auth/token" \
  --data-urlencode "appid=${APPID}" \
  --data-urlencode "timestamp=${TS}" \
  --data-urlencode "nonce=${NONCE}" \
  --data-urlencode "sign=${SIGN}" \
  | jq -r '.data.access_token')

curl -X POST "${BASE}/wlw/projects" \
  -H "X-Api-Token: ${TOKEN}"

换取 Token

POST GET 无需 access_token
/wlw/auth/token
参数必填说明
appid是AppId,示例:{APP_ID}
timestamp是Unix 时间戳(秒)
nonce是16~32 位随机字符串
sign是UPPER(MD5(appid+timestamp+nonce+appsecret))

返回字段

外层 code、msg 见响应规范。data 字段如下:

字段类型说明
access_tokenstring访问令牌,前缀 oat_,业务接口携带此值
token_typestring固定为 Bearer
expires_inint有效时长(秒),默认 7200

响应示例

{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "access_token": "oat_xxxxxxxx",
    "token_type": "Bearer",
    "expires_in": 7200
  }
}

刷新 Token

POST 需 access_token
/wlw/auth/refresh

Header 携带当前 X-Api-Token 或 Authorization: Bearer {access_token},返回新的 access_token,旧令牌立即失效。

无请求体参数。

返回字段

与换取 Token相同,data 含 access_token、token_type、expires_in。

响应示例

{
  "code": 1,
  "msg": "刷新成功",
  "data": {
    "access_token": "oat_xxxxxxxx",
    "token_type": "Bearer",
    "expires_in": 7200
  }
}

鉴权错误码

code说明
40101缺少 AppId
40102AppId 无效
40104缺少签名参数
40105签名错误
40106时间戳无效或过期
40107nonce 已使用
40108缺少 access_token
40109access_token 无效或过期
40110当前 IP 不在白名单内

业务接口鉴权失败时返回 code: 0,msg: 未登录或登录已失效。

工程列表

POST 需 access_token
/wlw/projects

返回当前用户已绑定的工程列表。

无请求体参数。

返回字段

data 为数组,每项字段如下。调用其他接口时请使用 pid 作为 project_id。

字段类型说明
pidint工程 ID
project_namestring工程名称
create_timestring当前账号绑定该工程的时间

响应示例

{
  "code": 1,
  "msg": "获取成功",
  "data": [
    {
      "pid": 10,
      "create_time": "2025-01-01 12:00:00",
      "project_name": "测试工程"
    }
  ]
}

工程详情

POST 需 access_token
/wlw/projectDetail
参数必填说明
project_id是工程 ID

返回字段

data 为工程对象,含下属设备列表 equipments。

字段类型说明
idint工程 ID
namestring工程名称
addressstring工程地址
statusint工程状态
remarkstring备注
equipmentsarray设备列表,每项字段见设备列表返回项,另含 device_type_image 图标 URL

设备配置(聚合)

POST 无需登录
/wlw/getEquipmentConfig

一次性返回设备类型、闸门类型、灯光类型等配置,可用于对接初始化。

无请求体参数。

返回字段

字段类型说明
equipment_typesarray设备类型列表,每项含 id、name、nickname、image(图标 URL)
gate_typearray闸门类型列表,每项含 id、name
dgTypeArrarray灯光类型列表,每项含 id、name
kill_lamp_form_hintobject杀虫灯表单说明(dg_type 灯管类型、timer_seconds 定时设置)
water_level_form_hintobject水位仪表单说明(bind_equipment_id、water_calibration、C/h/F 等)
water_level_bind_hintobject关联闸门规则说明(一扇闸一台水位仪)
water_level_reset_hintobject重置原点角说明:api=POST /wlw/resetOriginAlpha,wait_seconds=30,note 含 30s 内勿混发查询提示

设备列表

POST 需 access_token
/wlw/equipment
参数必填说明
project_id是工程 ID
page否页码,默认 1
limit否每页条数,默认 10
name否设备名称模糊搜索
device_type否设备类型 ID 或名称
gate_type否闸门类型 ID 或名称
status否设备状态

返回字段

data 为设备对象数组;分页信息在 extend(count、page、limit,见响应规范)。

字段类型说明
idint设备 ID,API 参数 equipment_id 使用此值
project_idint所属工程 ID
namestring设备名称
serial_numberint设备序号,同工程内唯一,从 0 起递增
device_typeint设备类型 ID
device_type_namestring设备分类名称
device_type_nicknamestring设备分类别名
gate_typeint闸门/设备子类型:1 滑板阀,2 溢流闸,3 渠道阀,4 杀虫灯,5 水位仪
percentageint|float当前开度 0~100(渠道阀 gate_type=3 状态/开度上报后写入;设开度后请轮询此字段)
longitude_latitudestring经纬度
statusint设备状态
volfloat最新电压(V)
vol_timestring最新电压获取时间
equipment_statusstring运行状态(闸门开/关/平/停,杀虫灯关/开/工作中等)
equipment_status_timestring运行状态最新更新时间
other_attributesstring其他属性(JSON 字符串,水位仪含 C/h/F/alpha_deg 等)
bind_equipment_idint|null水位仪关联闸门 ID
bind_relation_labelstring关联展示:水位仪行显示「闸门名(类型)」;闸门行显示「水位仪名(类型)」
bind_gate_labelstring水位仪绑定闸门展示
bind_water_level_labelstring闸门绑定水位仪展示
water_calibrationfloat水位校准(mm),同 JSON 内 h
water_level_paramsobject解析后的 C/h/F、alpha_deg、depth_mm、beta_deg 等(仅水位仪)
alpha_degfloat原点角 α(°),标定后写入
alpha_timestring原点角 α 更新时间
alpha_calibratedint是否已标定 α:1 已标定,0 未标定
depth_mmfloat最新液位 H(mm)
depth_timestring最新液位更新时间
beta_degfloat浮球角 β(°)
dg_typeint杀虫灯灯管类型 ID(1~8)
dg_type_namestring灯管类型名称
lamp_paramsobject杀虫灯扩展(lamp_status、定时秒数等)
lamp_statusstring杀虫灯状态,同 equipment_status
lamp_status_timestring杀虫灯状态更新时间

可关联闸门列表

POST 需 access_token
/wlw/gateEquipments

水位仪添加/编辑前拉取本工程下尚未被占用的闸门类设备。

参数必填说明
project_id是工程 ID
exclude_id否编辑水位仪时传自身设备 ID,保留当前已绑闸门

返回字段

data 为闸门数组,每项含 id、serial_number、name、gate_type_name。

设备详情

POST 需 access_token
/wlw/equipmentDetail
参数必填说明
project_id是工程 ID
equipment_id是设备 ID

返回字段

data 为单个设备对象,字段与设备列表返回项相同。

按 ID 查询设备

POST 需 access_token
/wlw/getEquipmentById
参数必填说明
equipment_id是单个 ID 或逗号分隔多个,如 1,2,3
project_id否工程 ID,传入时会校验设备归属

返回字段

data 为设备对象数组(即使只查一个 ID 也返回数组),每项字段与设备列表返回项相同。指令下发后轮询本接口读取 depth_mm、lamp_status、vol_time、percentage(开度)等时,建议携带 project_id 校验归属。

添加设备

POST 需 access_token
/wlw/equipmentAdd
参数必填说明
project_id是工程 ID
name是设备名称
device_type是设备类型 ID
longitude_latitude是经纬度
gate_type否闸门类型:1 滑板阀,2 溢流闸,3 渠道阀(水位仪一般不必传)
bind_equipment_id否关联闸门设备 ID(可选),先调 /wlw/gateEquipments
water_calibration建议填水位校准(mm),旧 H5 字段名,平台写入 other_attributes.h
dg_type杀虫灯必填灯管类型 ID,取值见 getEquipmentConfig.dgTypeArr(1 白光 … 8 青光)
lamp_tube_type否同 dg_type,兼容字段名
status否状态
other_attributes否高级:JSON 字符串(可含 C/F)

序号 serial_number 由系统自动递增(同一工程下从 0 起)。

返回字段

字段类型说明
idint新建设备 ID
serial_numberint分配的设备序号
bind_equipment_idint|null关联闸门 ID(水位仪)
bind_gate_namestring关联闸门名称
dg_typeint|null灯管类型 ID(杀虫灯)
dg_type_namestring灯管类型名称,如「紫光」

编辑设备

POST 需 access_token
/wlw/equipmentEdit
参数必填说明
id是设备 ID
name是设备名称
device_type是设备类型 ID
longitude_latitude是经纬度
gate_type否闸门类型
bind_equipment_id否水位仪关联闸门 ID
water_calibration否水位校准(mm)
dg_type杀虫灯必填灯管类型 ID
lamp_tube_type否同 dg_type
status否状态
other_attributes否其他属性 JSON

返回字段

字段类型说明
idint已更新设备 ID

删除设备

POST 需 access_token
/wlw/equipmentDelete
参数必填说明
id是设备 ID

返回字段

成功时通常仅返回 code 与 msg,无 data。

可用指令列表

POST 需 access_token
/wlw/commands
参数必填说明
project_id是工程 ID
equipment_id是设备 ID

返回字段

data 为指令对象数组,按设备类型与闸门类型过滤。发送指令时可使用 id(作为 command_id)或 english_name(作为 action)。

字段类型说明
idint指令 ID(虚拟点位为 0)
function_namestring中文功能名,如「开闸」
english_namestring英文动作名,如 open
command_typeint适用类型:1~3 闸门,4 杀虫灯
remarkstring备注说明
virtualint可选;溢流闸固定点位为 1(无命令表 ID,用 english_name 下发)

溢流闸(gate_type=2)额外返回 overflow_ui(布局、hide_aperture、点位列表),详见溢流闸固定点位。

发送设备指令

POST 需 access_token
/wlw/sendMessage
参数必填说明
project_id是工程 ID
equipment_id是设备 ID
command_id二选一指令表 ID(兼容旧版)
action二选一英文动作名,见下方附录
aperture条件开度 0–100 整数;仅 action=aperture 且设备为渠道阀 gate_type=3 时必填,详见开度控制
timer_seconds条件定时秒数 1-65534,kill_lamp_timer_set 或 command=17 时必填

返回字段

字段类型说明
success_countint成功下发到的网关连接数
fail_countint失败数(保留字段,当前一般为 0)
total_countint本次尝试下发的连接总数
actionstring实际执行的动作名
equipment_idint目标设备 ID
project_idint目标工程 ID

响应示例

{
  "code": 1,
  "msg": "消息发送完成",
  "data": {
    "success_count": 1,
    "fail_count": 0,
    "total_count": 1,
    "action": "open",
    "equipment_id": 1,
    "project_id": 10
  }
}
工程网关须在线且已配置通讯序列号。接口参数 equipment_id 为设备表 id;设备 serial_number 须在 1–255 之间。

水位仪说明

查液位请用 action=water_level_query 或 origin_angle_query(效果相同,回包当 β 算液位),下发后轮询 getEquipmentById 读 depth_mm / depth_time。

标定/重置原点角 α 请勿用本接口,须调用专用接口 POST /wlw/resetOriginAlpha。禁止传 reset_origin_angle_query / reset_origin_angle。

α 与 β 共用下行物理帧 4146{设备ID}0300000009。调用 resetOriginAlpha 后 30 秒内勿再对本设备发 water_level_query / origin_angle_query,否则回包意图可能错乱(后端会拒绝并发查询)。

开度:单台请用 action=aperture + aperture=0~100(仅渠道阀)。完整说明、换算表与界面建议见开度控制。
溢流闸(V2.5):gate_type=2 用固定点位 action(如 overflow_low / open_25),勿传 aperture / flat。详见溢流闸固定点位。

开度控制(渠道阀)

对渠道阀(gate_type=3)提供开度设置。滑板阀 / 溢流闸等不支持百分比开度接口。

约定摘要

项说明
适用设备仅 gate_type = 3(渠道阀)
动作action=aperture
参数aperture:整数 0~100(必填)
协议换算下行 data 末字节 = 开度 + 4(十六进制)
急停action=stop(与开度独立;渠道阀常见末字节 69,以命令表为准)
回写字段设备上报后主表 percentage 更新;对接方轮询 getEquipmentById / 设备列表即可

换算对照(验收)

开度 %末字节 hex说明
004关到位侧
5036中间开度
10068开到位侧

单台设开度

POST /wlw/sendMessage(需 access_token)

project_id=10&equipment_id=12&action=aperture&aperture=30
{
  "project_id": 10,
  "equipment_id": 12,
  "action": "aperture",
  "aperture": 30
}

sendMessage 成功只表示指令已发出,不代表设备已到位。成功后请轮询设备 percentage(建议间隔 1~2 秒,超时 15~30 秒)。

批量设开度

POST /wlw/sendMessageBatch

project_id=10&equipment_ids=12,15&action=aperture&aperture=50
  • 所选设备须全部为渠道阀,否则整批拒绝。
  • 本批次共用同一 aperture;接口立即返回,后台按队列串行下发。
  • 结果靠轮询各设备 percentage / 通讯记录 / 回调。

H5 / 小程序界面建议

  1. 仅当 gate_type === 3 时展示开度与「设开度」按钮。
  2. 展示当前 percentage(无则 -)。
  3. 点击「设开度」→ 输入 0~100 → 调 sendMessage → 轮询更新 percentage。
  4. 非渠道阀不要展示设开度入口。

常见错误(开度)

msg处理
当前设备不是渠道阀(gate_type!=3),不支持开度控制仅对渠道阀调用;界面按 gate_type 隐藏入口
开度指令需要 aperture 参数,且范围0-100补传整数 aperture
开度批量下发仅支持渠道阀(gate_type=3)…批量列表勿混入非渠道阀

溢流闸固定点位(V2.5)

对溢流闸(gate_type=2)提供 8 个固定停止点位。不建表;后端常量组 4146 控制帧。详细对接见仓库文档《V2.5-H5对接说明》。

约定摘要

项说明
适用设备仅 gate_type = 2
开度滑条不支持 aperture(请隐藏)
平闸不支持 flat
停action=stop,末字节 69(非命令表通用 03)
布局建议左开75/50/25;中 开|停|关;右溢流高/中/低

点位 → action → 末字节

点位action末字节
溢流低overflow_low04
溢流中overflow_mid12
溢流高overflow_high21
关闭close / overflow_close2F
开25%open_253D
开50%open_504B
开75%open_755A
全开open / overflow_full68
停stop / overflow_stop69

注意:溢流闸上 close=2F(关闭),不是旧习惯的 04(现为溢流低);stop=69,不是通用闸门 03。

下发示例

POST /wlw/sendMessage

{
  "project_id": 10,
  "equipment_id": 12,
  "action": "overflow_low"
}

/wlw/commands 对溢流闸会返回虚拟点位及 overflow_ui(含布局与 hide_aperture)。

重置水位仪原点角 α

POST 需 access_token
/wlw/resetOriginAlpha

水位仪标定/重置原点角 α 的专用同步接口。下发 reset_origin_angle_query 并阻塞等待设备回包,最长 30 秒。成功时直接返回更新后的 alpha_deg、alpha_time 及完整 equipment 对象。

参数必填说明
project_id是工程 ID
equipment_id是水位仪设备 ID

返回字段(data)

字段类型说明
alpha_degfloat更新后的原点角 α(°)
alpha_timestring原点角更新时间
wait_secondsint同步等待上限,默认 30
equipmentobject完整设备对象(字段同设备列表)

成功响应示例

{
  "code": 1,
  "msg": "原点角 α 已更新为 21.9727°",
  "data": {
    "alpha_deg": 21.9727,
    "alpha_time": "2026-07-07 11:32:28",
    "wait_seconds": 30,
    "equipment": {
      "id": 56,
      "alpha_deg": 21.9727,
      "alpha_time": "2026-07-07 11:32:28",
      "alpha_calibrated": 1
    }
  }
}
30 秒互斥窗口:从调用本接口起,该设备 30 秒内不可重复重置或发送 water_level_query / origin_angle_query。对接方 HTTP 超时建议 ≥35 秒;成功后可直接用返回的 equipment 更新界面,无需再轮询。

批量指令入队

一次选择多台设备(同一工程,最多 50 台),将指令写入下发队列;平台在上一条发送完成后,再等待账号配置的队列间隔(秒,后台可编辑,系统默认 3 秒),然后才发下一条。接口立即返回,不等待全部发完。设备执行结果请通过回调通知接收;每条成功下发的指令仍会写入工程通讯记录。

POST 需 access_token
/wlw/sendMessageBatch
参数必填说明
project_id是工程 ID
equipment_ids是设备 ID 数组,或 JSON 字符串 / 逗号分隔;最多 50 个
action是英文动作:open / close / flat / stop / status / voltage / current 等
aperture条件仅 action=aperture 时必填(0–100);所选须全部为渠道阀,详见开度控制

返回字段

字段类型说明
batch_idstring本批次 ID(便于后台排查队列表)
queued_countint已入队条数
project_idint工程 ID
actionstring本次动作

响应示例

{
  "code": 1,
  "msg": "已加入下发队列,将按顺序逐台发送;执行结果请通过回调通知接收",
  "data": {
    "batch_id": "a1b2c3...",
    "project_id": 1,
    "action": "open",
    "queued_count": 50
  }
}

广播群控(V2.3)

UI 文案可为「群控」,实际调用广播:设备域固定 ffffffff,功能码 00;按工程内已有闸型(1/2/3)各发一帧。不等待设备回执。杀虫灯 / 水位仪 / 传感器不参与广播。

POST 需 access_token
/wlw/sendBroadcast
参数必填说明
project_id是工程 ID
action是open / close / flat / stop,或 broadcast_open 等

兼容写法:POST /wlw/sendMessage + mode=broadcast(可不传 equipment_id)。

示例

project_id=10&action=open
分组控制请用 sendMessageBatch 传入组内真实 equipment_ids,不要与广播混淆。

设备分组(V2.3)

工程内自定义分组;组控 = 取成员 ID 后调用批量下发。

POST 需 access_token
/wlw/groups
参数必填说明
project_id是工程 ID

返回分组列表及成员 equipment_ids / 序号等。

POST 需 access_token
/wlw/groupSave
参数必填说明
project_id是工程 ID
id否有则更新,无则新建
name是分组名称
code否分组编号
sort否排序
equipment_ids否成员设备 ID 列表(数组或逗号分隔)
POST 需 access_token
/wlw/groupDelete
参数必填说明
project_id是工程 ID
id / group_id是分组 ID

传感器 / 流量计 / 智能开关(V2.3)

gate_type名称对接要点
6传感器(采集仪)serial_number=采集仪地址;下行 EB55。action:sensor_query_data / sensor_query_id / sensor_query_voltage / sensor_set_id(需 new_id)。历史 record_type=sensor
7流量计设备详情可读 k / k1 / s / s1(或 flow_params);公式 K=K1×S/S1。通信帧待硬件协议补齐
8智能开关action=open|close(或 smart_switch_open|smart_switch_close);帧设备域固定 ffffffff

H5 双模式与 PC 调控窗说明见仓库文档 docs/版本/V2.3-H5对接说明.md。

设备历史记录

POST 需 access_token
/wlw/deviceRecords
参数必填说明
project_id是工程 ID
record_type是voltage / current / position / time / status / reply / water_level / sensor
equipment_id否设备 ID
device_code否设备序号 / 采集仪地址
page / limit否分页,limit 最大 100

record_type=sensor 时重点字段:collector_id、channel_count、channels_json、extra_data。

回调通知

在客户端账号设置中配置回调地址后,当前账号已绑定工程发生设备通讯事件时,平台会向该地址发起 POST 请求(JSON)。除可读说明外,建议直接使用 project_id、equipment_id、action 进行业务处理。

触发条件

  • 已配置有效的回调地址(以 http:// 或 https:// 开头)
  • 当前账号已绑定对应工程
  • 工程网关在线并产生业务通讯(心跳类消息不会通知)
  • 账号设置中的「通知范围」由平台管理员配置:默认可仅通知已解析的业务事件;也可配置为通知全部原始报文。如需调整请联系管理员

请求方式

项说明
MethodPOST
Content-Typeapplication/json
超时单次请求最长 10 秒;超时或非 2xx 响应视为失败
失败保护连续回调失败后,10 秒内暂停向该地址发送,避免无效地址持续占用连接

通知字段说明

平台 POST 的 JSON 请求体包含以下字段。建议优先使用 project_id、equipment_id、action 做业务判断;无法解析时回退 parse_text。

字段类型说明
eventstring事件类型,固定为 tcp_message
project_idint工程 ID,与开放 API 的 project_id 一致
equipment_idint设备 ID(数据库主键,与开放 API 的 equipment_id 一致;无法解析时为 0)
actionarray动作数组,按「主动作 → 细化项」顺序排列;无法识别时为 []。每项字段见下表
字段类型说明
codestring动作码,如 open、close、status、aperture、position、voltage;完整列表见action 动作列表
valuenumber可选,数值(开度、位置百分比、电压等)
unitstring可选,单位,如 percent、V
resultstring可选,执行结果,如 success(设备回复类消息)
create_timestring事件发生时间,格式 Y-m-d H:i:s
tagstring场景中文标签:握手、心跳、指令、上报、回复、业务
directionint通讯方向:0 未知,1 上行(设备→平台),2 下行(平台→设备)
message_sceneint场景码:1 握手,2 心跳,3 指令,4 上报,5 回复
parse_textstring可读业务说明,如 设备1(滑板阀) 回复:开闸成功
parse_displaystring带「解析:」前缀的展示文案,内容与 parse_text 一致
message_serial_numberstring工程通讯序列号,可用于与平台侧日志关联
payload_hexstring原始报文十六进制,供调试追溯;一般业务逻辑可忽略
source_ipstring网关来源 IP
tcp_portint网关 TCP 端口
client_idstring网关连接标识

无法解析为具体设备/动作时,equipment_id 为 0、action 为 [],可回退使用 parse_text。

通知示例

开闸成功(含开度):

{
  "event": "tcp_message",
  "project_id": 10,
  "equipment_id": 1,
  "action": [
    { "code": "open", "result": "success" },
    { "code": "aperture", "value": 50, "unit": "percent" }
  ],
  "create_time": "2026-06-10 18:01:39",
  "tag": "回复",
  "parse_text": "设备1(滑板阀) 回复:开闸成功,开度50%",
  "parse_display": "解析:设备1(滑板阀) 回复:开闸成功,开度50%",
  "message_serial_number": "SN001"
}

状态上报(含位置百分比):

{
  "event": "tcp_message",
  "project_id": 10,
  "equipment_id": 1,
  "action": [
    { "code": "status" },
    { "code": "position", "value": 80, "unit": "percent" }
  ],
  "create_time": "2026-06-10 18:05:12",
  "tag": "上报",
  "parse_text": "设备1(滑板阀) 状态:开度80%",
  "parse_display": "解析:设备1(滑板阀) 状态:开度80%",
  "message_serial_number": "SN002"
}

简单开闸指令:

{
  "event": "tcp_message",
  "project_id": 10,
  "equipment_id": 1,
  "action": [{ "code": "open" }],
  "create_time": "2026-06-10 18:01:39",
  "tag": "上报",
  "parse_text": "设备1(滑板阀) 回复:开闸成功",
  "parse_display": "解析:设备1(滑板阀) 回复:开闸成功",
  "message_serial_number": "SN001"
}
回调地址在账号设置中修改后即时生效。请确保接收端在 10 秒内返回 HTTP 2xx,并正确处理 JSON 请求体。

action 动作列表

action说明适用设备
open开闸闸门
close关闸闸门
flat平闸闸门
stop停闸闸门
aperture开度控制(需 aperture 0~100;末字节=开度+4)仅渠道阀 gate_type=3,见开度控制
open / close(智能开关)开/关;帧设备域强制 ffffffff智能开关 gate_type=8
smart_switch_open / smart_switch_close智能开关开/关(与 open/close 等价)gate_type=8
sensor_set_id设采集仪 ID(需 new_id)传感器 gate_type=6
sensor_query_id查询采集仪 ID传感器
sensor_query_voltage查询采集仪电压传感器
sensor_query_data拉取传感器通道数据传感器
status状态查询通用
voltage电压查询通用
current / current_up / current_down电流查询通用
angle_open / angle_close开/关闸位置角度闸门
kill_lamp_close杀虫灯关灯 device_type=2
kill_lamp_open杀虫灯开灯
kill_lamp_open_auto_close杀虫灯开-定时关闭(须先 timer_set)灯
kill_lamp_timer_set杀虫灯定时设置(需 timer_seconds)灯
kill_lamp_timer_query杀虫灯定时时间查询灯
kill_lamp_status_query杀虫灯状态查询(回包同步到 lamp_status,建议轮询 getEquipmentById)灯
water_level_query查液位(回包当 β,用已存 α 算 depth_mm;须先标定 α)水位仪
origin_angle_query与 water_level_query 效果相同(不会写 alpha_deg)水位仪
reset_origin_angle_query / reset_origin_angle禁止通过 sendMessage 调用,请用 resetOriginAlpha—
position闸门当前位置(百分比,状态上报细化项)闸门
reply设备回复(无法细化为开/关/平时)闸门
heartbeat心跳(通常不触发回调)通用

常见错误

msg原因与处理
未登录或登录已失效access_token 缺失、过期或无效,请重新调用 /wlw/auth/token 换取
40105 签名错误检查 sign 计算公式、AppSecret 是否正确,参数拼接顺序为 appid+timestamp+nonce+appsecret
40106 时间戳无效或过期服务器时间与调用方时间差超过 300 秒,请校准时间
40107 nonce 已使用每次换取 Token 需使用新的 nonce
您没有权限查看该工程当前 AppId 对应用户未绑定该工程,请在后台「用户工程」中绑定
网关离线,该工程没有在线客户端连接工程网关离线,请确认网关已连接后再发送
该工程没有在线客户端连接工程网关离线,请确认网关与设备连接正常
该工程未配置通讯序列号在后台工程网关中配置 message_serial_number
重置原点角 α 请调用 POST /wlw/resetOriginAlpha…勿用 sendMessage 传 reset_origin_angle*;标定 α 须走专用接口
该设备正在重置原点角 α(30秒内…)重置进行中或 30s 互斥窗口内,勿重复重置或发 water_level_query / origin_angle_query
请先通过「重置原点角」标定 α 后再查询液位未标定 α 时不可发 water_level_query / origin_angle_query
当前设备不是渠道阀(gate_type!=3),不支持开度控制仅渠道阀可设开度,见开度控制
开度指令需要 aperture 参数,且范围0-100补传整数 aperture
开度批量下发仅支持渠道阀…批量勿混入非渠道阀
溢流闸不支持开度滑条…gate_type=2 用固定点位 action,见溢流闸点位
溢流闸不支持平闸…勿对溢流闸传 flat

版本说明

面向对接方:各版本开放能力变更摘要。接口细节见正文各章节。

V2.5 2026-09

  • 溢流闸固定点位:gate_type=2 支持 8 停点(溢流低/中/高、关闭、开25/50/75%、全开);不建表;见溢流闸固定点位。

V2.4.2 2026-09

  • 回执补发收敛:仅 4146 指令字节 01 超时原帧重发;非 01(如查状态 03)不补发。

V2.4.1 2026-09

  • 补偿策略调整:仅操作超时重发原控制;查询一律不补发。时序仍为 5s / 5s / 最多 3 次。回调规则同 V2.4(有回传推状态,满次推设备异常)。

V2.4 2026-09

  • 指令回执补偿:凡有回执的命令,5s 无上行则同网关补偿(V2.4 时操作曾补对应查询;自 V2.4.1 起改为重发原指令)。成功按现网回调,满次无回执推送设备异常终态。覆盖闸门/灯/水位/智能开关/传感器;广播不适用。

V2.3 2026-08

  • 入口拆分:用户客户端(/h5/)与用户开放平台(对接文档免登录 /openapi + 工作台需密钥 /client)。
  • 广播群控:sendBroadcast(或 sendMessage + mode=broadcast);设备域 ffffffff,无回执。
  • 设备分组:groups / groupSave / groupDelete;组控走 sendMessageBatch。
  • 传感器:gate_type=6,EB55/EB5A;action 见新设备类型;历史 record_type=sensor。
  • 流量计:gate_type=7,设备详情返回 k/k1/s/s1(K=K1×S/S1)。
  • 智能开关:gate_type=8,open/close,帧设备域固定 ffffffff。
  • 其它:夜间巡检跳过离线网关;24V 电压按 2 字节解析。

V2.2 2026-07

  • 渠道阀开度:支持设置开度 0~100(单台 / 批量),设备信息返回当前开度 percentage。详见开度控制。
  • 闸门数据更准确:开闸位置、保护时间(分钟)、上行/下行阻断电流等解析与展示已校正。
  • 夜间自动巡检:夜间自动查询闸门状态与电压;异常可标记故障或缺电,便于次日查看。

V2.1 2026-07

  • 杀虫灯:支持开关、定时、状态查询;设备信息可返回灯管类型、灯光状态等字段。
  • 水位仪:支持液位查询、可选关联闸门;提供重置原点角专用接口;设备信息可返回液位、原点角等字段。
  • 批量控制:支持对多台闸门设备一次下发相同动作(如全开 / 全关)。
0.020440s