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

@@ -8,8 +8,24 @@ Wifi Host for the Arduino-Laser-Spirograph
* laser=1-128 (1:permanent, 2-127 pulse, 128 off)
* motor1=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
* **GET** returns wifi settings
* **POST** sets new wifi setting{s}
@@ -22,11 +38,6 @@ Wifi Host for the Arduino-Laser-Spirograph
* **GET** returns free heap of the ESP8266
* /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

View File

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

View File

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

View File

@@ -115,6 +115,77 @@ void hFileList() {
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()
{
String responseBuffer = String();
@@ -131,20 +202,6 @@ void hReadSpiro()
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()
{
presetMode = 0;
@@ -287,7 +344,7 @@ boolean readPresetsFile() {
JsonArray& values = sets[keyStr];
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);
for (int x = 0; x < 4; x++)
{
set.add(presets[i][x]);
set.add(presets[i+1][x]);
}
}
//json.prettyPrintTo(Serial);
@@ -504,7 +561,12 @@ void setup(void) {
server.on("/presets", HTTP_GET, hReadPresets);
server.on("/presets", HTTP_POST, []() {
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, []() {
@@ -539,8 +601,6 @@ void setup(void) {
server.begin();
Serial.println("HTTP server started");
}
void handleNotFound() {
@@ -566,7 +626,7 @@ void loop(void) {
{
if (millis() - previousMillis >= cycleTime)
{
presetToLaser(activePreset + 1);
presetToLaser(activePreset);
if (activePreset < 128)
{
activePreset++;