组件语义(IoT)
本文说明字段变化会让组件产生什么变化,供开发者或 AI 写固件时查阅。 「页面上有哪些字段」看控制台导出的组件描述。本文只收录写错就会错的条目。
# 数据方向
| direction | 含义 | 固件要做的事 |
|---|---|---|
in | 只输入 | 只上报,设备不要等这个字段下发 |
out | 只输出 | 只接收,页面不会因设备上报而改变 |
inout | 双向 | 既要处理下发,也要上报 |
# 值的形态
IoT 项目走 MQTT,数据是 JSON 对象,不是 $X 文本帧:
json
{ "switch": true, "slider": 35, "items": ["a", "c"] }- 布尔用
true/false(也兼容1/0)。 - 数组用 JSON 数组,不要拼逗号字符串。
- 对象字段(
deviceState)按子项上报,见下。
# 各组件
开关 SwitchFragment
- 字段:
switch,Boolean,inout - 只在状态变化时上报,不要周期性重复发送
切换 ToggleFragment
- 字段:
enabled,Boolean,inout - 注意:bindKey 是
enabled,不是switch
滑块 SliderFragment
- 字段:
slider,Float,inout - 量程/步进以组件描述为准;默认松手才发送
滑块组 / 数值组
- 一槽一字段:
slider1、slider2……,数量由页面配置决定,不写死
选择按钮 CheckboxFragment
- 字段:
item,单选为字符串、多选为数组,inout - 值来自页面里配置的
items[].value
选项组 CheckboxGroupFragment
- 一槽一字段:
group1、group2……,单选/多选按行配置
下拉选择 SelectFragment
- 字段:
selected,String,inout - 值是
options的value,不是显示文本
方向键 ArrowKeyFragment
- 字段:
up、down、left、right、ok,String,out - 按下发值、释放发空
颜色选择器 ColorPickerFragment
- 字段:
color,Color,inout,值形如#RRGGBB
按钮 ButtonFragment
- 没有 bindKey,点击发送的是页面里配置的内容
- 写固件前必须向用户确认按钮发什么
曲线图 LineMarkerFragment
- 没有 bindKey,按
series的 key 接收,追加而不是替换
设备状态 DeviceStateFragment
- 字段:
deviceState,Object,in - 子项:
rssi:信号强度 0~31capacity:电量 0~100,101 表示充电中online:在线状态由平台维护,设备不需要上报
- 三个子项是否显示由页面配置决定,但协议里可以都发
显示类组件
数字滚动、仪表盘、进度条、水位、电池、文本、接收器等:direction 基本是 in,设备只上报。
# IoT 端专属约束
- 设备状态包含 rssi(与蓝牙不同),单位与量程见上。
- 视频组件在 IoT / WiFi 项目中可用。
- 重力传感器、指南针在 IoT 项目中不可用。
- 没有二进制转换表,不存在 hex 位表。
# 写代码前的自查
- 每个
out字段都有明确触发点,不是周期发送。 - 布尔用
true/false,数组用 JSON 数组。 ToggleFragment用enabled,SwitchFragment用switch。- 组类组件的字段数量按页面实际配置。
deviceState.capacity == 101表示充电中,不是 101% 电量。
