-
Notifications
You must be signed in to change notification settings - Fork 94
/
Copy pathesp8266_config_spiffs.ino
123 lines (102 loc) · 2.35 KB
/
esp8266_config_spiffs.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <Arduino.h>
#include <ArduinoJson.h>
#include <FS.h>
#if defined(ESP32)
#include <SPIFFS.h>
#endif
#ifndef ARDUINOJSON_VERSION
#error ArduinoJson version 5 not found, please include ArduinoJson.h in your .ino file
#endif
#if ARDUINOJSON_VERSION_MAJOR != 5
#error ArduinoJson version 5 is required
#endif
int var1, var2, var3;
bool loadConfig() {
File configFile = SPIFFS.open("/config.json", "r");
if (!configFile) {
Serial.println("Failed to open config file for reading");
return false;
}
size_t size = configFile.size();
if (size > 1024) {
Serial.println("Config file size is too large");
return false;
}
std::unique_ptr<char[]> buf(new char[size]);
configFile.readBytes(buf.get(), size);
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(buf.get());
if (!root.success()) {
Serial.println("Failed to parse config file");
return false;
}
if (root.containsKey("var1"))
var1 = root["var1"];
if (root.containsKey("var2"))
var2 = root["var2"];
if (root.containsKey("var3"))
var3 = root["var3"];
return true;
}
bool saveConfig() {
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root["var1"] = var1;
root["var2"] = var2;
root["var3"] = var3;
File configFile = SPIFFS.open("/config.json", "w");
if (!configFile) {
Serial.println("Failed to open config file for writing");
return false;
}
root.printTo(configFile);
return true;
}
bool printConfig() {
Serial.print("var1 = ");
Serial.println(var1);
Serial.print("var2 = ");
Serial.println(var2);
Serial.print("var3 = ");
Serial.println(var3);
return true;
}
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
delay(1000);
Serial.println("");
Serial.println("setup start");
if (SPIFFS.begin()) {
Serial.println("SPIFFS ok");
}
else {
Serial.println("SPIFFS fail");
}
if (loadConfig()) {
Serial.println("loadConfig ok");
}
else {
Serial.println("loadConfig fail");
}
if (printConfig()) {
Serial.println("printConfig ok");
}
else {
Serial.println("printConfig fail");
}
if (saveConfig()) {
Serial.println("saveConfig ok");
}
else {
Serial.println("loadConfig fail");
}
SPIFFS.end();
Serial.println("setup end");
}
void loop() {
delay(1000);
Serial.print(".");
}