Fix: Set all settings to default when deleting an inverters

Previously some old settings from previous inverters could have been shown in a new inverter
This commit is contained in:
Thomas Basler 2024-03-13 18:47:28 +01:00
parent 437f572c39
commit 33bf2117c6
3 changed files with 24 additions and 2 deletions

View File

@ -168,6 +168,7 @@ public:
INVERTER_CONFIG_T* getFreeInverterSlot();
INVERTER_CONFIG_T* getInverterConfig(const uint64_t serial);
void deleteInverterById(const uint8_t id);
};
extern ConfigurationClass Configuration;

View File

@ -406,4 +406,26 @@ INVERTER_CONFIG_T* ConfigurationClass::getInverterConfig(const uint64_t serial)
return nullptr;
}
void ConfigurationClass::deleteInverterById(const uint8_t id)
{
config.Inverter[id].Serial = 0ULL;
strlcpy(config.Inverter[id].Name, "", sizeof(config.Inverter[id].Name));
config.Inverter[id].Order = 0;
config.Inverter[id].Poll_Enable = true;
config.Inverter[id].Poll_Enable_Night = true;
config.Inverter[id].Command_Enable = true;
config.Inverter[id].Command_Enable_Night = true;
config.Inverter[id].ReachableThreshold = REACHABLE_THRESHOLD;
config.Inverter[id].ZeroRuntimeDataIfUnrechable = false;
config.Inverter[id].ZeroYieldDayOnMidnight = false;
config.Inverter[id].YieldDayCorrection = false;
for (uint8_t c = 0; c < INV_MAX_CHAN_COUNT; c++) {
config.Inverter[id].channel[c].MaxChannelPower = 0;
config.Inverter[id].channel[c].YieldTotalOffset = 0.0f;
strlcpy(config.Inverter[id].channel[c].Name, "", sizeof(config.Inverter[id].channel[c].Name));
}
}
ConfigurationClass Configuration;

View File

@ -386,8 +386,7 @@ void WebApiInverterClass::onInverterDelete(AsyncWebServerRequest* request)
Hoymiles.removeInverterBySerial(inverter.Serial);
inverter.Serial = 0;
strncpy(inverter.Name, "", sizeof(inverter.Name));
Configuration.deleteInverterById(inverter_id);
WebApi.writeConfig(retMsg, WebApiError::InverterDeleted, "Inverter deleted!");