请问创建规则里的多个actions,能不能指定每个actions执行时间,比如第一个actions执行一定时间在执行第二个actions

描述你需要的功能

比如,检测温度,温度达到一定值,执行动作打开花洒,花洒打开一分钟后,打开风机转动

为什么你需要这个功能

现在没有一个”延迟“动作。我建议你用延迟发布功能:

  • 启用 Delayed Publish 模块。延迟发布 | EMQX 企业版 5.1 文档

  • 规则:
    SQL: SELECT * FROM "notify" WHERE payload.temperature > 30
    动作1: 重新发布消息到另一个主题: enable-shower
    动作2: 重新发布消息到另一个主题: $delayed/60/enable-fan

花洒器订阅 enable-shower, 风扇订阅 enable-fan.

延迟发布模块在 emqx 4.x 和 5.x 都有的,通过给普通主题添加 $delayed/delay-in-seconds/ 前缀工作。

好的,感谢,请问下怎么控制条件执行时长,比如温度大于30,持续了一分钟后才触发动作

这种有状态的、跟前后事件相关的逻辑没有办法通过规则来做。

另外 emqx 也不清楚如何判断 ”已经持续了多久“。最好的办法还是在客户端做这种判断逻辑,不然就只能让客户端不停地上报当前温度,然后通过后台(自定义的程序)来做后续处理,这样架构复杂容易出错,对服务端也是一个压力。

sources源,表结构是存储的批量数据,可以通过这个存储历史信息,进行判断吗

仅通过规则是没办法实现的。你可能需要自己处理业务逻辑,通过 Webhook 将消息转给你的业务程序。

窗口这个概念怎么理解

请问,时间窗口这个概念怎么理解

这个,不是可以实现上述控制条件执行时长问题

已知发送指令通过 MQTT 进行。eKuiper 支持发送两个指令。

若第二个指令有延时需求,可通过两个规则实现。第一个规则发送花洒的指令。第二个规则订阅花洒的指令,执行延迟调用另一个指令,延迟有delay函数。