From 2bfebb3de96eac8a7044b19db4911a4c6da6631b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Thu, 2 Feb 2023 01:03:13 +0100 Subject: [PATCH] solarlog: Set energy states to 0 if not connected --- solarlog/integrationpluginsolarlog.cpp | 14 +++++++++++++- solarlog/integrationpluginsolarlog.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/solarlog/integrationpluginsolarlog.cpp b/solarlog/integrationpluginsolarlog.cpp index f2653bd9..3e030dae 100644 --- a/solarlog/integrationpluginsolarlog.cpp +++ b/solarlog/integrationpluginsolarlog.cpp @@ -96,12 +96,12 @@ void IntegrationPluginSolarLog::getData(Thing *thing) // Check HTTP status code if (status != 200 || reply->error() != QNetworkReply::NoError) { - thing->setStateValue(solarlogConnectedStateTypeId, false); qCWarning(dcSolarlog()) << "Request error:" << status << reply->errorString(); if (m_asyncSetup.contains(thing)) { ThingSetupInfo *info = m_asyncSetup.take(thing); info->finish(Thing::ThingErrorHardwareNotAvailable, tr("No Solar-Log device at given IP-Address")); } + markThingDisconnected(thing); return; } @@ -143,3 +143,15 @@ void IntegrationPluginSolarLog::getData(Thing *thing) thing->setStateValue(solarlogTotalPowerStateTypeId, (map.value(QString::number(JsonObjectNumbers::TotalPower)).toDouble()/1000.00)); }); } + +void IntegrationPluginSolarLog::markThingDisconnected(Thing *thing) +{ + qCDebug(dcSolarlog()) << "Resetting states of" << thing; + thing->setStateValue(solarlogConnectedStateTypeId, false); + thing->setStateValue(solarlogCurrentPowerStateTypeId, 0); + thing->setStateValue(solarlogPdcStateTypeId, 0); + thing->setStateValue(solarlogUacStateTypeId, 0); + thing->setStateValue(solarlogDcVoltageStateTypeId, 0); + thing->setStateValue(solarlogPowerUsageStateTypeId, 0); + thing->setStateValue(solarlogTotalPowerStateTypeId, 0); +} diff --git a/solarlog/integrationpluginsolarlog.h b/solarlog/integrationpluginsolarlog.h index b81e45ae..cfe6570d 100644 --- a/solarlog/integrationpluginsolarlog.h +++ b/solarlog/integrationpluginsolarlog.h @@ -78,6 +78,7 @@ private: QHash m_asyncSetup; void getData(Thing *thing); + void markThingDisconnected(Thing *thing); }; #endif // INTEGRATIONPLUGINSOLARLOG_H