From 27d8851d0e3db8d9ed8eb333c91356605c5cfcc1 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 7 Nov 2024 18:18:19 -0500 Subject: HvacStation: implement state machine --- HvacStation/HvacStation.ino | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'HvacStation') diff --git a/HvacStation/HvacStation.ino b/HvacStation/HvacStation.ino index 2084699..5334516 100644 --- a/HvacStation/HvacStation.ino +++ b/HvacStation/HvacStation.ino @@ -2,6 +2,10 @@ #include #include +enum { + SECOND = 1000, + PERIOD = 30*SECOND, +}; enum pins { SOLENOID_PIN = 21 }; enum tunings { P = 2, @@ -42,12 +46,15 @@ setup(void) { void loop(void) { - float humidity; - if (getHumidity(&humidity) != 0) { - Serial.println("Failed to get humidity from server."); - Serial.println("Retrying in 5s..."); - delay(5000); - return; + static unsigned long lastUpdate = 0; // Last time humidity was retrived from server. + static float humidity = TARGET_HUMIDITY; + + unsigned long now = millis(); + if (now - lastUpdate > PERIOD) { + if (getHumidity(&humidity) == 0) + lastUpdate = now; + else + Serial.println("Failed to get humidity from server."); } pidInput = humidity; -- cgit v1.2.3