This commit is contained in:
Gunnar Skjold
2025-10-16 16:14:13 +02:00
parent cd0b0b5dfc
commit 416efef681
5 changed files with 35 additions and 30 deletions

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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))) {

View File

@@ -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") {

View File

@@ -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: