added http API

This commit is contained in:
2021-04-24 19:40:18 +02:00
parent 177c32fd0a
commit 51526ee36e
3 changed files with 133 additions and 19 deletions

View File

@@ -24,6 +24,8 @@ DallasTemperature sensor(&oneWire);
float temperature;
String metrics;
float reqTemp = 21.5;
float offset = 0.25;
//=================================
@@ -74,26 +76,61 @@ void setup() {
//========== Web server setup ==========
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain; charset=utf-8", "ESP termostat, tady se bude posílat aplikace z flash paměti");
});
if(METRICS_EXPORT){
server.on("/metrics", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain; charset=utf-8", metrics);
});
}
if(METRICS_EXPORT && !THERMOSTAT){
server.on("/relay", HTTP_GET, [](AsyncWebServerRequest *request){
boolean state;
if (request->hasParam("set")) {
state = request->getParam("set")->value() == "1";
server.on("/set", HTTP_GET, [](AsyncWebServerRequest *request){
//nutno nastavit maxima a minima
if(THERMOSTAT){
if (request->hasParam("increaseReqTemp")) {
reqTemp += request->getParam("increaseReqTemp")->value().toFloat();
request->send(200, "text/plain; charset=utf-8", String(reqTemp));
}else if (request->hasParam("decreaseReqTemp")) {
reqTemp -= request->getParam("decreaseReqTemp")->value().toFloat();
request->send(200, "text/plain; charset=utf-8", String(reqTemp));
}else if (request->hasParam("increaseOffset")) {
offset += request->getParam("increaseOffset")->value().toFloat();
request->send(200, "text/plain; charset=utf-8", String(offset));
}else if (request->hasParam("decreaseOffset")) {
offset -= request->getParam("decreaseOffset")->value().toFloat();
request->send(200, "text/plain; charset=utf-8", String(offset));
}else{
request->send(200, "text/plain; charset=utf-8", "no known parameter");
}
}else{
if (request->hasParam("relay")) {
boolean state = request->getParam("set")->value() == "1";
digitalWrite(RELAY_PIN, state);
request->send(200, "text/plain; charset=utf-8", "success");
}else{
request->send(200, "text/plain; charset=utf-8", String(digitalRead(RELAY_PIN)));
request->send(200, "text/plain; charset=utf-8", "no known parameter");
}
});
}
}
});
server.on("/get", HTTP_GET, [](AsyncWebServerRequest *request){
//nutno vyřešit dotazy na více parametrů najednou
String repply;
if(request->hasParam("temp")) {
repply = temperature;
}else if(request->hasParam("relay")){
repply = digitalRead(RELAY_PIN);
}else if(THERMOSTAT && request->hasParam("reqtemp")){
repply = reqTemp;
}else if(THERMOSTAT && request->hasParam("offset")) {
repply = offset;
}else{
repply = "no known parameter";
}
request->send(200, "text/plain; charset=utf-8", repply);
});
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send(200, "text/plain; charset=utf-8", "ESP termostat, tady se bude posílat aplikace z flash paměti");
});
server.onNotFound(notFound);
server.begin();