mirror of
https://github.com/0x1d/esp8266-laser.git
synced 2025-12-14 18:15:22 +01:00
added /preset endpoint and fixed numbering in presets.json
This commit is contained in:
23
README.md
23
README.md
@@ -8,8 +8,24 @@ Wifi Host for the Arduino-Laser-Spirograph
|
|||||||
* laser=1-128 (1:permanent, 2-127 pulse, 128 off)
|
* laser=1-128 (1:permanent, 2-127 pulse, 128 off)
|
||||||
* motor1=1-128
|
* motor1=1-128
|
||||||
* 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
|
||||||
|
|||||||
@@ -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
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
@@ -504,7 +561,12 @@ void setup(void) {
|
|||||||
server.on("/presets", HTTP_GET, hReadPresets);
|
server.on("/presets", HTTP_GET, hReadPresets);
|
||||||
server.on("/presets", HTTP_POST, []() {
|
server.on("/presets", HTTP_POST, []() {
|
||||||
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, []() {
|
||||||
@@ -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++;
|
||||||
|
|||||||
Reference in New Issue
Block a user