Skip to content

Commit

Permalink
Basic settings persistence working
Browse files Browse the repository at this point in the history
  • Loading branch information
amalabey committed Dec 6, 2020
1 parent 88cf05f commit f760fc3
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 32 deletions.
6 changes: 4 additions & 2 deletions include/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ struct Settings_t
class Configuration
{
private:
Settings_t readFromSerial(HardwareSerial &serial);
Settings_t readFromFileSystem(fs::FS &fs);
void writeToFileSystem(fs::FS &fs, Settings_t settings);
public:
Settings_t getSettings();
Settings_t getSettings(fs::FS &fs, HardwareSerial &serial);
bool isPersisted(fs::FS &fs);
void persistSettings(fs::FS &fs, Settings_t settings);
};
58 changes: 34 additions & 24 deletions src/Configuration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

#include "Credentials.h"

const char *CONFIG_FILE_NAME = "settings";
const char *CONFIG_FILE_NAME = "/settings.txt";

Settings_t Configuration::getSettings()
Settings_t Configuration:: readFromSerial(HardwareSerial &serial)
{
Settings_t settings;
settings.wifiSsid = (char *)WIFI_SSID;
Expand All @@ -21,7 +21,22 @@ Settings_t Configuration::getSettings()
return settings;
}

void Configuration::writeToFileSystem(fs::FS &fs, Settings_t settings)
Settings_t Configuration::getSettings(fs::FS &fs, HardwareSerial &serial)
{
if(this->isPersisted(fs))
{
return this->readFromFileSystem(fs);
}else{
return this->readFromSerial(serial);
}
}

bool Configuration::isPersisted(fs::FS &fs)
{
return fs.exists(CONFIG_FILE_NAME);
}

void Configuration::persistSettings(fs::FS &fs, Settings_t settings)
{
Serial.printf("Writing file: %s\r\n", CONFIG_FILE_NAME);

Expand All @@ -31,20 +46,14 @@ void Configuration::writeToFileSystem(fs::FS &fs, Settings_t settings)
return;
}

String message;
message += settings.wifiSsid + '\n';
message += settings.wifiPassword + '\n';
message += settings.hostName + '\n';
message += settings.tenantId + '\n';
message += settings.userName + '\n';
message += settings.password + '\n';
message += settings.clientId + '\n';
file.println(settings.wifiSsid);
file.println(settings.wifiPassword);
file.println(settings.hostName);
file.println(settings.tenantId);
file.println(settings.userName);
file.println(settings.password);
file.println(settings.clientId);

if(file.print(message)){
Serial.println("- file written");
} else {
Serial.println("- write failed");
}
file.close();
}

Expand All @@ -53,7 +62,7 @@ Settings_t Configuration::readFromFileSystem(fs::FS &fs)
{
Serial.printf("Reading file: %s\r\n", CONFIG_FILE_NAME);

char buffer[4096];
char buffer[4096];

File file = fs.open(CONFIG_FILE_NAME, FILE_READ);
if (!file || file.isDirectory())
Expand All @@ -69,15 +78,16 @@ Settings_t Configuration::readFromFileSystem(fs::FS &fs)
buffer[length++] = c;
}
buffer[length] = '\0';
Serial.printf("Buffer: %s \r\n", buffer);

Settings_t settings;
settings.wifiSsid = strtok(buffer, "\n");
settings.wifiPassword = strtok(NULL, "\n");
settings.hostName = strtok(NULL, "\n");
settings.tenantId = strtok(NULL, "\n");
settings.userName = strtok(NULL, "\n");
settings.password = strtok(NULL, "\n");
settings.clientId = strtok(NULL, "\n");
settings.wifiSsid = strtok(buffer, "\r\n");
settings.wifiPassword = strtok(NULL, "\r\n");
settings.hostName = strtok(NULL, "\r\n");
settings.tenantId = strtok(NULL, "\r\n");
settings.userName = strtok(NULL, "\r\n");
settings.password = strtok(NULL, "\r\n");
settings.clientId = strtok(NULL, "\r\n");

file.close();

Expand Down
24 changes: 18 additions & 6 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,25 @@
#include "Configuration.h"
#endif

#define FORMAT_SPIFFS_IF_FAILED true

WiFiClientSecure _wifiClient = WiFiClientSecure();
CumulocityClient _client = CumulocityClient(_wifiClient, "00000000");
CumulocityClient _client = CumulocityClient(_wifiClient, (char *)"00000000");

void setup()
{
Serial.begin(115200);
if (!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED))
{
Serial.println("SPIFFS Mount Failed");
return;
}
//SPIFFS.format();

Configuration _config;
Settings_t settings = _config.getSettings();
Settings_t settings = _config.getSettings(SPIFFS, Serial);

WiFi.begin(settings.wifiSsid, settings.wifiPassword);

Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED)
{
Expand All @@ -33,17 +40,22 @@ void setup()

_client.setDeviceId(settings.clientId);
_client.connect(settings.hostName, 8883, settings.tenantId, settings.userName, settings.password);
_client.registerDevice(settings.clientId, "c8y_esp32");
_client.registerDevice(settings.clientId, (char *)"c8y_esp32");

if (!_config.isPersisted(SPIFFS))
{
_config.persistSettings(SPIFFS, settings);
}
}

void loop()
{
delay(1000);
_client.loop();
_client.createMeasurement("Temperature", "T", "20.5", "*C");
_client.createMeasurement("Temperature", "T", "20.5", (char *)"*C");

int8_t rssi = WiFi.RSSI();
char rssiStr[10];
sprintf(rssiStr, "%d", rssi);
_client.createMeasurement("SignalStrength", "T", rssiStr, "*m");
_client.createMeasurement("SignalStrength", "T", rssiStr, (char *)"*m");
}

0 comments on commit f760fc3

Please sign in to comment.