MAIN_ALL.ino 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include <HardwareSerial.h> // Reference the ESP32 built-in serial port library
  2. #include "WS_Bluetooth.h"
  3. #include "WS_GPIO.h"
  4. #include "Arduino_DebugUtils.h"
  5. /******************************************************** Data Analysis ********************************************************/
  6. unsigned long timers[6] = { 0, 0, 0, 0, 0, 0 };
  7. bool isOverride = false;
  8. void SetRelay(int relay, char status)
  9. {
  10. if (status == '+')
  11. {
  12. DEBUG_INFO("Closing relay %d to HIGH for 10s", relay);
  13. TriggerRelay(relay,true);
  14. timers[relay] = millis() + 10000;
  15. }
  16. else if (status == '*')
  17. {
  18. DEBUG_INFO("Closing relay %d permanently", relay);
  19. TriggerRelay(relay,true);
  20. timers[relay] = 0;
  21. }
  22. else if (status == '-')
  23. {
  24. DEBUG_INFO("Opening Relay %d", relay);
  25. TriggerRelay(relay,false);
  26. timers[relay] = 0;
  27. }
  28. }
  29. void SetRelays(std::string value)
  30. {
  31. DEBUG_INFO("Received Command: %s",value);
  32. for (int relay=0; relay<6; relay++)
  33. {
  34. SetRelay(relay, value.length() > relay ? value[relay] : '-');
  35. }
  36. }
  37. std::string GetRelays()
  38. {
  39. std::string result;
  40. result.reserve(6); // Reserve space for efficiency
  41. for (int relay=0; relay<6; relay++)
  42. result += RelayStatus(relay) ? '1' : '0';
  43. return result;
  44. }
  45. int i = 0;
  46. /******************************************************** Initializing ********************************************************/
  47. void setup()
  48. {
  49. Serial.begin(9600);
  50. Debug.timestampOn();
  51. GPIO_Init();
  52. Bluetooth_Init();
  53. }
  54. /********************************************************** While **********************************************************/
  55. void loop()
  56. {
  57. bool override = IsOverride();
  58. if (override && !isOverride)
  59. {
  60. isOverride = true;
  61. RGB_Light(0, 60, 60);
  62. SetRelays("******");
  63. }
  64. else if (!override && isOverride)
  65. {
  66. isOverride = false;
  67. RGB_Light(0, 0, 0);
  68. SetRelays("------");
  69. }
  70. unsigned long ms = millis();
  71. for (int relay=0; relay<6; relay++)
  72. {
  73. if ((timers[relay] > 0) && (timers[relay] <= ms))
  74. SetRelay(relay,'-');
  75. }
  76. }