规则脚本
“规则脚本”页面管理协议数据模板(RuleScript)。“规则引擎”须已编译、启用并通过资源准入;内部 commandScript 附属键与 ruleScript 强制组合。
这里不执行 JavaScript,也不使用 {"type":"script","params":{"code":"..."}} 外设格式。硬件命令序列在外设执行动作 15配置。
开发环境功能默认关闭。新增、修改、启停、删除或导入时,按需通过密码确认开启;已有设备的选择保留。列表读取需要登录,规则引擎关闭时接口返回不可用。
字段
| 字段 | 当前含义 |
|---|---|
id/name/enabled | 唯一 ID、名称、启用状态 |
triggerType | 0 接收转换;1 上报转换 |
protocolType | 0 MQTT;1 Modbus RTU |
scriptContent | 最多 2048 字节的纯文本模板 |
sourceTopic | MQTT 接收主题筛选,空表示全部;支持完整层级 + 和末尾 # |
targetTopic | MQTT 接收重定向发布目标,空表示不重定向;不能带通配符 |
仅首条匹配的启用规则生效,不叠加转换。sourceTopic/targetTopic 用于 MQTT 接收调用路径,不能承诺所有协议或上报路径支持重定向。
示例与导入结构
输入 {"temperature":25.6} 可用下方停用模板生成平台数组,也支持输入 id/value 数组按 ID 提取。先核对主题和最终正文,再启用:
{
"rules": [
{
"id": "rs_temperature",
"name": "温度格式转换",
"enabled": false,
"triggerType": 0,
"protocolType": 0,
"scriptContent": "[{\"id\":\"room_temperature\",\"value\":\"${temperature}\"}]",
"sourceTopic": "sensors/room/state",
"targetTopic": ""
}
]
}替换只取顶层键或数组项目 ID,最多 32 项。不提供表达式、变量存储、嵌套访问或 JSON 转义。缺失项保留占位符,非 JSON 或标量输入不会生成新模板结果;包含引号等特殊字符时先核对最终 JSON。
保存、导入与恢复
普通新增、编辑、启停和删除先校验候选,磁盘事务确认后才替换运行态。失败或 409 表示修改未确认,应重新加载,不根据按钮响应推断旧规则已改变。
整组导入最多 64 条、24 KiB,顶层只允许 rules;仍须满足内部 RAM 与连续块预算。错误、超限、重复 ID、非法主题或分配失败保留有效配置和运行规则。
/api/rule-script/import 是专用整组导入,成功响应 saved=true, applied=true, restartRequired=false,即事务保存并应用。系统配置文件传输入口对整组配置暂存后需要重启,两者行为不同。导入前导出本机配置,不用公开样例覆盖现场主题或凭据。
| 接口 | 用途 |
|---|---|
GET/POST /api/rule-script | 列表/新增 |
POST /api/rule-script/update | 更新 |
POST /api/rule-script/enable、/api/rule-script/disable | 启用/停用 |
DELETE /api/rule-script/ | 删除指定 ID,参数以接口约定为准 |
POST /api/rule-script/import | 专用整组导入,需编译配置传输能力 |
重定向还须通过 MQTT 实例、主题、队列和正文长度检查,配置保存不代表平台收到数据。安全上报路径拒绝不完整或超限结果;普通转换原文回退不代表所有发送失败都成功。更多模板与缓存区别见脚本系统。

