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 // 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

@ -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();
} }
@ -213,4 +214,14 @@ bool SesameController::convertHexMessageToBinary(const char* str) {
receivedMessageBuffer[pos/2] = (uint8_t)(hashmap[idx0] << 4) | hashmap[idx1]; receivedMessageBuffer[pos/2] = (uint8_t)(hashmap[idx0] << 4) | hashmap[idx1];
}; };
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 {