diff --git a/lib/AmsConfiguration/src/AmsConfiguration.cpp b/lib/AmsConfiguration/src/AmsConfiguration.cpp index 0e174bb1..16a55591 100644 --- a/lib/AmsConfiguration/src/AmsConfiguration.cpp +++ b/lib/AmsConfiguration/src/AmsConfiguration.cpp @@ -506,6 +506,7 @@ bool AmsConfiguration::getEntsoeConfig(EntsoeConfig& config) { } return true; } else { + clearEntsoe(config); return false; } } @@ -561,6 +562,7 @@ bool AmsConfiguration::getEnergyAccountingConfig(EnergyAccountingConfig& config) if(config.hours > 5) config.hours = 5; return true; } else { + clearEnergyAccountingConfig(config); return false; } } diff --git a/lib/EnergyAccounting/src/EnergyAccounting.cpp b/lib/EnergyAccounting/src/EnergyAccounting.cpp index 80c4dd03..43ab5eda 100644 --- a/lib/EnergyAccounting/src/EnergyAccounting.cpp +++ b/lib/EnergyAccounting/src/EnergyAccounting.cpp @@ -185,7 +185,8 @@ double EnergyAccounting::getUseThisHour() { double EnergyAccounting::getUseToday() { float ret = 0.0; time_t now = time(nullptr); - if(now < BUILD_EPOCH) return 0; + if(now < BUILD_EPOCH) return 0.0; + if(tz == NULL) return 0.0; tmElements_t utc, local; breakTime(tz->toLocal(now), local); for(int i = 0; i < currentHour; i++) { @@ -197,7 +198,7 @@ double EnergyAccounting::getUseToday() { double EnergyAccounting::getUseThisMonth() { time_t now = time(nullptr); - if(now < BUILD_EPOCH) return 0; + if(now < BUILD_EPOCH) return 0.0; float ret = 0; for(int i = 0; i < currentDay; i++) { ret += ds->getDayImport(i) / 1000.0; @@ -212,7 +213,7 @@ double EnergyAccounting::getProducedThisHour() { double EnergyAccounting::getProducedToday() { float ret = 0.0; time_t now = time(nullptr); - if(now < BUILD_EPOCH) return 0; + if(now < BUILD_EPOCH) return 0.0; tmElements_t utc; for(int i = 0; i < currentHour; i++) { breakTime(now - ((currentHour - i) * 3600), utc); @@ -223,7 +224,7 @@ double EnergyAccounting::getProducedToday() { double EnergyAccounting::getProducedThisMonth() { time_t now = time(nullptr); - if(now < BUILD_EPOCH) return 0; + if(now < BUILD_EPOCH) return 0.0; float ret = 0; for(int i = 0; i < currentDay; i++) { ret += ds->getDayExport(i) / 1000.0; @@ -279,6 +280,8 @@ uint8_t EnergyAccounting::getCurrentThreshold() { } float EnergyAccounting::getMonthMax() { + if(config == NULL) + return 0.0; uint8_t count = 0; uint32_t maxHour = 0.0; bool included[5] = { false, false, false, false, false }; @@ -308,6 +311,8 @@ float EnergyAccounting::getMonthMax() { } EnergyAccountingPeak EnergyAccounting::getPeak(uint8_t num) { + if(config == NULL) + return EnergyAccountingPeak({0,0}); if(num < 1 || num > 5) return EnergyAccountingPeak({0,0}); uint8_t count = 0; diff --git a/lib/SvelteUi/src/AmsWebServer.cpp b/lib/SvelteUi/src/AmsWebServer.cpp index 22b10869..d4b150b7 100644 --- a/lib/SvelteUi/src/AmsWebServer.cpp +++ b/lib/SvelteUi/src/AmsWebServer.cpp @@ -358,7 +358,6 @@ void AmsWebServer::dataJson() { } #endif - uint8_t hanStatus; if(meterState->getLastError() != 0) { hanStatus = 3; @@ -1047,16 +1046,18 @@ void AmsWebServer::handleSave() { success = false; } #endif - config->setGpioConfig(*gpioConfig); + if(success) { + config->setGpioConfig(*gpioConfig); - SystemConfig sys; - config->getSystemConfig(sys); - sys.boardType = success ? boardType : 0xFF; - sys.vendorConfigured = success; - config->setSystemConfig(sys); + SystemConfig sys; + config->getSystemConfig(sys); + sys.boardType = success ? boardType : 0xFF; + sys.vendorConfigured = success; + config->setSystemConfig(sys); + } } - if(server.hasArg(F("s")) && server.arg(F("s")) == F("true")) { + if(server.hasArg(F("s")) && server.arg(F("s")) == F("true") && server.hasArg(F("ss")) && !server.arg(F("ss")).isEmpty()) { SystemConfig sys; config->getSystemConfig(sys);