diff --git a/GUI-Generic.ino b/GUI-Generic.ino index 5c9b201a..eeed7c91 100644 --- a/GUI-Generic.ino +++ b/GUI-Generic.ino @@ -199,5 +199,6 @@ void setup() { void loop() { SuplaDevice.iterate(); + delay(25); drd.loop(); } diff --git a/SuplaCommonPROGMEM.h b/SuplaCommonPROGMEM.h index 2d2cab9f..c58d94a8 100644 --- a/SuplaCommonPROGMEM.h +++ b/SuplaCommonPROGMEM.h @@ -44,14 +44,13 @@ const char ODWROCONE[] PROGMEM = "LOW"; const char NORMALNE[] PROGMEM = "HIGH"; const char* const LEVEL_P[] PROGMEM = {ODWROCONE, NORMALNE}; -//const char WYLACZONY[] PROGMEM = "WYŁĄCZONY"; const char PAMIETAJSTAN[] PROGMEM = "PAMIĘTAJ STAN"; const char* const MEMORY_P[] PROGMEM = {OFF, ON, PAMIETAJSTAN}; -const char WCISNIECIE[] PROGMEM = "WCIŚNIĘCIE"; -const char ZWOLNIENIE[] PROGMEM = "ZWOLNIENIE"; -const char ZMIANASTANU[] PROGMEM = "ZMIANA STANU"; -const char* const TRIGGER_P[] PROGMEM = {WCISNIECIE, ZWOLNIENIE, ZMIANASTANU}; +const char ON_PRESS[] PROGMEM = "MONOSTABILNY"; +const char ON_RELEASE[] PROGMEM = "ZWOLNIENIE"; +const char ON_CHANGE[] PROGMEM = "BISTABILNY"; +const char* const TRIGGER_P[] PROGMEM = {ON_PRESS, ON_RELEASE, ON_CHANGE}; String GIPOString(uint8_t gpio); String BME280String(uint8_t adr); diff --git a/SuplaConfigESP.cpp b/SuplaConfigESP.cpp index 1ad49d41..e4e50c0b 100644 --- a/SuplaConfigESP.cpp +++ b/SuplaConfigESP.cpp @@ -90,7 +90,7 @@ void SuplaConfigESP::runAction(int event, int action) { } countPresses++; - if (countPresses == 3) { + if (countPresses == 10) { // Serial.println(F("CONFIG_MODE_3_PRESSES")); configModeInit(); countPresses = 0; diff --git a/SuplaGuiWiFi.h b/SuplaGuiWiFi.h index 14160f60..7194892c 100644 --- a/SuplaGuiWiFi.h +++ b/SuplaGuiWiFi.h @@ -59,36 +59,46 @@ class GUIESPWifi : public Supla::ESPWifi { void setup() { if (ConfigESP->configModeESP == NORMAL_MODE) { - gotIpEventHandler = WiFi.onStationModeGotIP([](const WiFiEventStationModeGotIP &event) { - Serial.print(F("local IP: ")); - Serial.println(WiFi.localIP()); - Serial.print(F("subnetMask: ")); - Serial.println(WiFi.subnetMask()); - Serial.print(F("gatewayIP: ")); - Serial.println(WiFi.gatewayIP()); - long rssi = WiFi.RSSI(); - Serial.print(F("Signal strength (RSSI): ")); - Serial.print(rssi); - Serial.println(F(" dBm")); - }); - disconnectedEventHandler = - WiFi.onStationModeDisconnected([](const WiFiEventStationModeDisconnected &event) { Serial.println(F("WiFi station disconnected")); }); - - Serial.print(F("WiFi: establishing connection with SSID: \"")); - Serial.print(ssid); - Serial.println(F("\"")); - WiFi.hostname(hostname); - Serial.print(F("Host name: ")); - Serial.println(WiFi.hostname()); - - WiFi.softAPdisconnect(true); - WiFi.setAutoConnect(false); - WiFi.mode(WIFI_STA); - - if (!isReady()) { - WiFi.begin(ssid, password); + if (!wifiConfigured) { + wifiConfigured = true; + gotIpEventHandler = WiFi.onStationModeGotIP([](const WiFiEventStationModeGotIP &event) { + Serial.print(F("local IP: ")); + Serial.println(WiFi.localIP()); + Serial.print(F("subnetMask: ")); + Serial.println(WiFi.subnetMask()); + Serial.print(F("gatewayIP: ")); + Serial.println(WiFi.gatewayIP()); + long rssi = WiFi.RSSI(); + Serial.print(F("Signal strength (RSSI): ")); + Serial.print(rssi); + Serial.println(F(" dBm")); + }); + disconnectedEventHandler = + WiFi.onStationModeDisconnected([](const WiFiEventStationModeDisconnected &event) { Serial.println(F("WiFi station disconnected")); }); + + Serial.print(F("WiFi: establishing connection with SSID: \"")); + Serial.print(ssid); + Serial.println(F("\"")); + WiFi.hostname(hostname); + Serial.print(F("Host name: ")); + Serial.println(WiFi.hostname()); + + WiFi.softAPdisconnect(true); + WiFi.setAutoConnect(false); + WiFi.mode(WIFI_STA); + + if (!isReady()) { + WiFi.begin(ssid, password); + } + } + else { + Serial.println(F("WiFi: resetting WiFi connection")); + if (client) { + delete client; + client = nullptr; + } + WiFi.reconnect(); } - yield(); } } diff --git a/SuplaTemplateBoard.cpp b/SuplaTemplateBoard.cpp index 5d051ca0..a2757201 100644 --- a/SuplaTemplateBoard.cpp +++ b/SuplaTemplateBoard.cpp @@ -9,7 +9,7 @@ void chooseTemplateBoard(uint8_t board) { ConfigESP->setGpio(13, FUNCTION_CFG_LED, HIGH); ConfigManager->set(KEY_MAX_BUTTON, "1"); - ConfigESP->setGpio(14, 1, FUNCTION_BUTTON, Supla::ON_CHANGE); + ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_PRESS); ConfigManager->set(KEY_MAX_RELAY, "1"); ConfigESP->setGpio(12, 1, FUNCTION_RELAY, HIGH, MEMORY_RELAY_RESTORE); @@ -19,7 +19,7 @@ void chooseTemplateBoard(uint8_t board) { ConfigESP->setGpio(13, FUNCTION_CFG_LED, HIGH); ConfigManager->set(KEY_MAX_BUTTON, "1"); - ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_CHANGE); + ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_PRESS); ConfigManager->set(KEY_MAX_RELAY, "1"); ConfigESP->setGpio(12, 1, FUNCTION_RELAY, HIGH, MEMORY_RELAY_RESTORE); @@ -31,7 +31,7 @@ void chooseTemplateBoard(uint8_t board) { ConfigESP->setGpio(13, FUNCTION_CFG_LED, HIGH); ConfigManager->set(KEY_MAX_BUTTON, "1"); - ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_CHANGE); + ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_PRESS); ConfigManager->set(KEY_MAX_RELAY, "1"); ConfigESP->setGpio(12, 1, FUNCTION_RELAY, HIGH, MEMORY_RELAY_RESTORE); @@ -41,8 +41,8 @@ void chooseTemplateBoard(uint8_t board) { ConfigESP->setGpio(13, FUNCTION_CFG_LED, HIGH); ConfigManager->set(KEY_MAX_BUTTON, "2"); - ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_CHANGE); - ConfigESP->setGpio(9, 2, FUNCTION_BUTTON, Supla::ON_CHANGE); + ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_PRESS); + ConfigESP->setGpio(9, 2, FUNCTION_BUTTON, Supla::ON_PRESS); ConfigManager->set(KEY_MAX_RELAY, "2"); ConfigESP->setGpio(12, 1, FUNCTION_RELAY, HIGH, MEMORY_RELAY_RESTORE); @@ -53,9 +53,9 @@ void chooseTemplateBoard(uint8_t board) { ConfigESP->setGpio(13, FUNCTION_CFG_LED, HIGH); ConfigManager->set(KEY_MAX_BUTTON, "3"); - ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_CHANGE); - ConfigESP->setGpio(9, 2, FUNCTION_BUTTON, Supla::ON_CHANGE); - ConfigESP->setGpio(10, 3, FUNCTION_BUTTON, Supla::ON_CHANGE); + ConfigESP->setGpio(0, 1, FUNCTION_BUTTON, Supla::ON_PRESS); + ConfigESP->setGpio(9, 2, FUNCTION_BUTTON, Supla::ON_PRESS); + ConfigESP->setGpio(10, 3, FUNCTION_BUTTON, Supla::ON_PRESS); ConfigManager->set(KEY_MAX_RELAY, "3"); ConfigESP->setGpio(12, 1, FUNCTION_RELAY, HIGH, MEMORY_RELAY_RESTORE); diff --git a/SuplaWebPageRelay.h b/SuplaWebPageRelay.h index b1d8b89d..dfeeaad4 100644 --- a/SuplaWebPageRelay.h +++ b/SuplaWebPageRelay.h @@ -15,14 +15,14 @@ #define INPUT_RELAY_DURATION "ird" #define INPUT_ROLLERSHUTTER "irsr" -#if defined(SUPLA_RELAY) || defined(SUPLA_ROLLERSHUTTER) - enum _memory_relay { MEMORY_RELAY_OFF, MEMORY_RELAY_ON, MEMORY_RELAY_RESTORE }; +#if defined(SUPLA_RELAY) || defined(SUPLA_ROLLERSHUTTER) + class SuplaWebPageRelay { public: SuplaWebPageRelay();