外观
批量读控制参数
接口说明
按设备类型(deviceTypeId)读取一台设备上该类型下所有控制参数的地址值。
与另外两个读接口的区别:
| 接口 | 输入 | 输出 | 适用场景 |
|---|---|---|---|
| 读取控制参数 | deviceCode | 全部控制项的 status / position | 看设备整体运行状态 |
| 读取地址值 | deviceCode + address | 单个地址的值 | 精确读取某一个参数 |
| 本接口 | deviceTypeId + deviceCode | 该类型下全部地址的值 | 一次拉全某类参数 |
请求地址
text
GET https://mqtt.iot.auto-control.com.cn/api/set-value/flush1
请求方法
GET
请求参数
| 参数名 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|
deviceTypeId | String | 是 | 设备类型 ID,取值见下方映射表 | 10 |
deviceCode | String | 是 | 设备编码 | 0010202606040002 |
为什么需要 deviceTypeId
不同设备类型支持的控制项不同(左向天窗、内遮阳幕、外遮阳幕、灌溉计划……)。 平台需要知道「按哪套参数模板去读」,所以必须显式指定设备类型。
请求头
| 请求头 | 值 | 必填 |
|---|---|---|
Authorization | Bearer <token> | 是 |
返回字段
| 字段名 | 类型 | 说明 | 示例 |
|---|---|---|---|
code | Int | 状态码,200 为成功 | 200 |
data | Object | String | 成功时是 address → value 的映射对象;失败时是空字符串 "" | { "3112": "00010" } |
message | String | 提示信息,成功时为 SuccessCode | SuccessCode |
data 的结构
实测返回的是一个扁平的 address → value 映射:
json
{
"code": 200,
"data": {
"3111": "1001",
"3112": "00010",
"3113": "0",
"3118": "01000",
"3125": "120",
"3131": "5",
"3134": "4.0",
"3150": "00001000",
"3151": "11001001",
"3157": "10.0",
"3161": "30"
},
"message": "SuccessCode"
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- key 是控制地址(数字字符串)
- value 是字符串(可能是位串如
"00010",也可能是数值文本如"120"、"10.0") - 不同设备类型的地址集合完全不同,不要假设固定字段
deviceTypeId 映射表
deviceTypeId | 名称 |
|---|---|
2 | 左向天窗 |
3 | 内遮阳幕 |
4 | 右向天窗 |
7 | 侧通风窗 |
10 | 风机湿帘 |
11 | 环流风扇 |
12 | 补光灯 |
41 | 内遮阳幕 |
146 | 外遮阳幕 |
157 | 内保温幕 |
190~201 | 1#~12# 灌溉计划 |
203~206 | 1#-3# / 4#-6# / 7#-9# / 10#-12# 配方 |
207 | 平台上报 |
211 | 传感器通道 |
212 | 机器参数 |
213 | 传感器合成 |
219 | 废液回收模式 |
这张映射表需要现场核对
平台未提供该映射表的查询接口,上表是文档给出的静态对照。
实测发现 deviceTypeId=2 返回的地址集合里出现了 3217、3218 等地址 —— 而 3217 在 address 全量表 中对应「右向天窗指定位置」。 该映射与实际设备可能存在偏差,使用前请用真实设备核对。
请求示例
curl
bash
curl 'https://mqtt.iot.auto-control.com.cn/api/set-value/flush?deviceTypeId=10&deviceCode=0010202606040002' \
-H "Authorization: Bearer <token>"1
2
2
HTTP 报文
http
GET /api/set-value/flush?deviceTypeId=10&deviceCode=0010202606040002 HTTP/1.1
Host: mqtt.iot.auto-control.com.cn
Authorization: Bearer <token>1
2
3
2
3
Python
python
import requests
RT_HOST = "https://mqtt.iot.auto-control.com.cn"
def flush_set_values(token: str, device_type_id, device_code: str) -> dict:
"""批量读取指定设备类型下所有控制参数地址的当前值。返回 {address: value}。"""
resp = requests.get(
f"{RT_HOST}/api/set-value/flush",
params={"deviceTypeId": device_type_id, "deviceCode": device_code},
headers={"Authorization": f"Bearer {token}"},
timeout=60, # ← 本接口会向设备索要数据,耗时较长
)
body = resp.json()
if body.get("code") != 200:
raise RuntimeError(f"读取失败: {body.get('code')} {body.get('message')}")
data = body.get("data")
if not isinstance(data, dict):
raise RuntimeError(f"返回体不是映射对象: {data!r}")
return data
if __name__ == "__main__":
values = flush_set_values("<你的 token>", 10, "0010202606040002")
print(f"共 {len(values)} 个地址")
for address, value in sorted(values.items(), key=lambda kv: int(kv[0]))[:20]:
print(f" address={address:<8} value={value}")1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
返回示例
json
{
"code": 200,
"data": {
"3111": "1001",
"3112": "00010",
"3113": "0",
"3114": "0",
"3115": "0",
"3116": "0",
"3118": "01000",
"3119": "0",
"3121": "0",
"3125": "120",
"3131": "5",
"3134": "4.0",
"3141": "15",
"3146": "480",
"3150": "00001000",
"3151": "11001001",
"3152": "11011111",
"3153": "11111111",
"3155": "000",
"3157": "10.0",
"3159": "2.0",
"3161": "30"
},
"message": "SuccessCode"
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
失败形态
请求超时(设备离线或响应慢):
json
{
"code": 504,
"data": "",
"message": "请求超时,请点击右上角 '重新获取设定值'按钮,重新获取数据"
}1
2
3
4
5
2
3
4
5
数据长度不一致(设备型号与控制参数模板不匹配):
json
{
"code": 106,
"data": "",
"message": "数据长度不一致"
}1
2
3
4
5
2
3
4
5
失败时 data 是空字符串,不是对象
请先判断 code == 200 并且 isinstance(data, dict),再遍历 data。
注意事项
本接口会主动向设备索要数据,不要高频调用
接口路径里的 flush 表示刷新缓存(向设备索要最新值),因此比普通查询更重。
- 实测单次耗时 0.8~1.6 秒(设备在线),设备离线时会等到超时
- 不要高频轮询(建议 ≥ 30 秒一次,且仅在相关页面打开时调用)
- 超时请设为 60 秒
deviceTypeId 与设备列表里的类型编码不是同一套
| 来源 | 字段 | 形态 | 示例 |
|---|---|---|---|
| /api/device | deviceTypeId | 字符串 | C001、C003、V008 |
| 本接口 | deviceTypeId | 数字 | 2、3、10 |
两者不是同一套编码体系,需要你自行建立映射关系 (见 设备类型映射表)。
同一 deviceTypeId 在不同设备上返回的地址集合可能不同
实测同一账号下的两台控制器,传相同 deviceTypeId=3 返回的地址集合与取值范围并不一致。 不要把某台设备的地址集合当成全局常量。
下一步
- → 控制设备:下发控制指令
- → 设备类型映射表:类型编码对照
- → address 控制地址全量表:查地址取值