如何在Thingsboard PE规则链中实现遥测触发的10分钟间隔REST API调用?
实现Thingsboard PE规则链的看门狗API调用频率控制
可以通过Thingsboard的脚本节点结合服务器属性存储实现该逻辑,具体步骤如下:
1. 插入脚本节点到规则链
在遥测输入节点与REST API调用节点之间,添加一个脚本节点,用来处理计时器判断逻辑。
2. 编写Groovy脚本逻辑
脚本需完成三个核心操作:获取上次调用时间戳、判断时间间隔、更新时间戳并控制消息流转。直接使用以下脚本即可:
// 获取当前时间戳(毫秒) def currentTime = System.currentTimeMillis() // 从服务器属性读取上次API调用时间戳,首次调用默认设为0 def lastCallTime = entityService.getEntityAttributes(entityId, "SERVER_SCOPE", ["last_watchdog_call"]).get("last_watchdog_call", 0L) // 定义10分钟对应的毫秒数:10*60*1000=600000 def interval = 600000 if (currentTime - lastCallTime >= interval) { // 更新服务器属性中的上次调用时间戳 entityService.saveEntityAttributes(entityId, "SERVER_SCOPE", ["last_watchdog_call": currentTime]) // 允许消息传递到REST API调用节点 return msg } else { // 不满足间隔条件,丢弃当前消息 return null }
3. 配置脚本节点权限
在脚本节点的配置页面,开启读取服务器属性和写入服务器属性权限,确保脚本能正常读写时间戳数据。
4. 调整规则链流转
将脚本节点的输出连接到原有的REST API调用节点,只有满足时间间隔条件的消息才会触发API调用。
关键说明
- 时间戳存储在服务器范围属性中,重启Thingsboard或规则链不会丢失数据
entityId由Thingsboard自动注入上下文,无需手动修改- 可通过修改
interval的值调整触发间隔(如5分钟对应5*60*1000)
内容的提问来源于stack exchange,提问作者Pattatharasu Nataraj
相关产品推荐
相关产品推荐

