mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-19 23:22:16 +03:00
Add example for storing JSON config file in SPIFFS
This commit is contained in:
parent
7bfd425754
commit
34be16c8da
97
libraries/esp8266/examples/ConfigFile/ConfigFile.ino
Normal file
97
libraries/esp8266/examples/ConfigFile/ConfigFile.ino
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
// Example: storing JSON configuration file in flash file system
|
||||||
|
//
|
||||||
|
// Uses ArduinoJson library by Benoit Blanchon.
|
||||||
|
// https://github.com/bblanchon/ArduinoJson
|
||||||
|
//
|
||||||
|
// Created Aug 10, 2015 by Ivan Grokhotkov.
|
||||||
|
//
|
||||||
|
// This example code is in the public domain.
|
||||||
|
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include "FS.h"
|
||||||
|
|
||||||
|
bool loadConfig() {
|
||||||
|
File configFile = SPIFFS.open("/config.json", "r");
|
||||||
|
if (!configFile) {
|
||||||
|
Serial.println("Failed to open config file");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t size = configFile.size();
|
||||||
|
if (size > 1024) {
|
||||||
|
Serial.println("Config file size is too large");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allocate a buffer to store contents of the file.
|
||||||
|
std::unique_ptr<char[]> buf(new char[size]);
|
||||||
|
|
||||||
|
// We don't use String here because ArduinoJson library requires the input
|
||||||
|
// buffer to be mutable. If you don't use ArduinoJson, you may as well
|
||||||
|
// use configFile.readString instead.
|
||||||
|
configFile.readBytes(buf.get(), size);
|
||||||
|
|
||||||
|
StaticJsonBuffer<200> jsonBuffer;
|
||||||
|
JsonObject& json = jsonBuffer.parseObject(buf.get());
|
||||||
|
|
||||||
|
if (!json.success()) {
|
||||||
|
Serial.println("Failed to parse config file");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* serverName = json["serverName"];
|
||||||
|
const char* accessToken = json["accessToken"];
|
||||||
|
|
||||||
|
// Real world application would store these values in some variables for
|
||||||
|
// later use.
|
||||||
|
|
||||||
|
Serial.print("Loaded serverName: ");
|
||||||
|
Serial.println(serverName);
|
||||||
|
Serial.print("Loaded accessToken: ");
|
||||||
|
Serial.println(accessToken);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool saveConfig() {
|
||||||
|
StaticJsonBuffer<200> jsonBuffer;
|
||||||
|
JsonObject& json = jsonBuffer.createObject();
|
||||||
|
json["serverName"] = "api.example.com";
|
||||||
|
json["accessToken"] = "128du9as8du12eoue8da98h123ueh9h98";
|
||||||
|
|
||||||
|
File configFile = SPIFFS.open("/config.json", "w");
|
||||||
|
if (!configFile) {
|
||||||
|
Serial.println("Failed to open config file for writing");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
json.printTo(configFile);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println("");
|
||||||
|
delay(1000);
|
||||||
|
Serial.println("Mounting FS...");
|
||||||
|
|
||||||
|
if (!SPIFFS.begin()) {
|
||||||
|
Serial.println("Failed to mount file system");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!saveConfig()) {
|
||||||
|
Serial.println("Failed to save config");
|
||||||
|
} else {
|
||||||
|
Serial.println("Config saved");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!loadConfig()) {
|
||||||
|
Serial.println("Failed to load config");
|
||||||
|
} else {
|
||||||
|
Serial.println("Config loaded");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user