garage_esp32.ino /program endpoint
This commit is contained in:
@@ -66,6 +66,8 @@ HTTPClient http;
|
||||
|
||||
unsigned long sprinklerDuration = 0;
|
||||
unsigned long sprinklerStartMillis;
|
||||
int programStatus = 0;
|
||||
|
||||
|
||||
void pushover(String message) {
|
||||
StaticJsonDocument<512> notification;
|
||||
@@ -116,12 +118,14 @@ void pinStatus(AsyncWebServerRequest *request) {
|
||||
"PIN_SPRINKLER4 (" + String(PIN_SPRINKLER4) + ") = " + String(digitalRead(PIN_SPRINKLER4)) + "\n" +
|
||||
"PIN_MOISTURE_ANALOG (" + String(PIN_MOISTURE_ANALOG) + ") = " + String(analogRead(PIN_MOISTURE_ANALOG)) + "\n" +
|
||||
"PIN_MOISTURE_DIGITAL (" + String(PIN_MOISTURE_DIGITAL) + ") = " + String(digitalRead(PIN_MOISTURE_DIGITAL)) + "\n\n" +
|
||||
"programStatus = " + String(programStatus) + "\n" +
|
||||
"sprinklerDuration = " + String(sprinklerDuration) + "\n" +
|
||||
"sprinklerStartMillis = " + String(sprinklerStartMillis) + "\n\n" +
|
||||
"/ \n" +
|
||||
"/garage[?action=(open|close)] \n" +
|
||||
"/gate[?action=(open|close)] \n" +
|
||||
"/sprinkler[?action=(stop|(start&device={int}&duration={int}))]";
|
||||
"/sprinkler[?action=(stop|(start&device={int}&duration={int}))] \n" +
|
||||
"/sprinkler/program[?action=(stop|(start&duration={int}))] \n";
|
||||
|
||||
request->send(200, "text/plain", status);
|
||||
}
|
||||
@@ -236,7 +240,6 @@ void stopSprinklers() {
|
||||
digitalWrite(PIN_SPRINKLER2, HIGH);
|
||||
digitalWrite(PIN_SPRINKLER3, HIGH);
|
||||
digitalWrite(PIN_SPRINKLER4, HIGH);
|
||||
sprinklerDuration = 0;
|
||||
}
|
||||
|
||||
void setup() {
|
||||
@@ -343,15 +346,12 @@ void setup() {
|
||||
action = request->getParam("action")->value();
|
||||
Serial.println("Sprinkler " + action);
|
||||
|
||||
if (action.equals("stop")) {
|
||||
stopSprinklers();
|
||||
request->send(200, "application/json", "{ \"action\": \"stop\" }");
|
||||
}
|
||||
else if (action.equals("start") and (request->hasParam("device")) and (request->hasParam("duration"))) {
|
||||
if (action.equals("start") and (request->hasParam("device")) and (request->hasParam("duration"))) {
|
||||
stopSprinklers(); // only run one sprinkler at a time
|
||||
String device = request->getParam("device")->value();
|
||||
String duration = request->getParam("duration")->value();
|
||||
sprinklerDuration = duration.toInt();
|
||||
sprinklerDuration = sprinklerDuration * 60 * 1000;
|
||||
sprinklerStartMillis = millis();
|
||||
if (device.equals("1")) {
|
||||
digitalWrite(PIN_SPRINKLER1, LOW);
|
||||
@@ -376,13 +376,34 @@ void setup() {
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (digitalRead(PIN_SENSOR_GATE)) {
|
||||
request->send(200, "application/json", "{ \"status\": \"false\" }");
|
||||
stopSprinklers();
|
||||
request->send(200, "application/json", "{ \"action\": \"stop\" }");
|
||||
}
|
||||
});
|
||||
|
||||
server.on("/sprinkler/program", HTTP_GET, [] (AsyncWebServerRequest *request) {
|
||||
|
||||
if (request->hasParam("action")) {
|
||||
action = request->getParam("action")->value();
|
||||
|
||||
if (action.equals("start") and (request->hasParam("duration"))) {
|
||||
String duration = request->getParam("duration")->value();
|
||||
sprinklerDuration = duration.toInt();
|
||||
sprinklerDuration = sprinklerDuration * 60 * 1000;
|
||||
sprinklerStartMillis = millis();
|
||||
|
||||
programStatus = 4;
|
||||
digitalWrite(PIN_SPRINKLER4, LOW);
|
||||
request->send(200, "application/json", "{ \"action\": \"start\" }");
|
||||
}
|
||||
}
|
||||
else {
|
||||
request->send(200, "application/json", "{ \"status\": \"true\" }");
|
||||
}
|
||||
stopSprinklers();
|
||||
programStatus = false;
|
||||
request->send(200, "application/json", "{ \"action\": \"stop\" }");
|
||||
}
|
||||
|
||||
request->send(200, "application/json", "{ \"status\": \"" + String(programStatus) + "\" }");
|
||||
});
|
||||
|
||||
server.onNotFound(notFound);
|
||||
@@ -403,6 +424,23 @@ void loop() {
|
||||
|
||||
if ((sprinklerDuration > 0) and ((millis() - sprinklerStartMillis) > sprinklerDuration)) {
|
||||
stopSprinklers();
|
||||
if (programStatus > 0) {
|
||||
sprinklerStartMillis = millis();
|
||||
|
||||
programStatus--;
|
||||
if (programStatus == 3) {
|
||||
digitalWrite(PIN_SPRINKLER3, LOW);
|
||||
}
|
||||
else if (programStatus == 2) {
|
||||
digitalWrite(PIN_SPRINKLER2, LOW);
|
||||
}
|
||||
else if (programStatus == 1) {
|
||||
digitalWrite(PIN_SPRINKLER1, LOW);
|
||||
}
|
||||
}
|
||||
else {
|
||||
sprinklerDuration = 0;
|
||||
}
|
||||
}
|
||||
|
||||
int newVal = digitalRead(PIN_GARAGE_BUTTON);
|
||||
|
||||
Reference in New Issue
Block a user