diff --git a/libraries/esp8266/examples/ConfigFile/ConfigFile.ino b/libraries/esp8266/examples/ConfigFile/ConfigFile.ino new file mode 100644 index 000000000..3503a10b5 --- /dev/null +++ b/libraries/esp8266/examples/ConfigFile/ConfigFile.ino @@ -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 +#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 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() { +}