Skip to content

执行继电器命令

控制设备的一路或多路继电器。单路控制和多路控制使用同一个端点,单路控制时 relays 只包含一个元素。

同一请求中的多路操作作为一条设备命令发送,并只占用一次设备操作额度。不要将同一批变更拆成多个连续请求。

端点

http
POST /wlte/v1/devices/{deviceId}/relays/commands

权限要求

Scope必须说明
device:control控制指定设备的继电器

请求

http
POST {baseUrl}/wlte/v1/devices/{deviceId}/relays/commands
Authorization: Bearer {accessToken}
Content-Type: application/json
Accept: application/json
Idempotency-Key: <调用方生成的唯一字符串>
json
{
  "relays": [
    { "index": 1, "action": "ON" },
    { "index": 2, "action": "OFF" }
  ]
}
字段类型必填说明
relaysarray非空继电器操作列表
relays[].indexinteger继电器序号,从 1 开始;同一请求内不能重复
relays[].actionstringONOFFJOG

动作说明:

动作说明
ON保持接通
OFF保持断开
JOG短暂接通后自动断开,持续时长使用设备保存的点动配置

请求中的继电器序号必须在设备能力范围内。可通过 查询设备类型定义列表 获取继电器数量和支持动作。

Idempotency-Key

Idempotency-Key 必填,用于标识一次操作意图。

场景Key 使用方式
新的用户操作生成新 key
网络超时,未收到响应使用原 key 重试相同请求
收到 429 RATE_LIMITED 后重试同一操作等待后使用原 key
设备、继电器列表或动作发生变化生成新 key

相同 key 配相同请求不会重复下发;相同 key 配不同请求会返回 409 IDEMPOTENCY_CONFLICT。幂等记录保留约 48 小时。

成功响应

HTTP 状态码:

text
202 Accepted
json
{
  "code": "COMMAND_ACCEPTED",
  "message": "Command accepted.",
  "requestId": "req_001",
  "data": {
    "command": {
      "id": "cmd_001",
      "deviceId": "abc123456789",
      "operation": "device.relay.set",
      "status": "SUCCESS",
      "params": {
        "relays": [
          { "index": 1, "action": "ON" },
          { "index": 2, "action": "OFF" }
        ]
      },
      "createdAt": "2026-07-15T08:30:00Z"
    },
    "state": {
      "deviceId": "abc123456789",
      "status": "ONLINE",
      "peripherals": {
        "relays": [
          { "index": 1, "on": true },
          { "index": 2, "on": false }
        ],
        "digitalInputs": [
          { "index": 1, "active": false }
        ],
        "analogInputs": [],
        "sensors": []
      },
      "stateUpdatedAt": "2026-07-15T08:30:00Z"
    }
  }
}
字段类型必填说明
data.commandobject命令对象
data.command.idstring命令 ID,用于查询命令结果
data.command.operationstring固定为 device.relay.set
data.command.params.relaysarray规范化后的操作列表
data.command.statusstringSENTSUCCESSFAILEDTIMEOUT
data.command.createdAtstring命令创建时间,RFC3339 UTC
data.stateobject设备确认包同时携带的最新运行状态
data.state.peripheralsobject可能同时包含继电器、数字输入、模拟量和传感器状态

state 只在设备响应包含可用状态时返回。它不是为了补齐字段而触发的第二次设备刷新。

状态说明

  • SENT:原命令仍在等待设备确认,通常出现在相同幂等键的重复请求中。
  • SUCCESS:设备已确认执行。
  • FAILED:平台已确认命令未成功完成。
  • TIMEOUT:等待窗口内没有最终确认,应按未确认成功处理。

需要稍后确认状态时,使用 data.command.id 调用 查询命令结果

错误响应

可能返回 400 INVALID_REQUEST401 AUTH_REQUIRED401 AUTH_INVALID401 AUTH_EXPIRED403 AUTH_SCOPE_DENIED404 DEVICE_NOT_FOUND409 DEVICE_BUSY409 IDEMPOTENCY_CONFLICT422 COMMAND_REJECTED422 DEVICE_OFFLINE429 RATE_LIMITED503 GATEWAY_UNAVAILABLE500 INTERNAL_ERROR

Docs buildVersion v1.3.6-20260720-180213-70
Copyright © 2026 WLTE