From 7a2e2519cd436a231f648cee36076ab01e37d6ef Mon Sep 17 00:00:00 2001 From: Jonny Date: Sat, 16 Aug 2025 12:14:42 +0100 Subject: [PATCH] Move SOFAR_ID to new setting mechanism. --- Software/src/communication/nvm/comm_nvm.cpp | 5 +---- .../src/devboard/webserver/settings_html.cpp | 20 +++++++++++++------ Software/src/devboard/webserver/webserver.cpp | 7 +++---- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Software/src/communication/nvm/comm_nvm.cpp b/Software/src/communication/nvm/comm_nvm.cpp index 582316d8..688d961c 100644 --- a/Software/src/communication/nvm/comm_nvm.cpp +++ b/Software/src/communication/nvm/comm_nvm.cpp @@ -193,10 +193,7 @@ void store_settings() { if (!settings.putUInt("TARGETDISCHVOLT", datalayer.battery.settings.max_user_set_discharge_voltage_dV)) { set_event(EVENT_PERSISTENT_SAVE_INFO, 11); } - if (!settings.putUInt("SOFAR_ID", datalayer.battery.settings.sofar_user_specified_battery_id)) { - set_event(EVENT_PERSISTENT_SAVE_INFO, 12); - } - if (!settings.putUInt("BMSRESETDUR", datalayer.battery.settings.sofar_user_specified_battery_id)) { + if (!settings.putUInt("BMSRESETDUR", datalayer.battery.settings.user_set_bms_reset_duration_ms)) { set_event(EVENT_PERSISTENT_SAVE_INFO, 13); } diff --git a/Software/src/devboard/webserver/settings_html.cpp b/Software/src/devboard/webserver/settings_html.cpp index e9e52804..31936a55 100644 --- a/Software/src/devboard/webserver/settings_html.cpp +++ b/Software/src/devboard/webserver/settings_html.cpp @@ -468,6 +468,10 @@ String settings_processor(const String& var, BatteryEmulatorSettingsStore& setti return String(datalayer.charger.charger_setpoint_HV_IDC, 1); } + if (var == "SOFAR_ID") { + return String(settings.getUInt("SOFAR_ID", 0)); + } + return String(); } @@ -527,10 +531,6 @@ const char* getCANInterfaceName(CAN_Interface interface) { function editPassword(){var value=prompt('Enter new password:');if(value!==null){var xhr=new XMLHttpRequest();xhr.onload=editComplete;xhr.onerror=editError;xhr.open('GET','/updatePassword?value='+encodeURIComponent(value),true);xhr.send();}} - function editSofarID(){var value=prompt('For double battery setups. Which battery ID should this emulator send? Remember to reboot after configuring this! Enter new value between (0-15):'); - if(value!==null){if(value>=0&&value<=15){var xhr=new XMLHttpRequest();xhr.onload=editComplete;xhr.onerror=editError;xhr.open('GET','/updateSofarID?value='+value,true);xhr.send();} - else {alert('Invalid value. Please enter a value between 0 and 15.');}}} - function editWh(){var value=prompt('How much energy the battery can store. Enter new Wh value (1-400000):'); if(value!==null){if(value>=1&&value<=400000){var xhr=new XMLHttpRequest();xhr.onload=editComplete;xhr.onerror=editError;xhr.open('GET','/updateBatterySize?value='+value,true);xhr.send();}else{ @@ -663,6 +663,11 @@ const char* getCANInterfaceName(CAN_Interface interface) { display: contents; } + form .if-sofar { display: none; } + form[data-inverter="17"] .if-sofar { + display: contents; + } + form .if-mqtt { display: none; } form[data-mqttenabled="true"] .if-mqtt { display: contents; @@ -726,6 +731,11 @@ const char* getCANInterfaceName(CAN_Interface interface) { +
+ + +
+ @@ -826,8 +836,6 @@ const char* getCANInterfaceName(CAN_Interface interface) {

Battery interface: %BATTERY2INTF%

Inverter interface: %INVINTF%

- -

Battery ID: %INVBID%

Shunt interface: %SHUNTINTF%

diff --git a/Software/src/devboard/webserver/webserver.cpp b/Software/src/devboard/webserver/webserver.cpp index 4949bd86..498ecc27 100644 --- a/Software/src/devboard/webserver/webserver.cpp +++ b/Software/src/devboard/webserver/webserver.cpp @@ -494,6 +494,9 @@ void init_webserver() { settings.saveString("MQTTDEVICENAME", p->value().c_str()); } else if (p->name() == "HADEVICEID") { settings.saveString("HADEVICEID", p->value().c_str()); + } else if (p->name() == "SOFAR_ID") { + auto type = atoi(p->value().c_str()); + settings.saveUInt("SOFAR_ID", type); } for (auto& boolSetting : boolSettings) { @@ -579,10 +582,6 @@ void init_webserver() { update_string_setting(route, [setter](String value) { setter(value.toInt()); }); }; - // Route for editing Sofar ID - update_int_setting("/updateSofarID", - [](int value) { datalayer.battery.settings.sofar_user_specified_battery_id = value; }); - // Route for editing Wh update_int_setting("/updateBatterySize", [](int value) { datalayer.battery.info.total_capacity_Wh = value; });