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