物模型与能力交集
物模型是产品对属性、参数和服务的声明,保存在Product.thingModel。它定义可表达的操作;固件capabilities定义此设备实际实现的子集。最终可用能力取两者交集,并要求modelRevision与物模型version一致。前端不按产品名称猜测功能。
json
{
"version": "1.0",
"deviceType": "relay_controller",
"properties": [{"id":"relay_1","name":"通道一","type":"bool","access":"rw","ui":{"component":"switch"}}],
"settings": [{"id":"relay_1_boot_delay_s","name":"通电恢复延时","type":"int","access":"rw","applyMode":"next_boot","min":0,"max":3600,"default":0,"unit":"秒"}]
}这是一个单通道产品的完整最小片段;当前四路产品包含relay_1至relay_4及各路设置。保存产品由管理员执行;不能据此将单通道样例覆盖现有四路产品。
属性、配置和服务
| 类型 | 用途 | 校验 |
|---|---|---|
| properties | 当前状态或测量;rw可即时控制,r只读 | 控制只接受模型声明的可写标量、值域及类型 |
| settings | 持久工作参数 | 仅r/rw;immediate或next_boot;数值声明min/max/default,字符串声明长度,enum声明有限values |
| services | 带输入的动作定义 | 自定义输入必须显式permission=read/control/owner,未声明权限不能调用 |
平台保留binding_sync、config_get、config_apply_retry、schedule_get、countdown_set、countdown_cancel;产品不能覆盖这些服务名。公共HTTP执行入口当前只开放五个标准配置/调度服务,不能因为模型支持自定义services就宣称任意产品服务已能端到端调用。
首版本地定时仅允许单个可写bool/int/float/enum属性,不能以config.set或service.call作为定时动作。WiFi密码、device_secret、broker_url、静态IP等不属于普通settings可配置范围。
UI与历史
四路继电器与环境传感器有独立分包面板;未知定义通用兜底。继电器只显示控制和常用任务,固件版本、SSID/RSSI属于设置中的设备信息。历史只面向只读数值测量,不能给开关、版本或SSID自动画曲线。缺失光照显示无有效数据,不能把0当缺失。
模型实现在后端modules/product/relay-thing-model.ts与runtime-settings.ts;接入一个新产品时,还须在固件注册属性/设置并上报匹配的能力,见接入流程。
