mirror of
https://github.com/timmbogner/Farm-Data-Relay-System
synced 2024-11-10 07:10:42 +00:00
Merge pull request #45 from thefeiter/spiffs-logging
Create internal flash (LittleFS) logging functionality
This commit is contained in:
commit
47ba30d167
@ -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
|
||||||
|
@ -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
|
@ -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
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user