Skip to content

控制继电器

通过 device.operation.execute 控制设备的一路或多路继电器。一次请求中的多路操作会作为一个命令下发。

整批操作只占用一次设备操作额度。不要为了控制不同继电器而连续发送多条消息。

权限

text
device:control

Request

json
{
  "type": "request",
  "requestId": "req_relay_001",
  "topic": "device.operation.execute",
  "data": {
    "deviceId": "abc123456789",
    "idempotencyKey": "idem_relay_001",
    "operation": {
      "name": "device.relay.set",
      "params": {
        "relays": [
          { "index": 1, "action": "ON" },
          { "index": 2, "action": "OFF" }
        ]
      }
    }
  }
}

单路控制使用只包含一个元素的 relays 数组。

params 字段

字段类型必填说明
relaysarray非空继电器操作列表
relays[].indexinteger继电器序号,从 1 开始;同一请求内不能重复
relays[].actionstringONOFFJOG

JOG 的持续时长由设备中保存的点动配置决定。

Reply

json
{
  "type": "reply",
  "requestId": "req_relay_001",
  "code": "COMMAND_ACCEPTED",
  "message": "Command accepted.",
  "data": {
    "command": {
      "id": "cmd_01HX...",
      "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,可用于 REST 查询命令结果
data.command.operationstring固定为 device.relay.set
data.command.params.relaysarray规范化后的继电器操作
data.command.statusstringSENTSUCCESSFAILEDTIMEOUT
data.stateobject设备确认包同时携带的最新运行状态
data.state.peripheralsobject可能同时包含继电器、数字输入、模拟量和传感器状态

state 只在本次设备响应包含可用状态时返回。不要为了补齐 state 再立即发送一次状态查询;需要确认后续变化时,监听 device.state.changed

幂等与重试

  • 未收到明确回复时,重试同一次操作必须复用 idempotencyKey
  • 新操作必须生成新 key。
  • TIMEOUT 后复用原 key 不会再次控制设备;确认需要执行新的物理操作后使用新 key。
  • 相同 key 配不同参数会返回 IDEMPOTENCY_CONFLICT
  • requestId 仅用于关联当前连接中的请求和回复,不替代幂等键。

错误

可能返回 INVALID_REQUESTAUTH_SCOPE_DENIEDDEVICE_NOT_FOUNDDEVICE_BUSYDEVICE_OFFLINEIDEMPOTENCY_CONFLICTCOMMAND_REJECTEDRATE_LIMITEDGATEWAY_UNAVAILABLEINTERNAL_ERROR

对应 REST 接口:执行继电器命令

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