From a239e1a63d52806e7a1d01560518f4b3bfcfbb76 Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Tue, 6 Dec 2022 08:28:30 +0100 Subject: [PATCH 1/3] Fix on special case for Kaifa MA304T3 --- src/IEC6205675.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/IEC6205675.cpp b/src/IEC6205675.cpp index 6b4dd3ba..bae43a02 100644 --- a/src/IEC6205675.cpp +++ b/src/IEC6205675.cpp @@ -98,8 +98,10 @@ IEC6205675::IEC6205675(const char* d, uint8_t useMeterType, MeterConfig* meterCo } if(listType >= 2 && memcmp(meterModel.c_str(), "MA304T3", 7) == 0) { - l2current = (((activeImportPower - activeExportPower) * sqrt(3)) - (l1voltage * l1current) - (l3voltage * l3current)) / l2voltage; l2voltage = sqrt(pow(l1voltage - l3voltage * cos(60 * (PI/180)), 2) + pow(l3voltage * sin(60 * (PI/180)),2)); + if(l2voltage > 0) { + l2current = (((activeImportPower - activeExportPower) * sqrt(3)) - (l1voltage * l1current) - (l3voltage * l3current)) / l2voltage; + } } if(listType == 3) { From 33bd3da31007afe18e3cdd7c3c7d4db5dcab60dd Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Tue, 6 Dec 2022 15:45:43 +0100 Subject: [PATCH 2/3] Various fix for realtime values --- src/EnergyAccounting.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/EnergyAccounting.cpp b/src/EnergyAccounting.cpp index 958b212f..4b311e8b 100644 --- a/src/EnergyAccounting.cpp +++ b/src/EnergyAccounting.cpp @@ -70,11 +70,14 @@ bool EnergyAccounting::update(AmsData* amsData) { if(local.Hour != currentHour && (amsData->getListType() >= 3 || local.Minute == 1)) { if(debugger->isActive(RemoteDebug::INFO)) debugger->printf("(EnergyAccounting) New local hour %d\n", local.Hour); - tmElements_t oneHrAgo; + tmElements_t oneHrAgo, oneHrAgoLocal; breakTime(now-3600, oneHrAgo); uint16_t val = ds->getHourImport(oneHrAgo.Hour) / 10; - ret |= updateMax(val, local.Day); + breakTime(tz->toLocal(now-3600), oneHrAgoLocal); + ret |= updateMax(val, oneHrAgoLocal.Day); + + currentHour = local.Hour; // Need to be defined here so that day cost is correctly calculated if(local.Hour > 0) { calcDayCost(); } @@ -143,9 +146,9 @@ void EnergyAccounting::calcDayCost() { if(eapi != NULL && eapi->getValueForHour(0) != ENTSOE_NO_VALUE) { if(initPrice) costDay = 0; for(int i = 0; i < currentHour; i++) { - float price = eapi->getValueForHour(i - currentHour); + float price = eapi->getValueForHour(i - local.Hour); if(price == ENTSOE_NO_VALUE) break; - breakTime(now - ((currentHour - i) * 3600), utc); + breakTime(now - ((local.Hour - i) * 3600), utc); int16_t wh = ds->getHourImport(utc.Hour); costDay += price * (wh / 1000.0); } @@ -161,9 +164,10 @@ double EnergyAccounting::getUseToday() { float ret = 0.0; time_t now = time(nullptr); if(now < BUILD_EPOCH) return 0; - tmElements_t utc; + tmElements_t utc, local; + breakTime(tz->toLocal(now), local); for(int i = 0; i < currentHour; i++) { - breakTime(now - ((currentHour - i) * 3600), utc); + breakTime(now - ((local.Hour - i) * 3600), utc); ret += ds->getHourImport(utc.Hour) / 1000.0; } return ret + getUseThisHour(); From 6b0d540f39f773a635fd21f90069c5c0dff3f15c Mon Sep 17 00:00:00 2001 From: Gunnar Skjold Date: Wed, 7 Dec 2022 11:51:45 +0100 Subject: [PATCH 3/3] Added 300 baud --- src/web/AmsWebServer.cpp | 1 + web/meter.html | 1 + 2 files changed, 2 insertions(+) diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp index 9b2f0c9e..de1c3ce8 100644 --- a/src/web/AmsWebServer.cpp +++ b/src/web/AmsWebServer.cpp @@ -347,6 +347,7 @@ void AmsWebServer::configMeterHtml() { html.replace(F("{mod}"), meterState->getMeterModel()); html.replace(F("{mid}"), meterState->getMeterId()); html.replace(F("{b}"), String(meterConfig->baud)); + html.replace(F("{b300}"), meterConfig->baud == 300 ? F("selected") : F("")); html.replace(F("{b2400}"), meterConfig->baud == 2400 ? F("selected") : F("")); html.replace(F("{b4800}"), meterConfig->baud == 4800 ? F("selected") : F("")); html.replace(F("{b9600}"), meterConfig->baud == 9600 ? F("selected") : F("")); diff --git a/web/meter.html b/web/meter.html index 719cb4a4..5659c543 100644 --- a/web/meter.html +++ b/web/meter.html @@ -35,6 +35,7 @@ Baud rate