Skip to content

事件触发 (EVENT_TRIGGER) ​

概述 ​

触发器输入来源检查时机适合场景常见风险
平台触发MQTT 平台下发命令消息到达后立即匹配字段远程开关、参数下发、联动控制字段名不一致、无效值、权限不足
定时触发本地单调计时 / 有效日历到达时间点后执行周期上报、定时开关、夜间模式NTP 未同步、首次触发语义不清
事件触发按键、传感器、系统事件事件发布时匹配 eventId按键控制、超限报警、状态变化防抖、事件名拼写、缓存值过期
轮询触发主动读取外设或协议数据周期执行动作及独立数据匹配Modbus 或传感器周期采集频率过高、串口忙、低内存降频

事件触发适合已经由按键状态机、传感器缓存、系统状态或其他规则产生的事件。它不负责主动采集数据,而是在事件出现时做条件判断和动作执行。

事件触发(triggerType = 4)用于响应系统内部事件。当指定事件发生时自动执行规则。支持系统事件(WiFi/MQTT/NTP/按键等)和自定义事件(外设执行完成/设备事件)。

配置事件触发时,先确认事件源已经产生明确的 eventId,再配置 triggerPeriphId 和动作;如果规则没有触发,优先查日志中的事件名称。

字段说明 ​

字段类型说明
triggerType4事件触发
eventIdString事件 ID(匹配 STATIC_EVENTS 或动态规则 ID)
triggerPeriphIdString事件源外设 ID(按键事件时指定具体按键,为空则匹配任意)

可用系统事件列表 ​

WiFi 事件 ​

eventId说明
wifi_connectedWiFi 连接成功
wifi_disconnectedWiFi 断开连接
wifi_conn_failedWiFi 连接失败

MQTT 事件 ​

eventId说明
mqtt_connectedMQTT 连接成功
mqtt_disconnectedMQTT 断开连接
mqtt_conn_failedMQTT 连接失败
mqtt_enabledMQTT 协议启用

系统事件 ​

eventId说明
ntp_syncedNTP 时间同步完成
ota_startOTA 升级开始
ota_successOTA 升级成功
ota_failedOTA 升级失败
system_boot系统启动
system_ready系统就绪

按键事件 ​

eventId说明
button_click按键单击
button_double_click按键双击
button_long_press_2s按键长按 2 秒
button_long_press_5s按键长按 5 秒
button_long_press_10s按键长按 10 秒
button_press按键按下
button_release按键释放

数据事件 ​

eventId说明
data_receive数据接收(协议数据到达)
data_report数据上报(协议数据发送)

外设执行事件 ​

eventId说明
periph_exec_completed保留完成事件名,不是任意规则完成通配符
(规则ID)指定规则执行完成(用于链式联动)

RFID/红外/RF 事件 ​

eventId说明
rfid_card_detectedRFID 卡片检测(MFRC522)
rfid_card_removedRFID 卡片移开
ir_code_received红外编码接收(NEC/RC5 解码)
rf_code_receivedRF 编码接收(EV1527/PT2262 解码)

ir_code_received 和 rf_code_received 的 compareValue 支持 key:名称(匹配已学习按键库)或直接填写编码(如 0xFF30CF),留空表示任意编码均触发。

配置示例 ​

方式1:Web界面配置(推荐) ​

外设执行页面如下。事件触发配置时重点核对事件 ID、比较条件和数据源是否已经由外设动作产生。

示例1:WiFi 连接成功时触发 ​

场景:WiFi连接成功后执行某些动作

配置步骤:

  1. 点击左侧菜单 外设执行

  2. 点击 新增规则 按钮

  3. 填写基础配置:

    • 规则名称:WiFi连接后执行
    • 上报数据:根据需求启用
    • 启用:✅ 启用
  4. 配置触发器:

    • 触发类型:选择 事件触发
    • 事件ID:选择 wifi_connected(WiFi连接成功)
  5. 配置动作:添加需要执行的动作

  6. 点击 保存 按钮


示例2:按键单击触发(指定按键) ​

场景:指定按键btn1单击时触发

配置步骤:

  1. 创建规则,名称:按键单击动作

  2. 触发器配置:

    • 触发类型:选择 事件触发
    • 事件ID:选择 button_click(按键单击)
    • 目标外设ID:填写 btn1(指定按键)
  3. 配置动作

  4. 点击 保存

💡 提示:指定triggerPeriphId后,只有该按键才会触发


示例3:按键单击触发(任意按键) ​

场景:任意按键单击都触发

配置步骤:

  1. 创建规则,名称:任意按键单击

  2. 触发器配置:

    • 触发类型:选择 事件触发
    • 事件ID:选择 button_click
    • 目标外设ID:留空(匹配任意按键)
  3. 配置动作

  4. 点击 保存


示例4:链式联动(规则A完成后触发规则B) ​

场景:规则A执行完成后自动触发规则B

配置步骤:

  1. 创建规则B,名称:规则B-链式触发

  2. 触发器配置:

    • 触发类型:选择 事件触发
    • 事件ID:填写规则A的ID(如 exec_1234567)
    • 说明:在规则A的ID输入框中复制
  3. 配置动作

  4. 点击 保存

💡 提示:

  • 规则ID格式为 exec_XXXXXXX
  • 避免形成A→B→A的循环触发
  • 可在规则列表中查看规则ID

方式2:JSON配置文件导入 ​

注意事项 ​

  1. 路径冷却:通用事件约 1 秒、指定规则完成约 500ms、按键约 100ms;数据源还按采集负载选择冷却,不是所有事件统一 1 秒
  2. 按键外设ID:triggerPeriphId 为空时匹配任意按键事件,指定时仅该按键触发
  3. NTP 前提:部分事件(如 ntp_synced)仅在特定条件下触发
  4. 链式循环:启用规则的完成/固定事件链出现潜在环时返回 CONFIG_RULE_EVENT_CYCLE;图容量不足返回 CONFIG_RULE_EVENT_GRAPH_LIMIT,原配置保留
  5. 启动顺序:system_boot 在 PeriphExecManager 初始化完成后触发

本地数据事件 ​

先由读取动作发布实际缓存项,再监听 ds:<实际缓存键>,例如 ds:dht_room_temperature。事件本身不主动读取,也不能把缺失或过期数据当作零值。操作符 1 在数据事件中是不等于,在平台触发中则是设置模式。例子见温湿度采集与告警。

规则完成监听使用真实规则 ID,完成数据可为 success/failed/cancelled;收到完成通知不代表所有动作成功,也不需要动作21重复发送自己的规则 ID。

蜂信物联 | fastbee.cn