void buzzer(int onTime, int offTime, int repeat);
+void checkButtons();
+
void connectToWiFi();
void setupWebServer();
void setupBME280();
unsigned long timer_current = 0;
bool waterState = false;
-unsigned long loopTime = 5; // Seconds
+unsigned long loopTime = 1; // Seconds
int maxNTPRetry = 5;
int currentNTPRetry = 0;
unsigned long httpRuntime = 0;
String httpOverride = "";
+// Buttons
+int button_a_state = LOW;
+unsigned long button_a_time_pressed = 0;
+unsigned long button_a_time_released = 0;
+
void setup() {
Serial.begin(115200);
Serial.println();
void loop() {
+ checkButtons();
httpRunWaterHandle();
handleWaterRunning();
delay(loopTime * 1000);
}
+void checkButtons() {
+ int button_a = digitalRead(BUTTON_A);
+ int button_b = digitalRead(BUTTON_B);
+
+ // Check state changes
+ if (button_a_state == HIGH && button_a == LOW)
+ button_a_time_pressed = millis();
+ else if (button_a_state == LOW && button_a == HIGH)
+ button_a_time_released = millis();
+
+ // Duration of press
+ long press_a = button_a_time_pressed - button_a_time_released;
+
+ if (press_a > PRESS_TIME) {
+
+ if (waterState) {
+ stopWater();
+ return;
+ }
+
+ if (button_b == HIGH) {
+ runWater(DEFAULT_WATER_TIME, water_override);
+ } else {
+ runWater(DEFAULT_WATER_TIME, "");
+ }
+
+ button_a_time_pressed = 0;
+ button_a_time_released = 0;
+ }
+
+ // Save State
+ button_a_state = button_a;
+}
+
bool safeToRun() {
timeClient.update();
unsigned long ctime = timeClient.getEpochTime();
if (override != water_override) {
Serial.print("Water Not Safe to Run. Cannot Start Water.");
return false;
+ } else {
+ Serial.print("Water to start with override!");
}
}