diff --git a/lib/ConnectionHandler/src/EthernetConnectionHandler.cpp b/lib/ConnectionHandler/src/EthernetConnectionHandler.cpp index 5d899e99..eb084999 100644 --- a/lib/ConnectionHandler/src/EthernetConnectionHandler.cpp +++ b/lib/ConnectionHandler/src/EthernetConnectionHandler.cpp @@ -114,6 +114,7 @@ bool EthernetConnectionHandler::connect(NetworkConfig config, SystemConfig sys) debugger->printf_P(PSTR("Static IP configuration is invalid, not using\n")); } } + this->config = config; } else { #if defined(AMS_REMOTE_DEBUG) if (debugger->isActive(RemoteDebug::ERROR)) @@ -147,6 +148,9 @@ void EthernetConnectionHandler::eventHandler(WiFiEvent_t event, WiFiEventInfo_t { debugger->printf_P(PSTR("Successfully connected to Ethernet!\n")); } + if(config.ipv6 && !ETH.enableIpV6()) { + debugger->printf_P(PSTR("Unable to enable IPv6\n")); + } break; case ARDUINO_EVENT_ETH_GOT_IP: #if defined(AMS_REMOTE_DEBUG) diff --git a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp index c1d5a589..7c227e2f 100644 --- a/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp +++ b/lib/HomeAssistantMqttHandler/src/HomeAssistantMqttHandler.cpp @@ -39,6 +39,10 @@ void HomeAssistantMqttHandler::setHomeAssistantConfig(HomeAssistantConfig config manufacturer = boardManufacturerToString(boardType); deviceUid = String(hostname); // Maybe configurable in the future? + #if defined(AMS_REMOTE_DEBUG) + if (debugger->isActive(RemoteDebug::INFO)) + #endif + debugger->printf_P(PSTR(" Hostname is [%s]\n"), hostname); if(strlen(config.discoveryHostname) > 0) { if(strncmp_P(config.discoveryHostname, PSTR("http"), 4) == 0) { diff --git a/lib/PriceService/src/PriceService.cpp b/lib/PriceService/src/PriceService.cpp index ffd35474..37cafd2b 100644 --- a/lib/PriceService/src/PriceService.cpp +++ b/lib/PriceService/src/PriceService.cpp @@ -276,26 +276,6 @@ bool PriceService::loop() { return false; } - #ifndef AMS2MQTT_PRICE_KEY - if(strlen(getToken()) == 0) { - return false; - } - #endif - if(strlen(config->area) == 0){ - #if defined(AMS_REMOTE_DEBUG) - if (debugger->isActive(RemoteDebug::WARNING)) - #endif - debugger->printf_P(PSTR("(PriceService) Area is missing\n")); - return false; - } - if(strlen(config->currency) == 0) { - #if defined(AMS_REMOTE_DEBUG) - if (debugger->isActive(RemoteDebug::WARNING)) - #endif - debugger->printf_P(PSTR("(PriceService) Currency is missing\n")); - return false; - } - tmElements_t tm; breakTime(entsoeTz->toLocal(t), tm); @@ -333,6 +313,18 @@ bool PriceService::loop() { if(!config->enabled) return false; + #ifndef AMS2MQTT_PRICE_KEY + if(strlen(getToken()) == 0) { + return false; + } + #endif + if(strlen(config->area) == 0){ + return false; + } + if(strlen(config->currency) == 0) { + return false; + } + bool readyToFetchForTomorrow = tomorrow == NULL && (tm.Hour > 13 || (tm.Hour == 13 && tm.Minute >= tomorrowFetchMinute)) && (lastTomorrowFetch == 0 || now - lastTomorrowFetch > (nextFetchDelayMinutes*60000)); if(today == NULL && (lastTodayFetch == 0 || now - lastTodayFetch > (nextFetchDelayMinutes*60000))) { diff --git a/lib/SvelteUi/src/AmsWebServer.cpp b/lib/SvelteUi/src/AmsWebServer.cpp index 6ad979f1..969cd665 100644 --- a/lib/SvelteUi/src/AmsWebServer.cpp +++ b/lib/SvelteUi/src/AmsWebServer.cpp @@ -1393,18 +1393,20 @@ void AmsWebServer::handleSave() { if(server.hasArg(F("w")) && server.arg(F("w")) == F("true")) { long mode = server.arg(F("nc")).toInt(); - if(mode > 0 && mode < 3) { + if(mode > 0) { 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()); + if(mode < 3) { + 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.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") { diff --git a/src/AmsToMqttBridge.cpp b/src/AmsToMqttBridge.cpp index dfc73588..c154beab 100644 --- a/src/AmsToMqttBridge.cpp +++ b/src/AmsToMqttBridge.cpp @@ -253,6 +253,7 @@ void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { if(setupMode) return; // None of this necessary in setup mode if(ch != NULL) ch->eventHandler(event, info); switch(event) { + case ARDUINO_EVENT_ETH_CONNECTED: case ARDUINO_EVENT_WIFI_STA_CONNECTED: { dnsState = 0; if(ch != NULL) { @@ -265,6 +266,7 @@ void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { } break; } + case ARDUINO_EVENT_ETH_GOT_IP: case ARDUINO_EVENT_WIFI_STA_GOT_IP: { if(dnsState == 0) { const ip_addr_t* dns = dns_getserver(0); @@ -282,6 +284,7 @@ void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) { } break; } + case ARDUINO_EVENT_ETH_DISCONNECTED: case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: { if(WiFi.getMode() == WIFI_STA) { wifi_err_reason_t reason = (wifi_err_reason_t) info.wifi_sta_disconnected.reason; @@ -1631,7 +1634,7 @@ void MQTT_connect() { HomeAssistantConfig haconf; config.getHomeAssistantConfig(haconf); NetworkConfig network; - ch->getCurrentConfig(network); + config.getNetworkConfig(network); HomeAssistantMqttHandler* hamh = (HomeAssistantMqttHandler*) &mqttHandler; hamh->setHomeAssistantConfig(haconf, network.hostname); break; @@ -1660,7 +1663,7 @@ void MQTT_connect() { HomeAssistantConfig haconf; config.getHomeAssistantConfig(haconf); NetworkConfig network; - ch->getCurrentConfig(network); + config.getNetworkConfig(network); mqttHandler = new HomeAssistantMqttHandler(mqttConfig, &Debug, (char*) commonBuffer, sysConfig.boardType, haconf, &hw, &updater, network.hostname); break; case 255: