您有一个传感器以固定间隔发送消息的数据流。如果传感器停止发送消息,您希望以相同的速率发送占位符消息。
例如,传感器数据可能正在为仪表板图表提供数据。如果传感器停止发送,图表将停止更新。因此,需要占位符消息,以便图表以 0
值更新,以突出显示传感器已停止工作。
使用 Trigger
节点检测消息在定义的时间间隔后是否未到达,并使用第二个 Trigger
节点以固定间隔发送占位符消息。
[{"id":"9ccdf268.c96ff","type":"inject","z":"ac14500e.2c57d","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":1660,"wires":[["38950a5.28d15f6","2c532f67.0330e"]]},{"id":"38950a5.28d15f6","type":"debug","z":"ac14500e.2c57d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":610,"y":1660,"wires":[]},{"id":"2c532f67.0330e","type":"trigger","z":"ac14500e.2c57d","op1":"reset","op2":"true","op1type":"str","op2type":"bool","duration":"2","extend":true,"units":"s","reset":"","bytopic":"all","name":"","x":260,"y":1700,"wires":[["e4e42b96.97a338"]]},{"id":"e4e42b96.97a338","type":"trigger","z":"ac14500e.2c57d","op1":"0","op2":"0","op1type":"num","op2type":"str","duration":"-2","extend":false,"units":"s","reset":"reset","bytopic":"all","name":"","x":420,"y":1700,"wires":[["38950a5.28d15f6"]]}]
在示例流程中,顶部分支表示消息的正常流程,从 Inject
节点到 Debug
节点。
消息也被传递到流程的第二个分支上的第一个 Trigger
节点。该节点配置为首先发送一个 "reset"
的有效载荷,然后等待 2 秒钟再发送超时消息。还选择了在收到新消息时延长延迟的选项。这意味着只要消息继续到达,节点就不会做任何事情。在最后一条消息到达 2 秒后,它将发送超时消息。
超时消息输入到第二个 Trigger
节点。此节点配置为每两秒发送 0
并反馈到顶部分支。该节点还配置为在收到 msg.payload
为 "reset"
时停止发送。由于这是第一个 Trigger
节点在收到传感器消息时发送的初始消息,这将导致第二个 Trigger
节点在传感器恢复发送自己的消息时重置。
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 已注册商标并使用商标。有关 OpenJS Foundation 商标列表,请参阅我们的商标政策和商标列表。未在OpenJS Foundation 商标列表上指明的商标和徽标是其各自持有者的商标™或注册®商标。使用它们并不意味着与它们有任何关联或得到它们的认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策