-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFileConfig.ino
More file actions
91 lines (89 loc) · 3.9 KB
/
FileConfig.ino
File metadata and controls
91 lines (89 loc) · 3.9 KB
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
// Загрузка данных сохраненных в файл config.json
bool loadConfig() {
int temp_time_scr;
// Открываем файл для чтения
File configFile = SPIFFS.open("/config.json", "r");
if (!configFile) {
// если файл не найден
Serial.println("Failed to open config file");
// Создаем файл запиав в него аные по умолчанию
saveConfig();
configFile.close();
return false;
}
// Проверяем размер файла, будем использовать файл размером меньше 2048 байта
size_t size = configFile.size();
if (size > 2048) {
Serial.println("Config file size is too large");
configFile.close();
return false;
}
// загружаем файл конфигурации в глобальную переменную
jsonConfig = configFile.readString();
configFile.close();
// Резервируем память для json обекта буфер может рости по мере необходимти предпочтительно для ESP8266
DynamicJsonBuffer jsonBuffer;
// вызовите парсер JSON через экземпляр jsonBuffer
// строку возьмем из глобальной переменной String jsonConfig
JsonObject& root = jsonBuffer.parseObject(jsonConfig);
// Теперь можно получить значения из root
ssidAP = root["ssidAPName"].as<String>(); // Так получаем строку
passwordAP = root["ssidAPPassword"].as<String>();
timezone = root["timezone"]; // Так получаем число
SSDP_Name = root["SSDPName"].as<String>();
ssid = root["ssidName"].as<String>();
password = root["ssidPassword"].as<String>();
feedAmount = root["feedAmount"];
temp_time_scr = root["time_scr"];
scr_off_ms=temp_time_scr*1000;
//last_feed = root["LastFeed"].as<String>();
for (byte j=0; j<4; j++){
feedTime[j][0]=root["ah"+String(j)];
feedTime[j][1]=root["am"+String(j)];
feedTime[j][2]=root["ac"+String(j)];
}
FEED_SPEED = root["steps_delay"];
STEPS_FRW = root["steps_forward"];
STEPS_BKW = root["steps_backward"];
return true;
}
// Запись данных в файл config.json
bool saveConfig() {
int temp_time_scr;
// Резервируем памяь для json обекта буфер может рости по мере необходимти предпочтительно для ESP8266
DynamicJsonBuffer jsonBuffer;
// вызовите парсер JSON через экземпляр jsonBuffer
JsonObject& json = jsonBuffer.parseObject(jsonConfig);
// Заполняем поля json
json["SSDPName"] = SSDP_Name;
json["ssidAPName"] = ssidAP;
json["ssidAPPassword"] = passwordAP;
json["ssidName"] = ssid;
json["ssidPassword"] = password;
json["timezone"] = timezone;
json["feedAmount"] = feedAmount;
temp_time_scr=scr_off_ms/1000;
json["time_scr"] = temp_time_scr;
//json["lastFeed"] = last_feed;
for (byte j=0; j<4; j++){
json["ah" + String(j)] = feedTime[j][0];
json["am" + String(j)] = feedTime[j][1];
json["ac"+ String(j)] = feedTime[j][2];
}
json["steps_delay"] = FEED_SPEED;
json["steps_forward"] = STEPS_FRW;
json["steps_backward"] = STEPS_BKW;
// Помещаем созданный json в глобальную переменную json.printTo(jsonConfig);
json.printTo(jsonConfig);
// Открываем файл для записи
File configFile = SPIFFS.open("/config.json", "w");
if (!configFile) {
//Serial.println("Failed to open config file for writing");
configFile.close();
return false;
}
// Записываем строку json в файл
json.printTo(configFile);
configFile.close();
return true;
}