From 70d83f9024d6fa1079d212f374771802fa755390 Mon Sep 17 00:00:00 2001 From: KipK Date: Sun, 1 Dec 2024 21:42:01 +0100 Subject: [PATCH] Fix scale & offset not updated in config after submitting changes #928 --- src/app_config.cpp | 1 + src/evse_man.h | 3 +++ src/evse_monitor.cpp | 16 ++++++++++++++-- src/evse_monitor.h | 1 + 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/app_config.cpp b/src/app_config.cpp index 45d29c88..080e6211 100644 --- a/src/app_config.cpp +++ b/src/app_config.cpp @@ -520,6 +520,7 @@ bool config_deserialize(DynamicJsonDocument &doc) evse.configureCurrentSensorScale(doc["scale"], doc["offset"]); config_modified = true; DBUGLN("scale changed"); + evse.getAmmeterSettings(); } } #endif diff --git a/src/evse_man.h b/src/evse_man.h index 310b4b68..223671a3 100644 --- a/src/evse_man.h +++ b/src/evse_man.h @@ -430,6 +430,9 @@ class EvseManager : public MicroTasks::Task long getCurrentSensorOffset() { return _monitor.getCurrentSensorOffset(); } + void getAmmeterSettings() { + _monitor.getAmmeterSettings(); + } void enableFeature(uint8_t feature, bool enabled, std::function callback = NULL) { _monitor.enableFeature(feature, enabled, callback); diff --git a/src/evse_monitor.cpp b/src/evse_monitor.cpp index 2c020d61..5fea4c41 100644 --- a/src/evse_monitor.cpp +++ b/src/evse_monitor.cpp @@ -235,9 +235,8 @@ void EvseMonitor::evseBoot(const char *firmware) DBUGF("scale = %ld, offset = %ld", scale, offset); _current_sensor_scale = scale; _current_sensor_offset = offset; - - _boot_ready.ready(EVSE_MONITOR_CURRENT_SENSOR_BOOT_READY); } + _boot_ready.ready(EVSE_MONITOR_CURRENT_SENSOR_BOOT_READY); }); _openevse.getSerial([this](int ret, const char *serial) @@ -802,3 +801,16 @@ bool EvseMonitor::importTotalEnergy() }); return true; } + +void EvseMonitor::getAmmeterSettings() +{ + _openevse.getAmmeterSettings([this](int ret, long scale, long offset) + { + if(RAPI_RESPONSE_OK == ret) + { + DBUGF("scale = %ld, offset = %ld", scale, offset); + _current_sensor_scale = scale; + _current_sensor_offset = offset; + } + }); +} \ No newline at end of file diff --git a/src/evse_monitor.h b/src/evse_monitor.h index e8f861df..5e431195 100644 --- a/src/evse_monitor.h +++ b/src/evse_monitor.h @@ -276,6 +276,7 @@ class EvseMonitor : public MicroTasks::Task return _energyMeter.reset(full, import); } bool importTotalEnergy(); + void getAmmeterSettings(); bool publishEnergyMeter() { return _energyMeter.publish();