Add unified relay command endpoint
This commit is contained in:
@@ -91,7 +91,14 @@ function fmt(n,d=1){return typeof n==="number"?n.toFixed(d):"--"}
|
|||||||
function temp(v){return typeof v==="number"?fmt(v,1)+"°F":"Offline"}
|
function temp(v){return typeof v==="number"?fmt(v,1)+"°F":"Offline"}
|
||||||
function clsAlarm(v){return v?"bad":"good"}
|
function clsAlarm(v){return v?"bad":"good"}
|
||||||
async function relay(id,on){
|
async function relay(id,on){
|
||||||
try{await fetch(`/relay/${id}/${on?"on":"off"}`); await load()}catch(e){}
|
try{
|
||||||
|
await fetch("/relay/set",{
|
||||||
|
method:"POST",
|
||||||
|
headers:{"Content-Type":"application/json"},
|
||||||
|
body:JSON.stringify({id:id,state:on})
|
||||||
|
});
|
||||||
|
await load();
|
||||||
|
}catch(e){}
|
||||||
}
|
}
|
||||||
function render(data){
|
function render(data){
|
||||||
$("conn").textContent="Live";
|
$("conn").textContent="Live";
|
||||||
@@ -1124,6 +1131,36 @@ void handleSelectBms() {
|
|||||||
server.send(200, "application/json", output);
|
server.send(200, "application/json", output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void handleSetRelayPost() {
|
||||||
|
DynamicJsonDocument doc(512);
|
||||||
|
DeserializationError error = deserializeJson(doc, server.arg("plain"));
|
||||||
|
|
||||||
|
if (error) {
|
||||||
|
server.send(400, "application/json", "{\"ok\":false,\"error\":\"invalid_json\"}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String relayId = doc["id"] | "";
|
||||||
|
bool state = doc["state"] | false;
|
||||||
|
|
||||||
|
if (!setRelayById(relayId, state)) {
|
||||||
|
server.send(404, "application/json", "{\"ok\":false,\"error\":\"unknown_relay\"}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DynamicJsonDocument response(512);
|
||||||
|
response["type"] = "relay_response";
|
||||||
|
response["ok"] = true;
|
||||||
|
response["relay"] = relayId;
|
||||||
|
response["state"] = state;
|
||||||
|
response["enabled"] = state;
|
||||||
|
|
||||||
|
String output;
|
||||||
|
serializeJson(response, output);
|
||||||
|
server.send(200, "application/json", output);
|
||||||
|
}
|
||||||
|
|
||||||
void handleGenericRelayRoute() {
|
void handleGenericRelayRoute() {
|
||||||
String uri = server.uri();
|
String uri = server.uri();
|
||||||
String prefix = "/relay/";
|
String prefix = "/relay/";
|
||||||
@@ -1220,6 +1257,7 @@ void setup() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
server.on("/status", handleStatus);
|
server.on("/status", handleStatus);
|
||||||
|
server.on("/relay/set", HTTP_POST, handleSetRelayPost);
|
||||||
server.on("/relay/relay_1/on", HTTP_GET, handleGenericRelayRoute);
|
server.on("/relay/relay_1/on", HTTP_GET, handleGenericRelayRoute);
|
||||||
server.on("/relay/relay_1/off", HTTP_GET, handleGenericRelayRoute);
|
server.on("/relay/relay_1/off", HTTP_GET, handleGenericRelayRoute);
|
||||||
server.on("/relay/relay_2/on", HTTP_GET, handleGenericRelayRoute);
|
server.on("/relay/relay_2/on", HTTP_GET, handleGenericRelayRoute);
|
||||||
|
|||||||
Reference in New Issue
Block a user