mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-02-17 21:28:25 +00:00
Stability improvements
This commit is contained in:
@@ -474,7 +474,7 @@ void AmsWebServer::sysinfoJson() {
|
||||
ea->getCostLastMonth(),
|
||||
ea->getProducedLastMonth(),
|
||||
ea->getIncomeLastMonth(),
|
||||
tz == NULL ? 0 : (tz->toLocal(now)-now)/3600,
|
||||
(uint16_t) (tz == NULL ? 0 : (tz->toLocal(now)-now)/3600),
|
||||
features.c_str()
|
||||
);
|
||||
|
||||
@@ -1174,10 +1174,10 @@ void AmsWebServer::handleSave() {
|
||||
return;
|
||||
|
||||
bool success = true;
|
||||
if(server.hasArg(F("v")) && server.arg(F("v")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("v")) && server.arg(F("v")) == F("true")) {
|
||||
int boardType = server.arg(F("vb")).toInt();
|
||||
int hanPin = server.arg(F("vh")).toInt();
|
||||
if(server.hasArg(F("vr")) && server.arg(F("vr")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("vr")) && server.arg(F("vr")) == F("true")) {
|
||||
config->clear();
|
||||
}
|
||||
|
||||
@@ -1197,7 +1197,7 @@ void AmsWebServer::handleSave() {
|
||||
}
|
||||
}
|
||||
|
||||
if(server.hasArg(F("s")) && server.arg(F("s")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("s")) && server.arg(F("s")) == F("true")) {
|
||||
SystemConfig sys;
|
||||
config->getSystemConfig(sys);
|
||||
MeterConfig meterConfig;
|
||||
@@ -1269,25 +1269,25 @@ void AmsWebServer::handleSave() {
|
||||
} else if(server.hasArg(F("sf")) && !server.arg(F("sf")).isEmpty()) {
|
||||
SystemConfig sys;
|
||||
config->getSystemConfig(sys);
|
||||
sys.dataCollectionConsent = server.hasArg(F("sf")) && (server.arg(F("sf")) == FSTR_TRUE || server.arg(F("sf")) == F("1")) ? 1 : 2;
|
||||
sys.dataCollectionConsent = server.hasArg(F("sf")) && (server.arg(F("sf")) == F("true") || server.arg(F("sf")) == F("1")) ? 1 : 2;
|
||||
config->setSystemConfig(sys);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("m")) && server.arg(F("m")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("m")) && server.arg(F("m")) == F("true")) {
|
||||
MeterConfig meterConfig;
|
||||
config->getMeterConfig(meterConfig);
|
||||
meterConfig.source = server.arg(F("mo")).toInt();
|
||||
meterConfig.parser = server.arg(F("ma")).toInt();
|
||||
meterConfig.baud = server.arg(F("mb")).toInt();
|
||||
meterConfig.parity = server.arg(F("mp")).toInt();
|
||||
meterConfig.invert = server.hasArg(F("mi")) && server.arg(F("mi")) == FSTR_TRUE;
|
||||
meterConfig.invert = server.hasArg(F("mi")) && server.arg(F("mi")) == F("true");
|
||||
meterConfig.distributionSystem = server.arg(F("md")).toInt();
|
||||
meterConfig.mainFuse = server.arg(F("mf")).toInt();
|
||||
meterConfig.productionCapacity = server.arg(F("mr")).toInt();
|
||||
meterConfig.bufferSize = min((double) 64, ceil((server.arg(F("ms")).toInt()) / 64));
|
||||
maxPwr = 0;
|
||||
|
||||
if(server.hasArg(F("me")) && server.arg(F("me")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("me")) && server.arg(F("me")) == F("true")) {
|
||||
String encryptionKeyHex = server.arg(F("mek"));
|
||||
if(!encryptionKeyHex.isEmpty()) {
|
||||
encryptionKeyHex.replace(F("0x"), F(""));
|
||||
@@ -1315,7 +1315,7 @@ void AmsWebServer::handleSave() {
|
||||
config->setMeterConfig(meterConfig);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("w")) && server.arg(F("w")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("w")) && server.arg(F("w")) == F("true")) {
|
||||
long mode = server.arg(F("nc")).toInt();
|
||||
if(mode > 0 && mode < 3) {
|
||||
NetworkConfig network;
|
||||
@@ -1328,7 +1328,7 @@ void AmsWebServer::handleSave() {
|
||||
}
|
||||
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")) == FSTR_TRUE;
|
||||
network.use11b = server.hasArg(F("wb")) && server.arg(F("wb")) == F("true");
|
||||
|
||||
if(server.hasArg(F("nm"))) {
|
||||
if(server.arg(F("nm")) == "static") {
|
||||
@@ -1345,23 +1345,23 @@ void AmsWebServer::handleSave() {
|
||||
strcpy(network.dns2, "");
|
||||
}
|
||||
}
|
||||
network.ipv6 = server.hasArg(F("nx")) && server.arg(F("nx")) == FSTR_TRUE;
|
||||
network.mdns = server.hasArg(F("nd")) && server.arg(F("nd")) == FSTR_TRUE;
|
||||
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")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("ntp")) && server.arg(F("ntp")) == F("true")) {
|
||||
NtpConfig ntp;
|
||||
config->getNtpConfig(ntp);
|
||||
ntp.enable = true;
|
||||
ntp.dhcp = server.hasArg(F("ntpd")) && server.arg(F("ntpd")) == FSTR_TRUE;
|
||||
ntp.dhcp = server.hasArg(F("ntpd")) && server.arg(F("ntpd")) == F("true");
|
||||
strcpy(ntp.server, server.arg(F("ntph")).c_str());
|
||||
config->setNtpConfig(ntp);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("q")) && server.arg(F("q")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("q")) && server.arg(F("q")) == F("true")) {
|
||||
MqttConfig mqtt;
|
||||
config->getMqttConfig(mqtt);
|
||||
if(server.hasArg(F("qh")) && !server.arg(F("qh")).isEmpty()) {
|
||||
@@ -1378,7 +1378,7 @@ void AmsWebServer::handleSave() {
|
||||
#if defined(ESP8266)
|
||||
mqtt.ssl = false;
|
||||
#else
|
||||
mqtt.ssl = server.arg(F("qs")) == FSTR_TRUE;
|
||||
mqtt.ssl = server.arg(F("qs")) == F("true");
|
||||
#endif
|
||||
|
||||
mqtt.port = server.arg(F("qp")).toInt();
|
||||
@@ -1394,7 +1394,7 @@ void AmsWebServer::handleSave() {
|
||||
config->setMqttConfig(mqtt);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("o")) && server.arg(F("o")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("o")) && server.arg(F("o")) == F("true")) {
|
||||
DomoticzConfig domo {
|
||||
static_cast<uint16_t>(server.arg(F("oe")).toInt()),
|
||||
static_cast<uint16_t>(server.arg(F("ou1")).toInt()),
|
||||
@@ -1405,7 +1405,7 @@ void AmsWebServer::handleSave() {
|
||||
config->setDomoticzConfig(domo);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("h")) && server.arg(F("h")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("h")) && server.arg(F("h")) == F("true")) {
|
||||
HomeAssistantConfig haconf;
|
||||
config->getHomeAssistantConfig(haconf);
|
||||
strcpy(haconf.discoveryPrefix, server.arg(F("ht")).c_str());
|
||||
@@ -1414,7 +1414,7 @@ void AmsWebServer::handleSave() {
|
||||
config->setHomeAssistantConfig(haconf);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("g")) && server.arg(F("g")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("g")) && server.arg(F("g")) == F("true")) {
|
||||
webConfig.security = server.arg(F("gs")).toInt();
|
||||
if(webConfig.security > 0) {
|
||||
strcpy(webConfig.username, server.arg(F("gu")).c_str());
|
||||
@@ -1448,20 +1448,20 @@ void AmsWebServer::handleSave() {
|
||||
config->setNtpConfig(ntp);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("i")) && server.arg(F("i")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("i")) && server.arg(F("i")) == F("true")) {
|
||||
MeterConfig meterConfig;
|
||||
config->getMeterConfig(meterConfig);
|
||||
meterConfig.rxPin = server.hasArg(F("ihp")) && !server.arg(F("ihp")).isEmpty() ? server.arg(F("ihp")).toInt() : 3;
|
||||
meterConfig.rxPinPullup = server.hasArg(F("ihu")) && server.arg(F("ihu")) == FSTR_TRUE;
|
||||
meterConfig.rxPinPullup = server.hasArg(F("ihu")) && server.arg(F("ihu")) == F("true");
|
||||
meterConfig.txPin = server.hasArg(F("iht")) && !server.arg(F("iht")).isEmpty() ? server.arg(F("iht")).toInt() : 1;
|
||||
config->setMeterConfig(meterConfig);
|
||||
|
||||
gpioConfig->ledPin = server.hasArg(F("ilp")) && !server.arg(F("ilp")).isEmpty() ? server.arg(F("ilp")).toInt() : 0xFF;
|
||||
gpioConfig->ledInverted = server.hasArg(F("ili")) && server.arg(F("ili")) == FSTR_TRUE;
|
||||
gpioConfig->ledInverted = server.hasArg(F("ili")) && server.arg(F("ili")) == F("true");
|
||||
gpioConfig->ledPinRed = server.hasArg(F("irr")) && !server.arg(F("irr")).isEmpty() ? server.arg(F("irr")).toInt() : 0xFF;
|
||||
gpioConfig->ledPinGreen = server.hasArg(F("irg")) && !server.arg(F("irg")).isEmpty() ? server.arg(F("irg")).toInt() : 0xFF;
|
||||
gpioConfig->ledPinBlue = server.hasArg(F("irb")) && !server.arg(F("irb")).isEmpty() ? server.arg(F("irb")).toInt() : 0xFF;
|
||||
gpioConfig->ledRgbInverted = server.hasArg(F("iri")) && server.arg(F("iri")) == FSTR_TRUE;
|
||||
gpioConfig->ledRgbInverted = server.hasArg(F("iri")) && server.arg(F("iri")) == F("true");
|
||||
gpioConfig->apPin = server.hasArg(F("ia")) && !server.arg(F("ia")).isEmpty() ? server.arg(F("ia")).toInt() : 0xFF;
|
||||
gpioConfig->tempSensorPin = server.hasArg(F("itd")) && !server.arg(F("itd")).isEmpty() ?server.arg(F("itd")).toInt() : 0xFF;
|
||||
gpioConfig->tempAnalogSensorPin = server.hasArg(F("ita")) && !server.arg(F("ita")).isEmpty() ?server.arg(F("ita")).toInt() : 0xFF;
|
||||
@@ -1477,20 +1477,20 @@ void AmsWebServer::handleSave() {
|
||||
config->setGpioConfig(*gpioConfig);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("iv")) && server.arg(F("iv")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("iv")) && server.arg(F("iv")) == F("true")) {
|
||||
gpioConfig->vccOffset = server.hasArg(F("ivo")) && !server.arg(F("ivo")).isEmpty() ? server.arg(F("ivo")).toFloat() * 100 : 0;
|
||||
gpioConfig->vccMultiplier = server.hasArg(F("ivm")) && !server.arg(F("ivm")).isEmpty() ? server.arg(F("ivm")).toFloat() * 1000 : 1000;
|
||||
gpioConfig->vccBootLimit = server.hasArg(F("ivb")) && !server.arg(F("ivb")).isEmpty() ? server.arg(F("ivb")).toFloat() * 10 : 0;
|
||||
config->setGpioConfig(*gpioConfig);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("d")) && server.arg(F("d")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("d")) && server.arg(F("d")) == F("true")) {
|
||||
DebugConfig debug;
|
||||
config->getDebugConfig(debug);
|
||||
bool active = debug.serial || debug.telnet;
|
||||
|
||||
debug.telnet = server.hasArg(F("dt")) && server.arg(F("dt")) == FSTR_TRUE;
|
||||
debug.serial = server.hasArg(F("ds")) && server.arg(F("ds")) == FSTR_TRUE;
|
||||
debug.telnet = server.hasArg(F("dt")) && server.arg(F("dt")) == F("true");
|
||||
debug.serial = server.hasArg(F("ds")) && server.arg(F("ds")) == F("true");
|
||||
debug.level = server.arg(F("dl")).toInt();
|
||||
|
||||
#if defined(AMS_REMOTE_DEBUG)
|
||||
@@ -1515,7 +1515,7 @@ void AmsWebServer::handleSave() {
|
||||
config->setDebugConfig(debug);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("u")) && server.arg(F("u")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("u")) && server.arg(F("u")) == F("true")) {
|
||||
UiConfig ui;
|
||||
config->getUiConfig(ui);
|
||||
ui.showImport = server.arg(F("ui")).toInt();
|
||||
@@ -1537,18 +1537,18 @@ void AmsWebServer::handleSave() {
|
||||
config->setUiConfig(ui);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("p")) && server.arg(F("p")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("p")) && server.arg(F("p")) == F("true")) {
|
||||
priceRegion = server.arg(F("pr"));
|
||||
|
||||
PriceServiceConfig price;
|
||||
price.enabled = server.hasArg(F("pe")) && server.arg(F("pe")) == FSTR_TRUE;
|
||||
price.enabled = server.hasArg(F("pe")) && server.arg(F("pe")) == F("true");
|
||||
strcpy(price.entsoeToken, server.arg(F("pt")).c_str());
|
||||
strcpy(price.area, priceRegion.c_str());
|
||||
strcpy(price.currency, server.arg(F("pc")).c_str());
|
||||
config->setPriceServiceConfig(price);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("t")) && server.arg(F("t")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("t")) && server.arg(F("t")) == F("true")) {
|
||||
EnergyAccountingConfig eac;
|
||||
eac.thresholds[0] = server.arg(F("t0")).toInt();
|
||||
eac.thresholds[1] = server.arg(F("t1")).toInt();
|
||||
@@ -1563,19 +1563,19 @@ void AmsWebServer::handleSave() {
|
||||
config->setEnergyAccountingConfig(eac);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("c")) && server.arg(F("c")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("c")) && server.arg(F("c")) == F("true")) {
|
||||
SystemConfig sys;
|
||||
config->getSystemConfig(sys);
|
||||
sys.energyspeedometer = server.hasArg(F("ces")) && server.arg(F("ces")) == FSTR_TRUE ? 7 : 0;
|
||||
sys.energyspeedometer = server.hasArg(F("ces")) && server.arg(F("ces")) == F("true") ? 7 : 0;
|
||||
config->setSystemConfig(sys);
|
||||
|
||||
CloudConfig cloud;
|
||||
config->getCloudConfig(cloud);
|
||||
cloud.enabled = server.hasArg(F("ce")) && server.arg(F("ce")) == FSTR_TRUE;
|
||||
cloud.enabled = server.hasArg(F("ce")) && server.arg(F("ce")) == F("true");
|
||||
config->setCloudConfig(cloud);
|
||||
}
|
||||
|
||||
if(server.hasArg(F("r")) && server.arg(F("r")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("r")) && server.arg(F("r")) == F("true")) {
|
||||
if(ps != NULL) {
|
||||
uint8_t count = server.arg(F("rc")).toInt();
|
||||
for(uint8_t i = 0; i < count; i++) {
|
||||
@@ -1948,7 +1948,7 @@ void AmsWebServer::factoryResetPost() {
|
||||
return;
|
||||
|
||||
bool success = false;
|
||||
if(server.hasArg(F("perform")) && server.arg(F("perform")) == FSTR_TRUE) {
|
||||
if(server.hasArg(F("perform")) && server.arg(F("perform")) == F("true")) {
|
||||
LittleFS.format();
|
||||
config->clear();
|
||||
|
||||
@@ -2177,16 +2177,16 @@ void AmsWebServer::configFileDownload() {
|
||||
if(!checkSecurity(1))
|
||||
return;
|
||||
|
||||
bool includeSecrets = server.hasArg(F("ic")) && server.arg(F("ic")) == FSTR_TRUE;
|
||||
bool includeWifi = server.hasArg(F("iw")) && server.arg(F("iw")) == FSTR_TRUE;
|
||||
bool includeMqtt = server.hasArg(F("im")) && server.arg(F("im")) == FSTR_TRUE;
|
||||
bool includeWeb = server.hasArg(F("ie")) && server.arg(F("ie")) == FSTR_TRUE;
|
||||
bool includeMeter = server.hasArg(F("it")) && server.arg(F("it")) == FSTR_TRUE;
|
||||
bool includeGpio = server.hasArg(F("ig")) && server.arg(F("ig")) == FSTR_TRUE;
|
||||
bool includeNtp = server.hasArg(F("in")) && server.arg(F("in")) == FSTR_TRUE;
|
||||
bool includePrice = server.hasArg(F("is")) && server.arg(F("is")) == FSTR_TRUE;
|
||||
bool includeThresholds = server.hasArg(F("ih")) && server.arg(F("ih")) == FSTR_TRUE;
|
||||
|
||||
bool includeSecrets = server.hasArg(F("ic")) && server.arg(F("ic")) == F("true");
|
||||
bool includeWifi = server.hasArg(F("iw")) && server.arg(F("iw")) == F("true");
|
||||
bool includeMqtt = server.hasArg(F("im")) && server.arg(F("im")) == F("true");
|
||||
bool includeWeb = server.hasArg(F("ie")) && server.arg(F("ie")) == F("true");
|
||||
bool includeMeter = server.hasArg(F("it")) && server.arg(F("it")) == F("true");
|
||||
bool includeGpio = server.hasArg(F("ig")) && server.arg(F("ig")) == F("true");
|
||||
bool includeNtp = server.hasArg(F("in")) && server.arg(F("in")) == F("true");
|
||||
bool includePrice = server.hasArg(F("is")) && server.arg(F("is")) == F("true");
|
||||
bool includeThresholds = server.hasArg(F("ih")) && server.arg(F("ih")) == F("true");
|
||||
|
||||
SystemConfig sys;
|
||||
config->getSystemConfig(sys);
|
||||
|
||||
@@ -2248,7 +2248,7 @@ void AmsWebServer::configFileDownload() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(includeWeb && includeSecrets) {
|
||||
WebConfig web;
|
||||
config->getWebConfig(web);
|
||||
@@ -2258,7 +2258,7 @@ void AmsWebServer::configFileDownload() {
|
||||
server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("webPassword %s\n"), web.password));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(includeMeter) {
|
||||
MeterConfig meter;
|
||||
config->getMeterConfig(meter);
|
||||
@@ -2291,7 +2291,7 @@ void AmsWebServer::configFileDownload() {
|
||||
if(meter.authenticationKey[0] != 0x00) server.sendContent(buf, snprintf_P(buf, BufferSize, PSTR("meterAuthenticationKey %s\n"), toHex(meter.authenticationKey, 16).c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(includeGpio) {
|
||||
MeterConfig meter;
|
||||
config->getMeterConfig(meter);
|
||||
@@ -2635,7 +2635,7 @@ void AmsWebServer::addConditionalCloudHeaders() {
|
||||
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, ORIGIN_AMSLESER_CLOUD);
|
||||
|
||||
String req = server.header(HEADER_ACCESS_CONTROL_REQUEST_PRIVATE_NETWORK);
|
||||
if(!req.equalsIgnoreCase(FSTR_TRUE)) {
|
||||
if(!req.equalsIgnoreCase(F("true"))) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2669,7 +2669,7 @@ void AmsWebServer::addConditionalCloudHeaders() {
|
||||
|
||||
sprintf(macStr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
|
||||
|
||||
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_PRIVATE_NETWORK, FSTR_TRUE);
|
||||
server.sendHeader(HEADER_ACCESS_CONTROL_ALLOW_PRIVATE_NETWORK, F("true"));
|
||||
server.sendHeader(F("Private-Network-Access-Name"), networkConfig.hostname);
|
||||
server.sendHeader(F("Private-Network-Access-ID"), macStr);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user