Merge branch 'main' into dev-v2.3

This commit is contained in:
Gunnar Skjold
2023-12-10 09:49:22 +01:00
21 changed files with 146 additions and 55 deletions

View File

@@ -56,10 +56,19 @@
#include "esp32s3/rom/rtc.h"
#endif
AmsWebServer::AmsWebServer(uint8_t* buf, RemoteDebug* Debug, HwTools* hw) {
AmsWebServer::AmsWebServer(uint8_t* buf, RemoteDebug* Debug, HwTools* hw, ResetDataContainer* rdc) {
this->debugger = Debug;
this->hw = hw;
this->buf = (char*) buf;
this->rdc = rdc;
if(rdc->magic != 0x4a) {
rdc->last_cause = 0;
rdc->cause = 0;
rdc->magic = 0x4a;
} else {
rdc->last_cause = rdc->cause;
rdc->cause = 0;
}
}
void AmsWebServer::setup(AmsConfiguration* config, GpioConfig* gpioConfig, AmsData* meterState, AmsDataStorage* ds, EnergyAccounting* ea, RealtimePlot* rtp) {
@@ -338,7 +347,7 @@ void AmsWebServer::sysinfoJson() {
webConfig.security,
#if defined(ESP32)
rtc_get_reset_reason(0),
0,
rdc->last_cause,
#else
ESP.getResetInfoPtr()->reason,
ESP.getResetInfoPtr()->exccause,
@@ -373,6 +382,7 @@ void AmsWebServer::sysinfoJson() {
if(debugger->isActive(RemoteDebug::INFO)) debugger->printf_P(PSTR("Rebooting\n"));
debugger->flush();
delay(1000);
rdc->cause = 1;
ESP.restart();
performRestart = false;
}
@@ -471,6 +481,7 @@ void AmsWebServer::dataJson() {
meterState->getL3Voltage(),
meterState->getL1Current(),
meterState->getL2Current(),
meterState->isL2currentEstimated() ? "true" : "false",
meterState->getL3Current(),
meterState->getPowerFactor(),
meterState->getL1PowerFactor(),
@@ -807,9 +818,20 @@ void AmsWebServer::configurationJson() {
if(!checkSecurity(1))
return;
MeterConfig meterConfig;
config->getMeterConfig(meterConfig);
bool multEnable = false;
if(meterConfig.wattageMultiplier != 1.0 && meterConfig.wattageMultiplier != 0.0)
multEnable = true;
if(meterConfig.voltageMultiplier != 1.0 && meterConfig.voltageMultiplier != 0.0)
multEnable = true;
if(meterConfig.amperageMultiplier != 1.0 && meterConfig.amperageMultiplier != 0.0)
multEnable = true;
if(meterConfig.accumulatedMultiplier != 1.0 && meterConfig.accumulatedMultiplier != 0.0)
multEnable = true;
SystemConfig sysConfig;
config->getSystemConfig(sysConfig);
@@ -882,11 +904,11 @@ void AmsWebServer::configurationJson() {
encen ? "true" : "false",
toHex(meterConfig.encryptionKey, 16).c_str(),
toHex(meterConfig.authenticationKey, 16).c_str(),
meterConfig.wattageMultiplier > 1 || meterConfig.voltageMultiplier > 1 || meterConfig.amperageMultiplier > 1 || meterConfig.accumulatedMultiplier > 1 ? "true" : "false",
meterConfig.wattageMultiplier / 1000.0,
meterConfig.voltageMultiplier / 1000.0,
meterConfig.amperageMultiplier / 1000.0,
meterConfig.accumulatedMultiplier / 1000.0
multEnable ? "true" : "false",
meterConfig.wattageMultiplier == 0.0 ? 1.0 : meterConfig.wattageMultiplier / 1000.0,
meterConfig.voltageMultiplier == 0.0 ? 1.0 : meterConfig.voltageMultiplier / 1000.0,
meterConfig.amperageMultiplier == 0.0 ? 1.0 : meterConfig.amperageMultiplier / 1000.0,
meterConfig.accumulatedMultiplier == 0.0 ? 1.0 : meterConfig.accumulatedMultiplier / 1000.0
);
server.sendContent(buf);
@@ -1011,7 +1033,7 @@ void AmsWebServer::configurationJson() {
cloud.enabled ? "true" : "false",
cloud.clientId,
strlen(cloud.clientSecret) > 0 ? "***" : "",
#if defined(ENERGY_SPEEDOMETER_PASS)
#if defined(ESP32) && defined(ENERGY_SPEEDOMETER_PASS)
sysConfig.energyspeedometer == 7 ? "true" : "false"
#else
"null"
@@ -1607,8 +1629,9 @@ void AmsWebServer::handleSave() {
if(debugger->isActive(RemoteDebug::INFO)) debugger->printf_P(PSTR("Rebooting\n"));
debugger->flush();
delay(1000);
ESP.restart();
rdc->cause = 2;
performRestart = false;
ESP.restart();
}
}
@@ -1625,9 +1648,11 @@ void AmsWebServer::reboot() {
if(debugger->isActive(RemoteDebug::INFO)) debugger->printf_P(PSTR("Rebooting\n"));
debugger->flush();
delay(1000);
ESP.restart();
delay(1000); rdc->cause = 3;
rdc->cause = 3;
performRestart = false;
ESP.restart();
}
void AmsWebServer::upgrade() {
@@ -1706,6 +1731,7 @@ void AmsWebServer::upgradeFromUrl(String url, String nextVersion) {
case HTTP_UPDATE_OK:
debugger->printf_P(PSTR("Update OK\n"));
debugger->flush();
rdc->cause = 4;
ESP.restart();
break;
}
@@ -1883,6 +1909,7 @@ void AmsWebServer::factoryResetPost() {
if(debugger->isActive(RemoteDebug::INFO)) debugger->printf_P(PSTR("Rebooting\n"));
debugger->flush();
delay(1000);
rdc->cause = 5;
ESP.restart();
}