Profile management added.

This commit is contained in:
2024-03-09 08:29:51 +00:00
parent 6fffdc8743
commit cefa5d99b0
3 changed files with 190 additions and 23 deletions

View File

@@ -138,6 +138,85 @@ String getStatus(void)
// return JSON.stringify(jsonStatus);
}
String getProfilesList(void)
{
JsonDocument jsonList;
String list;
settings.begin("profiles");
list = settings.getString("list");
Serial.println(list);
deserializeJson(jsonList, list);
settings.end();
serializeJson(jsonList,list);
return list;
}
String getProfile(AsyncWebServerRequest * request)
{
int params = request->params();
if(params > 0){
JsonDocument jsonProfile;
String name = request->getParam("name")->value();
settings.begin("profiles");
jsonProfile["name"] = name;
jsonProfile["values"] = serialized(settings.getString(name.c_str()));
settings.end();
String profile;
serializeJson(jsonProfile, profile);
Serial.println(profile);
return profile;
}
}
boolean saveProfile(AsyncWebServerRequest * request)
{
int params = request->params();
if(params > 1){
String name = request->getParam("name",true)->value();
String values = request->getParam("values",true)->value();
Serial.print(name);Serial.println(values);
settings.begin("profiles");
if(!settings.isKey(name.c_str()))
{
//add new profile to list
JsonDocument jsonList;
deserializeJson(jsonList,settings.getString("list"));
jsonList.add(name);
String list;
serializeJson(jsonList,list);
Serial.println(list);
settings.putString("list",list);
}
settings.putString(name.c_str(),values);
settings.end();
return true;
}
return false;
}
boolean deleteProfile(AsyncWebServerRequest * request)
{
bool res = false;
int params = request->params();
if(params == 1){
settings.begin("profiles");
JsonDocument jsonList;
String name = request->getParam("name",true)->value();
deserializeJson(jsonList,settings.getString("list"));
if(jsonList.containsKey(name)){
//remove from list
jsonList.remove(name);
String list;
serializeJson(jsonList,list);
settings.putString("list",list);
//remove profile
settings.remove(name.c_str());
res = true;
}
settings.end();
}
return res;
}
String getPID(AsyncWebServerRequest * request)
{
JsonDocument jsonPID;
@@ -413,7 +492,16 @@ server.addHandler(new SPIFFSEditor(SPIFFS,http_username,http_password));
// }
request->send(200, "text/plain", (String)target);
});
server.on("/profile", HTTP_POST,[](AsyncWebServerRequest *request){
server.on("/profile/list", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getProfilesList());
});
server.on("/profile/save", HTTP_POST,[](AsyncWebServerRequest *request){
request->send(200, "text/plain", saveProfile(request) ? "OK": "Error");
});
server.on("/profile/delete", HTTP_POST,[](AsyncWebServerRequest *request){
request->send(200, "text/plain", deleteProfile(request) ? "OK": "Error");
});
server.on("/profile/run", HTTP_POST,[](AsyncWebServerRequest *request){
// AsyncCallbackJsonWebHandler *handler = new AsyncCallbackJsonWebHandler("/profile", [](AsyncWebServerRequest *request, JsonVariant &json) {
int params = request->params();
@@ -456,6 +544,16 @@ server.addHandler(new SPIFFSEditor(SPIFFS,http_username,http_password));
}
request->send(200, "text/plain", "{test: \"ok\"}");
});
server.on("/profile/resetlist", HTTP_GET,[](AsyncWebServerRequest * request){
settings.begin("profiles");
settings.clear();
settings.putString("list","");
request->send(200,"text/plain","profiles lilst reset");
});
server.on("/profile", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain", getProfile(request));
});
server.begin();
duty = millis();