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