| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include <HardwareSerial.h> // Reference the ESP32 built-in serial port library
- #include "WS_Bluetooth.h"
- #include "WS_GPIO.h"
- #include "Arduino_DebugUtils.h"
- /******************************************************** Data Analysis ********************************************************/
- unsigned long timers[6] = { 0, 0, 0, 0, 0, 0 };
- bool isOverride = false;
- void SetRelay(int relay, char status)
- {
- if (status == '+')
- {
- DEBUG_INFO("Closing relay %d to HIGH for 10s", relay);
- TriggerRelay(relay,true);
- timers[relay] = millis() + 10000;
- }
- else if (status == '*')
- {
- DEBUG_INFO("Closing relay %d permanently", relay);
- TriggerRelay(relay,true);
- timers[relay] = 0;
- }
- else if (status == '-')
- {
- DEBUG_INFO("Opening Relay %d", relay);
- TriggerRelay(relay,false);
- timers[relay] = 0;
- }
- }
- void SetRelays(std::string value)
- {
- DEBUG_INFO("Received Command: %s",value);
- for (int relay=0; relay<6; relay++)
- {
- SetRelay(relay, value.length() > relay ? value[relay] : '-');
- }
- }
- std::string GetRelays()
- {
- std::string result;
- result.reserve(6); // Reserve space for efficiency
- for (int relay=0; relay<6; relay++)
- result += RelayStatus(relay) ? '1' : '0';
- return result;
- }
- int i = 0;
- /******************************************************** Initializing ********************************************************/
- void setup()
- {
- Serial.begin(9600);
- Debug.timestampOn();
- GPIO_Init();
- Bluetooth_Init();
- }
- /********************************************************** While **********************************************************/
- void loop()
- {
- bool override = IsOverride();
- if (override && !isOverride)
- {
- isOverride = true;
- RGB_Light(0, 60, 60);
- SetRelays("******");
- }
- else if (!override && isOverride)
- {
- isOverride = false;
- RGB_Light(0, 0, 0);
- SetRelays("------");
- }
- unsigned long ms = millis();
- for (int relay=0; relay<6; relay++)
- {
- if ((timers[relay] > 0) && (timers[relay] <= ms))
- SetRelay(relay,'-');
- }
- }
|