Skip to content

外设执行配置 ​

外设执行把平台下发、本地定时或事件映射为一组动作。配置保存在 /config/periph_exec.json;新建、编辑、启停、导入与启动加载均须经过配置和资源校验。具体可用选项以当前设备能力、功能状态及动作描述为准。

配置步骤 ​

  1. 先配置外设、协议、功能依赖与有效引脚,确认目标实际可用。
  2. 开发环境功能默认关闭,需要修改时按需通过密码确认开启,保留已有设备选择。
  3. 新建规则先保持停用,添加一个触发器及一个动作,检查具体参数和输出极性。
  4. 保存前阅读设备预检的拒绝原因和风险说明;保存成功只代表配置事务完成。
  5. 在已授权的现场范围执行一次,分别核对执行结果、协议数据与实物反馈,再启用周期或事件触发。

规则与动作字段 ​

字段含义
id/name/enabled唯一规则 ID、名称及启用意图
execMode规则执行模式:0 异步、1 同步;耗时读取及多步动作优先异步
triggers最多 3 个,OR 关系;任一准入后执行规则
actions最多 4 个,按配置顺序处理
reportAfterExec请求将结果通过 MQTT 上报,不保证消息已送达
allowPanelControl默认 false,显式授权设备屏幕卡片调用
recordHistory默认 false,允许的数值读取记录历史,还受功能和来源白名单限制

动作字段包括 targetPeriphId、actionType、字符串 actionValue、useReceivedValue、syncDelayMs 与各动作 execMode。延时为执行前延时,最多 10000 ms;不是等待上一个负载完成的反馈。执行模式不会绕过资源仲裁或类型检查。

触发器选择 ​

triggerType用途与边界
0 平台triggerPeriphId 精确匹配下发 id;操作符 0 为字符串匹配,1 为接受任意值的设置模式
1 定时间隔 1~86400 秒或有效本地日历 HH:MM;无 cron,也不补错过的每日时间点
4 事件系统、按键、固定设备事件、规则完成或 ds:<实际缓存键> 数据事件
5 轮询间隔 5~86400 秒;含读取动作时到期执行整条规则,不用同轮结果门控后续动作

旧触发编号 2/3 已弃用。通用数据比较支持 0 等于、1 不等于、2 大于、3 小于、4 大于等于、5 小于等于、6 区间内、7 区间外、8 包含、9 不包含;区间填 "20,30"。平台的 0/1 有上述专属语义,不能照搬“不等于”表。空数据源或 "null" 不是通配符。

平台、定时、事件、轮询页面说明对应条件与时序。

当前动作索引 ​

actionType作用与参数入口
0/1、13/14、30高低电平、反相电平、逻辑翻转;GPIO
2/3闪烁/呼吸,目标须支持对应波形
4/5原始 PWM 占空比计数 / DAC 0~255;PWM/DAC
6/8请求重启 / SNTP 同步;系统动作
7/9恢复出厂/OTA 保留编号,当前规则执行拒绝或返回失败
10/11/12通用指令 / NeoPixel 灯效 / 步进电机;11/12 是有效动作
15命令序列,受规则引擎组合功能约束;脚本
16/17/18Modbus 继电器写 / FC06 写 / 采集;Modbus
19单个通道读取,参数为完整 JSON 对象字符串;传感器
20历史保留编号,无当前动作
21/22/23设备事件 / 启用规则 / 停用规则;事件动作
24/25/26TM1637 数字 / 文本 / 清屏,不能应用到所有显示外设
27LCD 类型的 OLED 多行自定义文字;显示
28/29受检查的 RF / UART 输出;RF 边界
31/32启用/禁用 webServer 或 mdns,保存后请求重启
33已退休远程通道,旧规则保留但不能执行
34请求单一心知天气来源刷新,参数必须空;天气
35/36/37DS1302 start/stop、只读日历、显式 system-local 校时;不自行发起 NTP
38SD 生命周期与容量快照,不触发卡 I/O
39独立持续温控;温控
40持续采集与有界 SD 记录,手动执行只查看状态

动作是否能保存、能初始化、能执行和已经完成必须分别判断。外设启用不代表资源一定就绪,临时保护应保留启用意图并显示原因,不修改用户目标来隐藏故障。

可核对的温湿度采集规则 ​

先保存启用的 dht_room 外设,确认 DHT22 类别、引脚与实际采样间隔。以下是一条停用规则,不是整个文件:

json
{
  "id": "exec_room_collect",
  "name": "房间温湿度采集",
  "enabled": false,
  "execMode": 0,
  "triggers": [
    {
      "triggerType": 1,
      "timerMode": 0,
      "intervalSec": 5
    }
  ],
  "actions": [
    {
      "targetPeriphId": "dht_room",
      "actionType": 19,
      "actionValue": "{\"periphId\":\"dht_room\",\"sensorCategory\":\"dht22\",\"channelField\":\"temperature\",\"dataField\":\"temperature\",\"unit\":\"°C\"}",
      "useReceivedValue": false,
      "syncDelayMs": 0,
      "execMode": 0
    },
    {
      "targetPeriphId": "dht_room",
      "actionType": 19,
      "actionValue": "{\"periphId\":\"dht_room\",\"sensorCategory\":\"dht22\",\"channelField\":\"humidity\",\"dataField\":\"humidity\",\"unit\":\"%\"}",
      "useReceivedValue": false,
      "syncDelayMs": 0,
      "execMode": 0
    }
  ],
  "reportAfterExec": true,
  "allowPanelControl": false,
  "recordHistory": false
}

每个动作只选择一个通道;读取温度不能自动产生湿度缓存。输出模板要使用 ${dht_room.temperature} 和 ${dht_room.humidity},而不是未定义的 ${temperature} 或系统变量。缓存不因重绘或上报而延长样本年龄。

若需阈值告警,另建事件规则监听 ds:dht_room_temperature。不要把采集后输出误写成“超过阈值才输出”。持续制热/制冷使用动作 39 的独立单动作规则,满足来源、极性、最小开停时间和故障关闭要求,不用两条普通比较规则替代。

上报、历史与屏幕 ​

上报使用规则开始时捕获的 MQTT 实例及有界消息槽,超限、实例变化或发送失败必须保留失败/未知结果。上报数据字段与缓存键不同:dataField 是显式平台字段,缓存则按实际通道生成。

历史只记录允许的有效数值和原采样时间;非空 sourceAllowlist 须含目标来源。pointHistory 需已编译并启用;当前 C3 默认裁剪,不能把页面选项当作功能可用证据。

屏幕规则需显式 allowPanelControl=true,并通过动作白名单与版本检查;数值控件不能绕过电机、RAW 或脚本边界。见设备屏幕。

事务、结果与诊断 ​

保存和启停失败保留有效配置及运行态;先刷新再重试,不重复提交结果不明的输出。整包配置导入是持久化暂存且需要重启,不能套用普通编辑的即时生效结论。规则完成事件的数据可能为 success/failed/cancelled,收到完成通知不代表所有动作成功。完成与固定事件联动环会返回 CONFIG_RULE_EVENT_CYCLE,图容量不足返回 CONFIG_RULE_EVENT_GRAPH_LIMIT;禁用草稿启用时重新校验。

执行结果的来源、应答、是否尝试与未知状态见动作检查和Modbus 结果。本地测试不能替代触点、电机运动、传感器标定或长期稳定验收。

蜂信物联 | fastbee.cn