Fixed config export and import

This commit is contained in:
Gunnar Skjold
2024-04-04 19:31:16 +02:00
parent 2bfd863882
commit c22bca3130
3 changed files with 60 additions and 51 deletions

View File

@@ -67,6 +67,7 @@ bool AmsConfiguration::getNetworkConfig(NetworkConfig& config) {
bool AmsConfiguration::setNetworkConfig(NetworkConfig& config) {
NetworkConfig existing;
if(config.sleep > 2) config.sleep = 1;
if(config.mode < 1 || config.mode > 4) config.mode = 1;
if(getNetworkConfig(existing)) {
networkChanged |= strcmp(config.ssid, existing.ssid) != 0;
networkChanged |= strcmp(config.psk, existing.psk) != 0;

View File

@@ -1220,38 +1220,40 @@ void AmsWebServer::handleSave() {
}
if(server.hasArg(F("w")) && server.arg(F("w")) == F("true")) {
NetworkConfig network;
config->getNetworkConfig(network);
strcpy(network.ssid, server.arg(F("ws")).c_str());
String psk = server.arg(F("wp"));
if(!psk.equals("***")) {
strcpy(network.psk, psk.c_str());
}
network.power = server.arg(F("ww")).toFloat() * 10;
network.sleep = server.arg(F("wz")).toInt();
network.use11b = server.hasArg(F("wb")) && server.arg(F("wb")) == F("true");
network.mode = server.arg(F("nc")).toInt();
if(network.mode > 3) network.mode = 1; // WiFi Client
config->setNetworkConfig(network);
if(server.hasArg(F("nm"))) {
if(server.arg(F("nm")) == "static") {
strcpy(network.ip, server.arg(F("ni")).c_str());
strcpy(network.gateway, server.arg(F("ng")).c_str());
strcpy(network.subnet, server.arg(F("ns")).c_str());
strcpy(network.dns1, server.arg(F("nd1")).c_str());
strcpy(network.dns2, server.arg(F("nd2")).c_str());
} else if(server.arg(F("nm")) == "dhcp") {
strcpy(network.ip, "");
strcpy(network.gateway, "");
strcpy(network.subnet, "");
strcpy(network.dns1, "");
strcpy(network.dns2, "");
long mode = server.arg(F("nc")).toInt();
if(mode > 0 && mode < 3) {
NetworkConfig network;
config->getNetworkConfig(network);
network.mode = mode;
strcpy(network.ssid, server.arg(F("ws")).c_str());
String psk = server.arg(F("wp"));
if(!psk.equals("***")) {
strcpy(network.psk, psk.c_str());
}
}
network.ipv6 = server.hasArg(F("nx")) && server.arg(F("nx")) == F("true");
network.mdns = server.hasArg(F("nd")) && server.arg(F("nd")) == F("true");
config->setNetworkConfig(network);
network.power = server.arg(F("ww")).toFloat() * 10;
network.sleep = server.arg(F("wz")).toInt();
network.use11b = server.hasArg(F("wb")) && server.arg(F("wb")) == F("true");
if(server.hasArg(F("nm"))) {
if(server.arg(F("nm")) == "static") {
strcpy(network.ip, server.arg(F("ni")).c_str());
strcpy(network.gateway, server.arg(F("ng")).c_str());
strcpy(network.subnet, server.arg(F("ns")).c_str());
strcpy(network.dns1, server.arg(F("nd1")).c_str());
strcpy(network.dns2, server.arg(F("nd2")).c_str());
} else if(server.arg(F("nm")) == "dhcp") {
strcpy(network.ip, "");
strcpy(network.gateway, "");
strcpy(network.subnet, "");
strcpy(network.dns1, "");
strcpy(network.dns2, "");
}
}
network.ipv6 = server.hasArg(F("nx")) && server.arg(F("nx")) == F("true");
network.mdns = server.hasArg(F("nd")) && server.arg(F("nd")) == F("true");
config->setNetworkConfig(network);
}
}
if(server.hasArg(F("ntp")) && server.arg(F("ntp")) == F("true")) {
@@ -2188,6 +2190,7 @@ void AmsWebServer::configFileDownload() {
if(includePrice) {
PriceServiceConfig price;
config->getPriceServiceConfig(price);
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("priceEnabled %s\n"), price.enabled ? 1 : 0));
if(strlen(price.entsoeToken) == 36 && includeSecrets) server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("priceEntsoeToken %s\n"), price.entsoeToken));
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("priceArea %s\n"), price.area));
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("priceCurrency %s\n"), price.currency));
@@ -2215,10 +2218,10 @@ void AmsWebServer::configFileDownload() {
if(ds != NULL) {
DayDataPoints day = ds->getDayData();
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("dayplot %d %lu %lu %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"),
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("dayplot %d %lu %.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"),
day.version,
(int32_t) day.lastMeterReadTime,
day.activeImport,
day.activeImport / 1000.0,
day.accuracy,
ds->getHourImport(0),
ds->getHourImport(1),
@@ -2246,8 +2249,8 @@ void AmsWebServer::configFileDownload() {
ds->getHourImport(23)
));
if(day.activeExport > 0) {
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR(" %u %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n"),
day.activeExport,
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR(" %.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n"),
day.activeExport / 1000.0,
ds->getHourExport(0),
ds->getHourExport(1),
ds->getHourExport(2),
@@ -2278,10 +2281,10 @@ void AmsWebServer::configFileDownload() {
}
MonthDataPoints month = ds->getMonthData();
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("monthplot %d %lu %lu %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"),
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("monthplot %d %lu %.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d"),
month.version,
(int32_t) month.lastMeterReadTime,
month.activeImport,
month.activeImport / 1000.0,
month.accuracy,
ds->getDayImport(1),
ds->getDayImport(2),
@@ -2316,8 +2319,8 @@ void AmsWebServer::configFileDownload() {
ds->getDayImport(31)
));
if(month.activeExport > 0) {
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR(" %u %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n"),
month.activeExport,
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR(" %.3f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\n"),
month.activeExport / 1000.0,
ds->getDayExport(1),
ds->getDayExport(2),
ds->getDayExport(3),