generated from jmgiacalone/esp32-template
Profile management added.
This commit is contained in:
100
src/main.cpp
100
src/main.cpp
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user