Merge pull request #45 from thefeiter/spiffs-logging

Create internal flash (LittleFS) logging functionality
This commit is contained in:
Timm Bogner 2022-07-08 18:59:05 -05:00 committed by GitHub
commit 47ba30d167
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 52 additions and 14 deletions

View File

@ -30,6 +30,9 @@
#include <SPI.h> #include <SPI.h>
#include <SD.h> #include <SD.h>
#endif #endif
#ifdef USE_FS_LOG
#include <LittleFS.h>
#endif
//#include <fdrs_functions.h> //Use global functions file //#include <fdrs_functions.h> //Use global functions file
#include "fdrs_functions.h" //Use local functions file #include "fdrs_functions.h" //Use local functions file
@ -70,6 +73,9 @@ void setup() {
#ifdef USE_SD_LOG #ifdef USE_SD_LOG
begin_SD(); begin_SD();
#endif #endif
#ifdef USE_FS_LOG
begin_FS();
#endif
//DBG(sizeof(DataReading)); //DBG(sizeof(DataReading));
#ifdef USE_WIFI #ifdef USE_WIFI

View File

@ -19,6 +19,7 @@
//#define USE_LORA //#define USE_LORA
//#define USE_WIFI //Used only for MQTT gateway //#define USE_WIFI //Used only for MQTT gateway
//#define USE_SD_LOG //Used only for SD-card logging //#define USE_SD_LOG //Used only for SD-card logging
//#define USE_FS_LOG //Used only for SPIFFS logging (esp internal filesystem)
// Peer addresses // Peer addresses
#define ESPNOW1_PEER 0x0E // ESPNOW1 Address #define ESPNOW1_PEER 0x0E // ESPNOW1 Address
@ -87,4 +88,7 @@
// SD card logging config -- Needed only for SD-card logging // 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_SS 0 //SD card Chipselect pin (Use a different pins for LoRa and SD)
#define SD_FILENAME "fdrs_log.csv" // length max. 32 #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

View File

@ -180,27 +180,39 @@ void sendSD(const char filename[32]) {
DBG("Logging to SD card."); DBG("Logging to SD card.");
File logfile = SD.open(filename, FILE_WRITE); File logfile = SD.open(filename, FILE_WRITE);
for (int i = 0; i < ln; i++) { for (int i = 0; i < ln; i++) {
char linebuf[32];
#ifdef USE_WIFI #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 #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 #endif
logfile.print(","); logfile.println(linebuf);
logfile.print(theData[i].id);
logfile.print(",");
logfile.print(theData[i].t);
logfile.print(",");
logfile.println(theData[i].d);
} }
logfile.close(); logfile.close();
#endif #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 #ifdef USE_WIFI
if(!silent) DBG("Connecting MQTT..."); if(!silent) DBG("Connecting MQTT...");
for (int i = 1; i<=attempts; i++) { for (short int i = 1; i<=attempts; i++) {
// Attempt to connect // Attempt to connect
if (client.connect("FDRS_GATEWAY", mqtt_user, mqtt_pass)) { if (client.connect("FDRS_GATEWAY", mqtt_user, mqtt_pass)) {
// Subscribe // Subscribe
@ -209,11 +221,11 @@ void reconnect(int attempts, bool silent) {
return; return;
} else { } else {
if(!silent) { if(!silent) {
char msg[15]; char msg[23];
sprintf(msg, " Attempt %d/%d",i,attempts); sprintf(msg, " Attempt %d/%d",i,attempts);
DBG(msg); DBG(msg);
} }
if(attempts=!1){ if((attempts=!1)){
delay(3000); delay(3000);
} }
} }
@ -228,7 +240,7 @@ void reconnect(int attempts){
void mqtt_callback(char* topic, byte * message, unsigned int length) { void mqtt_callback(char* topic, byte * message, unsigned int length) {
String incomingString; String incomingString;
DBG(topic); DBG(topic);
for (int i = 0; i < length; i++) { for (unsigned int i = 0; i < length; i++) {
incomingString += (char)message[i]; incomingString += (char)message[i];
} }
StaticJsonDocument<2048> doc; StaticJsonDocument<2048> doc;
@ -256,6 +268,7 @@ void mqtt_publish(const char* payload){
if(!client.publish(TOPIC_DATA, payload)){ if(!client.publish(TOPIC_DATA, payload)){
DBG(" Error on sending MQTT"); DBG(" Error on sending MQTT");
sendSD(SD_FILENAME); sendSD(SD_FILENAME);
sendFS(FS_FILENAME);
} }
#endif #endif
} }
@ -651,3 +664,18 @@ void begin_SD(){
} }
#endif #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
}