added /preset endpoint and fixed numbering in presets.json

This commit is contained in:
fryakatkop
2017-10-30 18:50:12 +01:00
parent d74caa1799
commit 0aeb941698
4 changed files with 108 additions and 37 deletions

View File

@@ -10,6 +10,22 @@ Wifi Host for the Arduino-Laser-Spirograph
* motor2=1-128 * motor2=1-128
* motor3=1-128 * motor3=1-128
* /preset
* **POST** sets new value(s) to Preset
* nr=presetNr (1-128)
* laser=1-128 (1:permanent, 2-127 pulse, 128 off)
* motor1=1-128
* motor2=1-128
* motor3=1-128
* apply=true -> run preset
* /presetMode
* **GET** returns current mode
* **POST** sets mode 0: presetsOff 1: cycle (not completed feature)
* /presets
* **GET** returns /presets.json
* /wificonfig * /wificonfig
* **GET** returns wifi settings * **GET** returns wifi settings
* **POST** sets new wifi setting{s} * **POST** sets new wifi setting{s}
@@ -22,11 +38,6 @@ Wifi Host for the Arduino-Laser-Spirograph
* **GET** returns free heap of the ESP8266 * **GET** returns free heap of the ESP8266
* /files * /files
* **GET** returns list of files * **GET** returns list of files
* /presetMode
* **GET** returns current mode
* **POST** sets mode 0: presetsOff 1: cycle (not completed feature)
* /presets
* **GET** returns /presets.json
## Install ## Install

View File

@@ -1,11 +1,5 @@
{ {
"presets": { "presets": {
"0": [
106,
107,
108,
109
],
"1": [ "1": [
62, 62,
63, 63,
@@ -767,6 +761,12 @@
114, 114,
115, 115,
116 116
],
"128": [
106,
107,
108,
109
] ]
} }
} }

View File

@@ -1,11 +1,5 @@
{ {
"presets": { "presets": {
"0": [
106,
107,
108,
109
],
"1": [ "1": [
62, 62,
63, 63,
@@ -767,6 +761,12 @@
114, 114,
115, 115,
116 116
],
"128": [
106,
107,
108,
109
] ]
} }
} }

View File

@@ -115,6 +115,77 @@ void hFileList() {
responseBuffer = String(); responseBuffer = String();
} }
bool hReadPresets()
{
// streamFile instead of rebuild json string
String path = "/presets.json";
String contentType = getContentType(path);
if (SPIFFS.exists(path)) {
File file = SPIFFS.open(path, "r");
size_t sent = server.streamFile(file, contentType);
file.close();
return true;
}
return false;
}
void hWritePreset()
{
presetMode = 0;
int error = 0;
int presetNr = 0;
bool apply = false;
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
JsonObject& data = root.createNestedObject("preset");
if (server.hasArg("nr") ) {
presetNr = server.arg("nr").toInt();
data["nr"] = (String)presetNr;
}
else
{
error = 1;
}
if (server.hasArg("laser") && error == 0) {
presets[presetNr-1][0] = server.arg("laser").toInt();
data["laser"] = (String)presets[presetNr-1][0];
}
if (server.hasArg("motor1") && error == 0) {
presets[presetNr-1][1] = server.arg("motor1").toInt();
data["motor1"] = (String)presets[presetNr-1][1];
}
if (server.hasArg("motor2") && error == 0) {
presets[presetNr-1][2] = server.arg("motor2").toInt();
data["motor2"] = (String) presets[presetNr-1][2];
}
if (server.hasArg("motor3") && error == 0) {
presets[presetNr-1][3] = server.arg("motor3").toInt();
data["motor3"] = (String) presets[presetNr-1][3];
}
if (server.arg("apply") == "true" && error == 0)
{
apply = true;
data["apply"] = "true";
presetToLaser(presetNr-1);
}
error = savePresetFile() ? 0 : 1;
if(error != 0)
{
String responseBuffer = String();
root.prettyPrintTo(responseBuffer);
server.send(200, "text/json", responseBuffer);
responseBuffer = String();
}
else
{
server.send(400, "text/plain", "400 Bad Request");
}
jsonBuffer.clear();
}
void hReadSpiro() void hReadSpiro()
{ {
String responseBuffer = String(); String responseBuffer = String();
@@ -131,20 +202,6 @@ void hReadSpiro()
responseBuffer = String(); responseBuffer = String();
} }
bool hReadPresets()
{
// streamFile instead of rebuild json string
String path = "/presets.json";
String contentType = getContentType(path);
if (SPIFFS.exists(path)) {
File file = SPIFFS.open(path, "r");
size_t sent = server.streamFile(file, contentType);
file.close();
return true;
}
return false;
}
void hWriteSpiro() void hWriteSpiro()
{ {
presetMode = 0; presetMode = 0;
@@ -287,7 +344,7 @@ boolean readPresetsFile() {
JsonArray& values = sets[keyStr]; JsonArray& values = sets[keyStr];
for (int x = 0; x < 4; x++) for (int x = 0; x < 4; x++)
{ {
presets[key][x] = values[x]; presets[key-1][x] = values[x];
} }
} }
@@ -307,7 +364,7 @@ bool savePresetFile() {
JsonArray& set = sets.createNestedArray((String)i); JsonArray& set = sets.createNestedArray((String)i);
for (int x = 0; x < 4; x++) for (int x = 0; x < 4; x++)
{ {
set.add(presets[i][x]); set.add(presets[i+1][x]);
} }
} }
//json.prettyPrintTo(Serial); //json.prettyPrintTo(Serial);
@@ -506,6 +563,11 @@ void setup(void) {
server.send(400, "text/plain", "400 Bad Request"); server.send(400, "text/plain", "400 Bad Request");
}); });
server.on("/preset", HTTP_GET, []() {
server.send(400, "text/plain", "400 Bad Request");
});
server.on("/preset", HTTP_POST, hWritePreset);
server.on("/presetMode", HTTP_GET, []() { server.on("/presetMode", HTTP_GET, []() {
String json = "{"; String json = "{";
@@ -539,8 +601,6 @@ void setup(void) {
server.begin(); server.begin();
Serial.println("HTTP server started"); Serial.println("HTTP server started");
} }
void handleNotFound() { void handleNotFound() {
@@ -566,7 +626,7 @@ void loop(void) {
{ {
if (millis() - previousMillis >= cycleTime) if (millis() - previousMillis >= cycleTime)
{ {
presetToLaser(activePreset + 1); presetToLaser(activePreset);
if (activePreset < 128) if (activePreset < 128)
{ {
activePreset++; activePreset++;