mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2025-12-13 19:12:10 +01:00
Change pairing so that the command can be repeated on failure. #15. Add extra 0 to indicate there are no more bits to be read from the bitstream.
This commit is contained in:
parent
3b8c2e0aea
commit
b6bc57e437
8 changed files with 119 additions and 20 deletions
51
Web.cpp
51
Web.cpp
|
|
@ -170,7 +170,7 @@ void Web::begin() {
|
|||
shade->moveToTarget(target);
|
||||
else
|
||||
shade->sendCommand(command, repeat);
|
||||
DynamicJsonDocument sdoc(256);
|
||||
DynamicJsonDocument sdoc(512);
|
||||
JsonObject sobj = sdoc.to<JsonObject>();
|
||||
shade->toJSON(sobj);
|
||||
serializeJson(sdoc, g_content);
|
||||
|
|
@ -234,7 +234,7 @@ void Web::begin() {
|
|||
shade->moveToTiltTarget(target);
|
||||
else
|
||||
shade->sendTiltCommand(command);
|
||||
DynamicJsonDocument sdoc(256);
|
||||
DynamicJsonDocument sdoc(512);
|
||||
JsonObject sobj = sdoc.to<JsonObject>();
|
||||
shade->toJSON(sobj);
|
||||
serializeJson(sdoc, g_content);
|
||||
|
|
@ -870,6 +870,52 @@ void Web::begin() {
|
|||
}
|
||||
}
|
||||
});
|
||||
server.on("/setPaired", []() {
|
||||
webServer.sendCORSHeaders();
|
||||
uint8_t shadeId = 255;
|
||||
bool paired = false;
|
||||
if(server.hasArg("plain")) {
|
||||
DynamicJsonDocument doc(512);
|
||||
DeserializationError err = deserializeJson(doc, server.arg("plain"));
|
||||
if(err) {
|
||||
switch(err.code()) {
|
||||
case DeserializationError::InvalidInput:
|
||||
server.send(500, _encoding_json, F("{\"status\":\"ERROR\",\"desc\":\"Invalid JSON payload\"}"));
|
||||
break;
|
||||
case DeserializationError::NoMemory:
|
||||
server.send(500, _encoding_json, F("{\"status\":\"ERROR\",\"desc\":\"Out of memory parsing JSON\"}"));
|
||||
break;
|
||||
default:
|
||||
server.send(500, _encoding_json, F("{\"status\":\"ERROR\",\"desc\":\"General JSON Deserialization failed\"}"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
JsonObject obj = doc.as<JsonObject>();
|
||||
if (obj.containsKey("shadeId")) shadeId = obj["shadeId"];
|
||||
if(obj.containsKey("paired")) paired = obj["paired"];
|
||||
}
|
||||
}
|
||||
else if (server.hasArg("shadeId"))
|
||||
shadeId = atoi(server.arg("shadeId").c_str());
|
||||
if(server.hasArg("paired"))
|
||||
paired = toBoolean(server.arg("paired").c_str(), false);
|
||||
SomfyShade* shade = nullptr;
|
||||
if (shadeId != 255) shade = somfy.getShadeById(shadeId);
|
||||
if (!shade) {
|
||||
server.send(500, _encoding_json, F("{\"status\":\"ERROR\",\"desc\":\"Shade not found to pair\"}"));
|
||||
}
|
||||
else {
|
||||
shade->paired = paired;
|
||||
shade->save();
|
||||
DynamicJsonDocument doc(512);
|
||||
JsonObject obj = doc.to<JsonObject>();
|
||||
shade->toJSON(obj);
|
||||
serializeJson(doc, g_content);
|
||||
server.send(200, _encoding_json, g_content);
|
||||
}
|
||||
});
|
||||
/*
|
||||
server.on("/pairShade", []() {
|
||||
webServer.sendCORSHeaders();
|
||||
HTTPMethod method = server.method();
|
||||
|
|
@ -919,6 +965,7 @@ void Web::begin() {
|
|||
}
|
||||
}
|
||||
});
|
||||
*/
|
||||
server.on("/unpairShade", []() {
|
||||
webServer.sendCORSHeaders();
|
||||
HTTPMethod method = server.method();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue