Reset wifi and socket once per day

This commit is contained in:
Christoph Hagen 2023-11-04 11:14:40 +01:00
parent 684df16eb1
commit e99474c3cf
4 changed files with 19 additions and 0 deletions

View File

@ -20,6 +20,8 @@ struct WifiConfiguration {
// The interval to reconnect to WiFi if the connection is broken
uint32_t reconnectInterval;
uint32_t periodicReconnectInterval;
};
struct KeyConfiguration {
@ -76,4 +78,6 @@ private:
void prepareResponseBuffer(SesameEvent event, uint8_t deviceId = 0);
void sendPreparedLocalResponse(AsyncWebServerRequest *request);
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
constexpr uint32_t wifiReconnectInterval = 10000;
// The interval to reconnect to WiFi if the connection is broken
constexpr uint32_t wifiPeriodicReconnectInterval = 86400;
/* Local server */
// The port for the local server to directly receive messages over WiFi

View File

@ -46,6 +46,7 @@ void SesameController::loop(uint32_t millis) {
server.loop();
servo.loop(millis);
periodicallyReconnectWifiAndSocket(millis);
ensureWiFiConnection(millis);
ensureWebSocketConnection();
}
@ -213,4 +214,14 @@ bool SesameController::convertHexMessageToBinary(const char* str) {
receivedMessageBuffer[pos/2] = (uint8_t)(hashmap[idx0] << 4) | hashmap[idx1];
};
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,
.networkName = networkName,
.reconnectInterval = wifiReconnectInterval,
.periodicReconnectInterval = wifiPeriodicReconnectInterval,
};
KeyConfiguration keyConfig {