From f25f1eeabdb1ff5dc5542c8c14c1602e46eda802 Mon Sep 17 00:00:00 2001 From: "bernhard.trinnes" Date: Wed, 29 Jul 2020 15:00:49 +0200 Subject: [PATCH] fixed power calculation --- genericthings/integrationplugingenericthings.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/genericthings/integrationplugingenericthings.cpp b/genericthings/integrationplugingenericthings.cpp index 26a4654..10ae19b 100644 --- a/genericthings/integrationplugingenericthings.cpp +++ b/genericthings/integrationplugingenericthings.cpp @@ -190,6 +190,7 @@ void IntegrationPluginGenericThings::setupThing(ThingSetupInfo *info) int timeframe = thing->setting(extendedSmartMeterConsumerSettingsImpulseTimeframeParamTypeId).toInt(); smartMeterTimer->setInterval(timeframe * 1000); m_smartMeterTimer.insert(thing, smartMeterTimer); + smartMeterTimer->start(); connect(thing, &Thing::settingChanged, smartMeterTimer, [smartMeterTimer] (const ParamTypeId ¶mTypeId, const QVariant &value) { if (paramTypeId == extendedSmartMeterConsumerSettingsImpulseTimeframeParamTypeId) { smartMeterTimer->setInterval(value.toInt() * 1000); @@ -198,7 +199,8 @@ void IntegrationPluginGenericThings::setupThing(ThingSetupInfo *info) connect(smartMeterTimer, &QTimer::timeout, thing, [this, smartMeterTimer, thing] { double impulsePerKwh = thing->setting(extendedSmartMeterConsumerSettingsImpulsePerKwhParamTypeId).toDouble(); - double power = (m_pulsesPerTimeframe.value(thing)/impulsePerKwh)/(smartMeterTimer->interval()/3600.00); // Power = Energy/Time; Energy = Impulses/ImpPerkWh + int interval = smartMeterTimer->interval()/1000; + double power = (m_pulsesPerTimeframe.value(thing)/impulsePerKwh)/(interval/3600.00); // Power = Energy/Time; Energy = Impulses/ImpPerkWh thing->setStateValue(extendedSmartMeterConsumerCurrentPowerStateTypeId, power*1000); m_pulsesPerTimeframe.insert(thing, 0); });