-
Notifications
You must be signed in to change notification settings - Fork 6
利用Thingsboard规则引擎(或Kafka流计算),根据电表上报的累计总电量,生成每天的耗电量统计
IoT中的电表(水表等一样,就是单调增加的累计数据),会持续上报累计总耗电量,如何能展示每天的耗电量?
如有類似時間窗+統計的這類需求,大家可以尝试基于Kafka的流计算实现,官方有個demo https://thingsboard.io/docs/paas/samples/analytics/kafka-streams/#configure-kafka-integration
Thingsboard PE收费版本提供了封装好的统计节点 (如果大家用社区版就没这个节点)
可以参考官方教程:https://thingsboard.io/docs/user-guide/rule-engine-2-0/tutorials/aggregate-incoming-data-stream/
上面方案不可以实时显示当日的统计,下面新方案可以实时显示所有电表及其所属的楼层与建筑,当日和当月的实时统计
如果用社区版,可能没那么方便用我上面的方案。
其实可以基于extension(
https://thingsboard.io/docs/user-guide/contribution/rule-node-development
)去实现。因为extension允许我们自己写代码,所以利用extension可以实现很多不同我们高度自定义的需求
比如可以创建两个tenant,
设备数据上报到第一tenant,该tenant在extension去做自定义的统计,比如把昨天的最大值放到数据库,今天实时数据减去昨天最大数据,就是今天的实时统计数据,历史数据自己都可以利用extension去存储
然后第一个tenant把处理好的数据通过http(http(s)://$THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/telemetry
)发给第二个tenant(分两个tenant的好处是分层思想,比如容易debug)
这个extension方案我就暂时不详细写了(时间关系),如果有人需要的话,可以留言,我可能就单独弄一遍文章详细说下
如果一个building每次同时上报10个电表的数据,无疑需要考虑如何处理并发问题,用Thingsboard rule node,可以用SequentialQueue解决