#include "secrets.h"
bool safeToRun();
-bool runWater(String override);
+
+void httpRunWaterSet(unsigned long runtime, String override);
+void httpRunWaterHandle();
+
+bool runWater(unsigned long runtime, String override);
void stopWater();
void handleWaterRunning();
+void buzzer(int onTime, int offTime, int repeat);
+
void connectToWiFi();
void setupWebServer();
void setupBME280();
unsigned long timer_current = 0;
bool waterState = false;
-unsigned long loopTime = 10; // Seconds
+unsigned long loopTime = 5; // Seconds
int maxNTPRetry = 5;
int currentNTPRetry = 0;
unsigned long lastCheckedTime = 0;
+//Run water from HTTP response
+unsigned long httpRuntime = 0;
+String httpOverride = "";
+
void setup() {
Serial.begin(115200);
Serial.println();
setupBME280();
timeClient.begin();
+ delay(1000);
timeClient.update();
last_ran = timeClient.getEpochTime();
Serial.printf("\nCurrent Time (s): %ld", last_ran);
pinMode(SOAKER, OUTPUT);
digitalWrite(SOAKER, LOW);
+
+ pinMode(BUZZER, OUTPUT);
+ digitalWrite(BUZZER, HIGH);
}
void loop() {
+ httpRunWaterHandle();
handleWaterRunning();
delay(loopTime * 1000);
// Reset Fallback
timer_current = 0;
- timer_setpoint = runtime;
+ timer_setpoint = runtime + 20;
waterState = true;
digitalWrite(SOAKER, HIGH);
+ buzzer(100, 900, 3);
+
return true;
}
if (cTime >= end_time) {
stopWater();
- Serial.print("Water Finished!");
+ Serial.print("\nWater Finished!");
+ return;
}
// Fallback Timer
if (timer_current > timer_setpoint) {
stopWater();
Serial.print("\nFAILSAFE TRIGGERED!");
+ buzzer(100, 100, 10);
}
} else {
- stopWater();
+ digitalWrite(SOAKER, LOW);
}
}
end_time = 0;
Serial.print("\n\nWater Stopped.");
+ buzzer(100, 400, 2);
+}
+
+void buzzer(int onTime = 100, int offTime = 250, int repeat = 3) {
+
+ for (int i = 0; i < repeat; i++) {
+ if (i != 0)
+ delay(offTime);
+
+ digitalWrite(BUZZER, LOW);
+ delay(onTime);
+ digitalWrite(BUZZER, HIGH);
+ }
+
+ digitalWrite(BUZZER, HIGH);
+}
+
+void httpRunWaterSet(unsigned long runtime, String override) {
+ httpRuntime = runtime;
+ httpOverride = override;
+}
+
+void httpRunWaterHandle() {
+ if (httpRuntime != 0) {
+ runWater(httpRuntime, httpOverride);
+
+ // Reset
+ httpRuntime = 0;
+ httpOverride = "";
+ }
}
void connectToWiFi() {
}
Serial.printf("\nHTTP request to run water for %d mins.", time);
- runWater(time * 60, override_pass);
+ request->send(201, "text/plain", "Water will run for provided mins.");
+ httpRunWaterSet(time * 60, override_pass);
} else {
request->send(400, "text/plain", "No Time Provided.");