描述你需要的功能
比如,检测温度,温度达到一定值,执行动作打开花洒,花洒打开一分钟后,打开风机转动
现在没有一个”延迟“动作。我建议你用延迟发布功能:
启用 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函数。