diff --git a/FDRS_Gateway/FDRS_Gateway.ino b/FDRS_Gateway/FDRS_Gateway.ino index 1204c01..690236f 100644 --- a/FDRS_Gateway/FDRS_Gateway.ino +++ b/FDRS_Gateway/FDRS_Gateway.ino @@ -30,6 +30,9 @@ #include #include #endif +#ifdef USE_FS_LOG +#include +#endif //#include //Use global functions file #include "fdrs_functions.h" //Use local functions file @@ -70,6 +73,9 @@ void setup() { #ifdef USE_SD_LOG begin_SD(); #endif +#ifdef USE_FS_LOG + begin_FS(); +#endif //DBG(sizeof(DataReading)); #ifdef USE_WIFI diff --git a/FDRS_Gateway/fdrs_config.h b/FDRS_Gateway/fdrs_config.h index 9570710..7d7f4d2 100644 --- a/FDRS_Gateway/fdrs_config.h +++ b/FDRS_Gateway/fdrs_config.h @@ -19,6 +19,7 @@ //#define USE_LORA //#define USE_WIFI //Used only for MQTT gateway //#define USE_SD_LOG //Used only for SD-card logging +//#define USE_FS_LOG //Used only for SPIFFS logging (esp internal filesystem) // Peer addresses #define ESPNOW1_PEER 0x0E // ESPNOW1 Address @@ -87,4 +88,7 @@ // SD card logging config -- Needed only for SD-card logging #define SD_SS 0 //SD card Chipselect pin (Use a different pins for LoRa and SD) -#define SD_FILENAME "fdrs_log.csv" // length max. 32 \ No newline at end of file +#define SD_FILENAME "fdrs_log.csv" // length max. 32 + +// Internal flash logging config -- Needed only for internal flash logging +#define FS_FILENAME "fdrs_log.csv" // length max. 32 \ No newline at end of file diff --git a/FDRS_Gateway/fdrs_functions.h b/FDRS_Gateway/fdrs_functions.h index 8a264b7..283965e 100644 --- a/FDRS_Gateway/fdrs_functions.h +++ b/FDRS_Gateway/fdrs_functions.h @@ -180,27 +180,39 @@ void sendSD(const char filename[32]) { DBG("Logging to SD card."); File logfile = SD.open(filename, FILE_WRITE); for (int i = 0; i < ln; i++) { + char linebuf[32]; #ifdef USE_WIFI - logfile.print(timeClient.getEpochTime()); + sprintf(linebuf, "%ld,%d,%d,%g",timeClient.getEpochTime(),theData[i].id,theData[i].t,theData[i].d); #else - logfile.print(seconds_since_reset); + sprintf(linebuf, "%ld,%d,%d,%g",seconds_since_reset,theData[i].id,theData[i].t,theData[i].d); #endif - logfile.print(","); - logfile.print(theData[i].id); - logfile.print(","); - logfile.print(theData[i].t); - logfile.print(","); - logfile.println(theData[i].d); + logfile.println(linebuf); } logfile.close(); #endif } -void reconnect(int attempts, bool silent) { +void sendFS(const char filename[32]) { + #ifdef USE_FS_LOG + DBG("Logging to internal flash."); + File logfile = LittleFS.open(filename, "a"); + for (int i = 0; i < ln; i++) { + char linebuf[32]; + #ifdef USE_WIFI + sprintf(linebuf, "%ld,%d,%d,%g",timeClient.getEpochTime(),theData[i].id,theData[i].t,theData[i].d); + #else + sprintf(linebuf, "%ld,%d,%d,%g",seconds_since_reset,theData[i].id,theData[i].t,theData[i].d); + #endif + logfile.println(linebuf); + } + logfile.close(); + #endif +} +void reconnect(short int attempts, bool silent) { #ifdef USE_WIFI if(!silent) DBG("Connecting MQTT..."); - for (int i = 1; i<=attempts; i++) { + for (short int i = 1; i<=attempts; i++) { // Attempt to connect if (client.connect("FDRS_GATEWAY", mqtt_user, mqtt_pass)) { // Subscribe @@ -209,11 +221,11 @@ void reconnect(int attempts, bool silent) { return; } else { if(!silent) { - char msg[15]; + char msg[23]; sprintf(msg, " Attempt %d/%d",i,attempts); DBG(msg); } - if(attempts=!1){ + if((attempts=!1)){ delay(3000); } } @@ -228,7 +240,7 @@ void reconnect(int attempts){ void mqtt_callback(char* topic, byte * message, unsigned int length) { String incomingString; DBG(topic); - for (int i = 0; i < length; i++) { + for (unsigned int i = 0; i < length; i++) { incomingString += (char)message[i]; } StaticJsonDocument<2048> doc; @@ -256,6 +268,7 @@ void mqtt_publish(const char* payload){ if(!client.publish(TOPIC_DATA, payload)){ DBG(" Error on sending MQTT"); sendSD(SD_FILENAME); + sendFS(FS_FILENAME); } #endif } @@ -651,3 +664,18 @@ void begin_SD(){ } #endif } +void begin_FS(){ + #ifdef USE_FS_LOG + DBG("Initializing LittleFS..."); + + if(!LittleFS.begin()) + { + Serial.println(" initialization failed"); + while (1); + } + else + { + Serial.println(" LittleFS initialized"); + } + #endif +}