From 9d902c63debf5c222654ded519552799d1c34950 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Mon, 22 May 2023 12:51:26 +0200 Subject: [PATCH] Fixed NPE --- lib/AmsDataStorage/src/AmsDataStorage.cpp | 5 +++++ lib/EnergyAccounting/src/EnergyAccounting.cpp | 4 +++- src/AmsToMqttBridge.cpp | 11 +---------- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/AmsDataStorage/src/AmsDataStorage.cpp b/lib/AmsDataStorage/src/AmsDataStorage.cpp index 4fddf063..35a39ff8 100644 --- a/lib/AmsDataStorage/src/AmsDataStorage.cpp +++ b/lib/AmsDataStorage/src/AmsDataStorage.cpp @@ -577,6 +577,11 @@ bool AmsDataStorage::isHappy() { } bool AmsDataStorage::isDayHappy() { + if(tz == NULL) { + if(debugger->isActive(RemoteDebug::VERBOSE)) debugger->printf_P(PSTR("(AmsDataStorage) Timezone is missing\n")); + return false; + } + time_t now = time(nullptr); if(now < FirmwareVersion::BuildEpoch) return false; diff --git a/lib/EnergyAccounting/src/EnergyAccounting.cpp b/lib/EnergyAccounting/src/EnergyAccounting.cpp index ec7bf752..278e563d 100644 --- a/lib/EnergyAccounting/src/EnergyAccounting.cpp +++ b/lib/EnergyAccounting/src/EnergyAccounting.cpp @@ -179,6 +179,7 @@ bool EnergyAccounting::update(AmsData* amsData) { void EnergyAccounting::calcDayCost() { time_t now = time(nullptr); tmElements_t local, utc; + if(tz == NULL) return; breakTime(tz->toLocal(now), local); if(getPriceForHour(0) != ENTSOE_NO_VALUE) { @@ -205,10 +206,10 @@ float EnergyAccounting::getUseThisHour() { } float EnergyAccounting::getUseToday() { + if(tz == NULL) return 0.0; float ret = 0.0; time_t now = time(nullptr); if(now < FirmwareVersion::BuildEpoch) return 0.0; - if(tz == NULL) return 0.0; tmElements_t utc, local; breakTime(tz->toLocal(now), local); for(uint8_t i = 0; i < currentHour; i++) { @@ -237,6 +238,7 @@ float EnergyAccounting::getProducedThisHour() { } float EnergyAccounting::getProducedToday() { + if(tz == NULL) return 0.0; float ret = 0.0; time_t now = time(nullptr); if(now < FirmwareVersion::BuildEpoch) return 0.0; diff --git a/src/AmsToMqttBridge.cpp b/src/AmsToMqttBridge.cpp index dc80b7b5..5f788941 100644 --- a/src/AmsToMqttBridge.cpp +++ b/src/AmsToMqttBridge.cpp @@ -387,15 +387,7 @@ void setup() { if(config.hasConfig()) { if(Debug.isActive(RemoteDebug::INFO)) config.print(&Debug); WiFi_connect(); - - NtpConfig ntp; - if(config.getNtpConfig(ntp)) { - tz = resolveTimezone(ntp.timezone); - ws.setTimezone(tz); - ds.setTimezone(tz); - ea.setTimezone(tz); - } - + handleNtpChange(); ds.load(); } else { if(Debug.isActive(RemoteDebug::INFO)) { @@ -414,7 +406,6 @@ void setup() { ea.load(); ea.setEapi(eapi); ws.setup(&config, &gpioConfig, &meterConfig, &meterState, &ds, &ea); - handleNtpChange(); #if defined(ESP32) esp_task_wdt_init(WDT_TIMEOUT, true);