Compare commits

..

2 Commits

Author SHA1 Message Date
Christoph Hagen
69a8f32179 Update dependency 2023-11-04 11:14:55 +01:00
Christoph Hagen
e99474c3cf Reset wifi and socket once per day 2023-11-04 11:14:40 +01:00
5 changed files with 20 additions and 1 deletions

View File

@ -20,6 +20,8 @@ struct WifiConfiguration {
// The interval to reconnect to WiFi if the connection is broken // The interval to reconnect to WiFi if the connection is broken
uint32_t reconnectInterval; uint32_t reconnectInterval;
uint32_t periodicReconnectInterval;
}; };
struct KeyConfiguration { struct KeyConfiguration {
@ -76,4 +78,6 @@ private:
void prepareResponseBuffer(SesameEvent event, uint8_t deviceId = 0); void prepareResponseBuffer(SesameEvent event, uint8_t deviceId = 0);
void sendPreparedLocalResponse(AsyncWebServerRequest *request); void sendPreparedLocalResponse(AsyncWebServerRequest *request);
void sendPreparedServerResponse(); void sendPreparedServerResponse();
void periodicallyReconnectWifiAndSocket(uint32_t millis);
}; };

View File

@ -49,6 +49,9 @@ constexpr const char* networkName = "Sesame-Device";
// The interval to reconnect to WiFi if the connection is broken // The interval to reconnect to WiFi if the connection is broken
constexpr uint32_t wifiReconnectInterval = 10000; constexpr uint32_t wifiReconnectInterval = 10000;
// The interval to reconnect to WiFi if the connection is broken
constexpr uint32_t wifiPeriodicReconnectInterval = 86400;
/* Local server */ /* Local server */
// The port for the local server to directly receive messages over WiFi // The port for the local server to directly receive messages over WiFi

View File

@ -14,6 +14,6 @@ board = az-delivery-devkit-v4
framework = arduino framework = arduino
lib_deps = lib_deps =
links2004/WebSockets@^2.3.7 links2004/WebSockets@^2.3.7
madhephaestus/ESP32Servo@^0.13.0 madhephaestus/ESP32Servo@^1.1.0
ottowinter/ESPAsyncWebServer-esphome@^3.0.0 ottowinter/ESPAsyncWebServer-esphome@^3.0.0
monitor_speed = 115200 monitor_speed = 115200

View File

@ -46,6 +46,7 @@ void SesameController::loop(uint32_t millis) {
server.loop(); server.loop();
servo.loop(millis); servo.loop(millis);
periodicallyReconnectWifiAndSocket(millis);
ensureWiFiConnection(millis); ensureWiFiConnection(millis);
ensureWebSocketConnection(); ensureWebSocketConnection();
} }
@ -214,3 +215,13 @@ bool SesameController::convertHexMessageToBinary(const char* str) {
}; };
return true; return true;
} }
void SesameController::periodicallyReconnectWifiAndSocket(uint32_t millis) {
static uint32_t nextWifiReconnect = wifiConfig.periodicReconnectInterval;
if (millis > nextWifiReconnect) {
nextWifiReconnect += wifiConfig.periodicReconnectInterval;
server.disconnect();
WiFi.disconnect();
}
}

View File

@ -49,6 +49,7 @@ void setup() {
.password = wifiPassword, .password = wifiPassword,
.networkName = networkName, .networkName = networkName,
.reconnectInterval = wifiReconnectInterval, .reconnectInterval = wifiReconnectInterval,
.periodicReconnectInterval = wifiPeriodicReconnectInterval,
}; };
KeyConfiguration keyConfig { KeyConfiguration keyConfig {