Install
openclaw skills install @yzlkj/yzl-aiotYZL-AIoT 云智联 AIoT 设备管理技能。Open API v2(文档更新 2026-07-25),路径以 /open/ 开头。一句话即可获取传感器数据、发送控制指令。⚠️ 请求频率必须低于平台限速,否则有封 IP 风险。激活语:云智联设备,钥匙是xxxxxx,帮我打开开关/获取数据
openclaw skills install @yzlkj/yzl-aiotpython:本文档示例均为 python tool.py ...;若所在环境只有 python3(部分 Linux/macOS 较常见),把 python 换成 python3 即可,如 python3 tool.py help。YZLIOT_API_KEY - 必需,请从「云智联YZL」微信小程序获取本节内容来自云智联开放接口《使用说明》(更新于 2026-07-25)的「限制」与「安全策略」。
请求方必须确保每一个接口的请求频率都严格小于下表限制,并保证并发不超过 2。 平台会对异常请求行为自动防护:
0 状态码(如 400、401、403、429 等)时,将被判定为错误请求。YZLIOT_API_KEY 有效,避免因认证失败产生大量 401;| 接口 | 路径 | 限速 |
|---|---|---|
| 获取所有设备 | GET /open/device/all | 10 次 / 10 秒 |
| 获取设备列表(分页) | GET /open/device/list | 5 次 / 10 秒 |
| 获取设备详情 | GET /open/device/{id} | 10 次 / 10 秒 |
| 获取设施值历史 | GET /open/history | 6 次 / 30 秒 |
| 发送指令 | POST /open/command/send | 2 次 / 5 秒 |
| 获取指令详情 | GET /open/command/{id} | 2 次 / 5 秒 |
| 获取指令列表(分页) | GET /open/command/list | 2 次 / 10 秒 |
| 测试接口 | GET /open/ping | 10 次 / 10 秒 |
并发限制:2(同一 APIKEY 同时最多 2 个请求在途)
0 状态码时自动中止本次运行并提示,防止持续刷出错误请求;429 / 401 / 403 时给出明确的降险提示。一句话就能获取设备数据和发送控制指令! 基于云智联开放接口 v2(文档更新 2026-07-25),所有 API 路径使用 /open/ 前缀。
💡 如果你之前使用的是
yzl-iot-api,请迁移至此技能获取后续更新支持。
用户只需说:
| 型号前缀 | 说明 |
|---|---|
| YZLSTM1 | 土壤温湿度云传感器标准款 |
| STMCBL | 土壤温湿度云传感器加长款 |
| STMCS1 | 土壤温湿度云传感器太阳能款 |
获取数据: 温度(wd)、湿度(sf)
| 型号前缀 | 说明 |
|---|---|
| WA1CB1 | 远程电磁阀低功耗版本 |
| WANCD1 | 4G水阀(目前支持远程控制) |
控制指令: 通过 kk1 设施控制开(1)/关(0)。当前平台支持远程控制的型号为 WANCD1(远程控制水阀)。
| 型号前缀 | 说明 |
|---|---|
| YZLWP01 | 低功耗液位传感器 |
获取数据: 液位(yw)
用户: "帮我看看传感器数据"
→ 返回所有土壤温湿度云传感器的温湿度
用户: "获取液位"
→ 返回液位传感器的液位数据
用户: "打开电磁阀"
→ 开启远程电磁阀
用户: "关闭水阀"
→ 关闭远程电磁阀
如果需要更精细控制:
下列命令统一用
python;若环境只有python3,把python换成python3即可(如python3 tool.py help)。
# 获取所有设备(简易信息,不含设施集;可带轮询标记)
python tool.py all
python tool.py all --tag mytag
# 分页获取设备列表(含设施集,单页上限 200)
python tool.py list [跳过数量] [单页数量] [筛选词]
# 查看设备详情(路径参数)
python tool.py device WANCD1-0000000001
# 获取历史数据(设施ID,非设备ID;天数默认 5)
python tool.py history <设施ID> [天数]
# 获取设备全部设施的历史数据
python tool.py device-history <设备ID> [天数]
# 开启电磁阀(args 上限 5 个,waitTimeout 5~20 秒)
python tool.py send WANCD1-0000000001 SetFac '["WANCD1-0000000001","kk1","1"]'
# 关闭电磁阀
python tool.py send WANCD1-0000000001 SetFac '["WANCD1-0000000001","kk1","0"]'
# 指令记录
python tool.py cmd-list <设备ID>
python tool.py cmd-detail <指令ID>
本技能内置自动版本更新检测功能。
python tool.py check-update
# 更新到最新稳定版
clawhub update yzl-aiot
# 或指定版本
clawhub update yzl-aiot --version 1.2.1
| 项 | 值 |
|---|---|
| Base URL | https://open.yzlkj.com |
| 认证 | 请求头 YZLIOT-APIKEY |
| 响应包 | { "code": 0, "data": ..., "time": "..." },code = 0 表示成功 |
| 并发限制 | 2 |
| 在线文档 | https://cn6l1w4yn0.apifox.cn |
GET /open/ping — 返回连接状态。
GET /open/device/all?PollingTag=
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
PollingTag | string | 否 | 轮询标记 |
返回简易设备信息(不含设施集):id、name、model、status、latestMessageTime、latestModificationTime。
需要设施数据时再用设备详情接口补查。
GET /open/device/list?Filter=&SkipCount=&MaxResultCount=
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
Filter | string | 否 | 筛选 |
SkipCount | integer | 否 | 跳过数量,配合 MaxResultCount 翻页 |
MaxResultCount | integer | 否 | 单页最大数量,上限 200 |
返回 data.items[](含 facilitys 设施集)与 data.totalCount。
GET /open/device/{id} — id 为设备 ID(路径参数)。返回设备完整信息,含 facilitys 设施集。
GET /open/history?facilityId=&StartTime=&EndTime=&MaxCount=
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
facilityId | string | 是 | 设施 ID(facilitys[].id,不是设备 ID) |
StartTime | string | 是 | 开始时间,格式 2026-03-07 00:01:59 |
EndTime | string | 是 | 结束时间,必须大于开始时间 |
MaxCount | integer | 否 | 最大条数,上限 3000 |
返回 data:actual、total、firstTime、lastTime、values[](valueId、value、time)。
POST /open/command/send,Body(application/json):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
deviceId | string | 是 | 设备 ID(最长 32 字符) |
type | string | 是 | 指令类型:GetFac / SetFac / Upfs / Custom |
args | string[] | 否 | 指令参数,最多 5 个 |
waitConfirm | boolean | 否 | 是否等待设备确认 |
waitTimeout | integer | 否 | 等待超时秒数,范围 5~20 |
开关示例:
{
"deviceId": "WANCD1-0000000001",
"type": "SetFac",
"args": ["WANCD1-0000000001", "kk1", "1"],
"waitConfirm": true,
"waitTimeout": 15
}
kk1:设施的 Key,需确保该设施是开关(identifying = IoT.FAC.CTRL.SWITCH)1 开启,0 关闭WANCD1返回:{ "commandId": "...", "status": "Pending" }
GET /open/command/{id} — 返回 id、deviceId、type、args、status、creationTime。
GET /open/command/list?DeviceId=&SkipCount=&MaxResultCount=
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
DeviceId | string | 是 | 设备 ID |
SkipCount | integer | 否 | 跳过数量 |
MaxResultCount | integer | 否 | 单页最大数量 |
| 枚举 | 取值 |
|---|---|
DeviceStatus | Online、Standby、Hibernate、Offline、Clean |
CommandStatus | Pending、Sent、Failed、Completed、Cancelled、Rejected、Outtime、Outcount |
CommandType | GetFac、SetFac、Upfs、Custom |
FacilityValueType | Int、Decimal、String、Enum |
设施(facility)字段:id、name、key、valueType、value、valueUpdateTime、tags、identifying
GET /open/device/all 获取全部设备基础信息与 latestModificationTime;GET /open/device/{id} 拉取详情(含设施集);/open/device/list 分页拉全量。注意:
/open/device/all与/open/device/{id}都有频率限制,批量补查详情时务必按限速排队,避免触发 429 与封 IP 策略。
| 码值 | 说明 |
|---|---|
| 0 | 成功 |
| 400 | 参数错误 |
| 401 | 未授权 / 无效 APIKey |
| 403 | 权限不足 |
| 429 | 请求频率超限 |
| 500 | 服务器错误 |
出现
429说明已超过限速;出现401/403请先检查 APIKey 与权限。务必停止高频重试,否则可能被永久封 IP。
python3 tool.py ... 改为 python tool.py ...;并注明只有 python3 的环境(部分 Linux/macOS)把 python 换成 python3 即可metadata.openclaw.requires.bins 由 ["python3"] 改为 ["python"]tool.py help 的用法与示例、README、skill-card 同步改为 python2 次/10 秒 → 6 次/30 秒MaxResultCount 上限 50 → 200PollingTag(轮询标记)参数DeviceStatus、CommandStatus、CommandType、FacilityValueTypeargs 最多 5 个、waitTimeout 5~20 秒;当前支持远程控制型号 WANCD1/openv1/ 迁移至 /open/GET /open/device/{id}GET /open/command/{id}