diff --git a/src/AmsToMqttBridge.ino b/src/AmsToMqttBridge.ino index e8ecef45..7fa06e2b 100644 --- a/src/AmsToMqttBridge.ino +++ b/src/AmsToMqttBridge.ino @@ -562,8 +562,10 @@ void setupHanPort(uint8_t pin, uint32_t baud, uint8_t parityOrdinal, bool invert #if defined(ESP32) hwSerial->begin(baud, serialConfig, -1, -1, invert); + hwSerial->setRxBufferSize(768); #else hwSerial->begin(baud, serialConfig, SERIAL_FULL, 1, invert); + hwSerial->setRxBufferSize(768); #endif #if defined(ESP8266) @@ -708,7 +710,6 @@ bool readHanPort() { while(hanSerial->available() && pos == HDLC_FRAME_INCOMPLETE) { buf[len++] = hanSerial->read(); pos = HDLC_validate((uint8_t *) buf, len, hc, ×tamp); - delay(1); } if(len > 0) { if(len >= BUF_SIZE) { @@ -980,7 +981,9 @@ void WiFi_connect() { } else if(dns1.toString().isEmpty()) { dns2.fromString("208.67.220.220"); // Add OpenDNS as second by default if nothing is configured } - WiFi.config(ip, gw, sn, dns1, dns2); + if(!WiFi.config(ip, gw, sn, dns1, dns2)) { + debugE("Static IP configuration is invalid, not using"); + } } else { #if defined(ESP32) // This trick does not work anymore... diff --git a/src/entsoe/EntsoeApi.cpp b/src/entsoe/EntsoeApi.cpp index d826a497..8aeddfff 100644 --- a/src/entsoe/EntsoeApi.cpp +++ b/src/entsoe/EntsoeApi.cpp @@ -13,7 +13,7 @@ EntsoeApi::EntsoeApi(RemoteDebug* Debug) { client.setInsecure(); https.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); - https.setTimeout(5000); + https.setTimeout(20000); // Entso-E uses CET/CEST TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; @@ -270,7 +270,9 @@ float EntsoeApi::getCurrencyMultiplier(const char* from, const char* to) { return 1.00; uint64_t now = millis64(); - if(lastCurrencyFetch < midnightMillis) { + if(now > lastCurrencyFetch && (now - lastCurrencyFetch) < 900000) { + lastCurrencyFetch = now; + char url[256]; DnbCurrParser p; diff --git a/src/web/AmsWebServer.cpp b/src/web/AmsWebServer.cpp index 3ef8f508..166bd8a5 100644 --- a/src/web/AmsWebServer.cpp +++ b/src/web/AmsWebServer.cpp @@ -458,9 +458,6 @@ void AmsWebServer::configMeterHtml() { html.replace("{d" + String(i) + "}", meterConfig->distributionSystem == i ? "selected" : ""); } html.replace("{f}", String(meterConfig->mainFuse)); - for(int i = 0; i<64; i++) { - html.replace("{f" + String(i) + "}", meterConfig->mainFuse == i ? "selected" : ""); - } html.replace("{p}", String(meterConfig->productionCapacity)); if(meterConfig->encryptionKey[0] != 0x00) { @@ -1135,6 +1132,7 @@ void AmsWebServer::handleSave() { meterConfig->distributionSystem = server.arg("d").toInt(); meterConfig->mainFuse = server.arg("f").toInt(); meterConfig->productionCapacity = server.arg("p").toInt(); + maxPwr = 0; String encryptionKeyHex = server.arg("e"); if(!encryptionKeyHex.isEmpty()) { @@ -1609,6 +1607,7 @@ void AmsWebServer::firmwareDownload() { printI("Downloading firmware..."); HTTPClient httpClient; httpClient.setFollowRedirects(HTTPC_STRICT_FOLLOW_REDIRECTS); + httpClient.setTimeout(20000); httpClient.addHeader("User-Agent", "ams2mqtt/" + String(VERSION)); #if defined(ESP8266) @@ -1627,6 +1626,13 @@ void AmsWebServer::firmwareDownload() { if(status == HTTP_CODE_OK) { printD("Received OK from server"); if(LittleFS.begin()) { + #if defined(ESP32) + esp_task_wdt_delete(NULL); + esp_task_wdt_deinit(); + #elif defined(ESP8266) + ESP.wdtDisable(); + #endif + printI("Downloading firmware to LittleFS"); file = LittleFS.open(FILE_FIRMWARE, "w"); int len = httpClient.writeToStream(&file); diff --git a/web/meter.html b/web/meter.html index 6383b3d7..2403b4c2 100644 --- a/web/meter.html +++ b/web/meter.html @@ -61,7 +61,7 @@