|
@ -150,7 +150,6 @@ uint8_t nightLedBrightness = 2; // Brightness of Neopixe |
|
|
// MQTT
|
|
|
// MQTT
|
|
|
bool enableMqtt = true; |
|
|
bool enableMqtt = true; |
|
|
#ifdef MQTT_ENABLE
|
|
|
#ifdef MQTT_ENABLE
|
|
|
uint8_t mqttFailCount = 3; // Number of times mqtt-reconnect is allowed to fail. If >= mqttFailCount to further reconnects take place
|
|
|
|
|
|
uint8_t const stillOnlineInterval = 60; // Interval 'I'm still alive' is sent via MQTT (in seconds)
|
|
|
uint8_t const stillOnlineInterval = 60; // Interval 'I'm still alive' is sent via MQTT (in seconds)
|
|
|
#endif
|
|
|
#endif
|
|
|
|
|
|
|
|
@ -413,20 +412,23 @@ void IRAM_ATTR onTimer() { |
|
|
* @param message |
|
|
* @param message |
|
|
*/ |
|
|
*/ |
|
|
void createFile(fs::FS &fs, const char * path, const char * message) { |
|
|
void createFile(fs::FS &fs, const char * path, const char * message) { |
|
|
snprintf(logBuf, serialLoglength, "Writing file: %s\n", path); |
|
|
|
|
|
|
|
|
//snprintf(logBuf, serialLoglength, "Writing file: %s\n", path);
|
|
|
|
|
|
snprintf(logBuf, serialLoglength, "%s: %s", (char *) FPSTR(writingFile), path); |
|
|
loggerNl(logBuf, LOGLEVEL_DEBUG); |
|
|
loggerNl(logBuf, LOGLEVEL_DEBUG); |
|
|
File file = fs.open(path, FILE_WRITE); |
|
|
File file = fs.open(path, FILE_WRITE); |
|
|
if (!file) { |
|
|
if (!file) { |
|
|
snprintf(logBuf, serialLoglength, "Failed to open file for writing"); |
|
|
|
|
|
|
|
|
snprintf(logBuf, serialLoglength, "%s", (char *) FPSTR(failedOpenFileForWrite)); |
|
|
|
|
|
//snprintf(logBuf, serialLoglength, "Failed to open file for writing");
|
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
if (file.print(message)) { |
|
|
if (file.print(message)) { |
|
|
snprintf(logBuf, serialLoglength, "File written"); |
|
|
|
|
|
|
|
|
//snprintf(logBuf, serialLoglength, "File written");
|
|
|
|
|
|
snprintf(logBuf, serialLoglength, "%s", (char *) FPSTR(fileWritten)); |
|
|
loggerNl(logBuf, LOGLEVEL_DEBUG); |
|
|
loggerNl(logBuf, LOGLEVEL_DEBUG); |
|
|
} else { |
|
|
} else { |
|
|
Serial.println("Write failed"); |
|
|
|
|
|
snprintf(logBuf, serialLoglength, "Write failed"); |
|
|
|
|
|
|
|
|
//snprintf(logBuf, serialLoglength, "Write failed");
|
|
|
|
|
|
snprintf(logBuf, serialLoglength, "%s", (char *) FPSTR(writeFailed)); |
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
} |
|
|
} |
|
|
file.close(); |
|
|
file.close(); |
|
@ -805,11 +807,20 @@ void postHeartbeatViaMqtt(void) { |
|
|
/* Connects/reconnects to MQTT-Broker unless connection is not already available.
|
|
|
/* Connects/reconnects to MQTT-Broker unless connection is not already available.
|
|
|
Manages MQTT-subscriptions. |
|
|
Manages MQTT-subscriptions. |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
uint32_t mqttLastRetryTimestamp = 0; |
|
|
|
|
|
|
|
|
bool reconnect() { |
|
|
bool reconnect() { |
|
|
uint8_t maxRetries = 10; |
|
|
|
|
|
uint8_t connect = false; |
|
|
uint8_t connect = false; |
|
|
|
|
|
uint8_t i = 0; |
|
|
|
|
|
|
|
|
while (!MQTTclient.connected() && mqttFailCount < maxRetries) { |
|
|
|
|
|
|
|
|
if (!mqttLastRetryTimestamp || millis() - mqttLastRetryTimestamp >= mqttRetryInterval * 1000) { |
|
|
|
|
|
mqttLastRetryTimestamp = millis(); |
|
|
|
|
|
} else { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
while (!MQTTclient.connected() && i < mqttMaxRetriesPerInterval) { |
|
|
|
|
|
i++; |
|
|
snprintf(logBuf, serialLoglength, "%s %s", (char *) FPSTR(tryConnectMqttS), mqtt_server); |
|
|
snprintf(logBuf, serialLoglength, "%s %s", (char *) FPSTR(tryConnectMqttS), mqtt_server); |
|
|
loggerNl(logBuf, LOGLEVEL_NOTICE); |
|
|
loggerNl(logBuf, LOGLEVEL_NOTICE); |
|
|
|
|
|
|
|
@ -868,10 +879,8 @@ bool reconnect() { |
|
|
|
|
|
|
|
|
return MQTTclient.connected(); |
|
|
return MQTTclient.connected(); |
|
|
} else { |
|
|
} else { |
|
|
snprintf(logBuf, serialLoglength, "%s: rc=%i (%d / %d)", (char *) FPSTR(mqttConnFailed), MQTTclient.state(), mqttFailCount+1, maxRetries); |
|
|
|
|
|
|
|
|
snprintf(logBuf, serialLoglength, "%s: rc=%i (%d / %d)", (char *) FPSTR(mqttConnFailed), MQTTclient.state(), i, mqttMaxRetriesPerInterval); |
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
loggerNl(logBuf, LOGLEVEL_ERROR); |
|
|
mqttFailCount++; |
|
|
|
|
|
delay(500); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
return false; |
|
|
return false; |
|
|