Cumulocity事件语言(CEL):根据电池电量信号计算总能耗

时间:2018-04-12 14:19:14

标签: esper cumulocity

我在QuarkIoE IoT平台上注册的设备有一个当前电池电量信号:DLValues => battery_level

我想根据此信号计算总能耗。两个电池电量测量之间的能量消耗可以使用以下表达式计算:

create expression double calcConsumedEnergy(prevBatteryLevel, newBatteryLevel) [
  var batteryCapacity = 100;
  var energyConsumption = 0;
  if(newBatteryLevel < prevBatteryLevel){
      energyConsumption = batteryCapacity * (prevBatteryLevel - newBatteryLevel) / 100;
  }
  energyConsumption;
];

我的问题是:如何在电池电量测量之间加上增量?

如果我创建一个新信号DLValuesCalc => energy_consumption,那么最初它根本就没有测量,所以我不能通过以下方式概念性地使用这个信号:

DLValuesCalc.energy_consumption.value = DLValuesCalc.energy_consumption.value + delta

1 个答案:

答案 0 :(得分:0)

esper中的内置聚合函数可能已经为您解决了这个问题(http://esper.espertech.com/release-7.0.0/esper-reference/html/functionreference.html#epl-function-aggregation)。有一个函数sum()将为您完成工作(它还处理初始的null值)。它只需要表达式的返回值作为输入。