MAIN_ALL.ino 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #include <HardwareSerial.h>
  2. #include <Preferences.h>
  3. #include <iostream>
  4. #include <sstream>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <WiFi.h>
  8. #include "WS_Bluetooth.h"
  9. #include "WS_GPIO.h"
  10. #include "Arduino_DebugUtils.h"
  11. /******************************************************** Data Analysis ********************************************************/
  12. unsigned long timers[6] = { 0, 0, 0, 0, 0, 0 };
  13. bool isOverride = false;
  14. Preferences preferences;
  15. std::string macAddress;
  16. std::string GetContactInfo()
  17. {
  18. preferences.begin("prs-digital-key", true);
  19. String result = preferences.getString("contact-info");
  20. preferences.end();
  21. return result.c_str();
  22. }
  23. void SetContactInfo(std::string info)
  24. {
  25. preferences.begin("prs-digital-key", false);
  26. preferences.putString("contact-info", info.c_str());
  27. preferences.end();
  28. }
  29. std::string GetMacAddress()
  30. {
  31. return macAddress;
  32. }
  33. void SetRelay(int relay, char status)
  34. {
  35. if (status == '+')
  36. {
  37. DEBUG_INFO("Closing relay %d to HIGH for 10s", relay);
  38. TriggerRelay(relay,true);
  39. timers[relay] = millis() + 10000;
  40. }
  41. else if (status == '*')
  42. {
  43. DEBUG_INFO("Closing relay %d permanently", relay);
  44. TriggerRelay(relay,true);
  45. timers[relay] = 0;
  46. }
  47. else if (status == '-')
  48. {
  49. DEBUG_INFO("Opening Relay %d", relay);
  50. TriggerRelay(relay,false);
  51. timers[relay] = 0;
  52. }
  53. }
  54. void SetRelays(std::string value)
  55. {
  56. DEBUG_INFO("Received Command: %s",value);
  57. for (int relay=0; relay<6; relay++)
  58. {
  59. SetRelay(relay, value.length() > relay ? value[relay] : '-');
  60. }
  61. }
  62. std::string GetRelays()
  63. {
  64. std::string result;
  65. result.reserve(6); // Reserve space for efficiency
  66. for (int relay=0; relay<6; relay++)
  67. result += RelayStatus(relay) ? '1' : '0';
  68. return result;
  69. }
  70. int i = 0;
  71. /******************************************************** Initializing ********************************************************/
  72. void setup()
  73. {
  74. Serial.begin(9600);
  75. Debug.timestampOn();
  76. WiFi.mode(WIFI_STA);
  77. macAddress = WiFi.macAddress().c_str();
  78. // uint8_t baseMac[6];
  79. // char buffer[18];
  80. // esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
  81. // if (ret == ESP_OK)
  82. // {
  83. // sprintf(buffer, "%02x:%02x:%02x:%02x:%02x:%02x\n", baseMac[0], baseMac[1], baseMac[2], baseMac[3], baseMac[4], baseMac[5]);
  84. // macAddress = std::string(buffer);
  85. // }
  86. // else
  87. // macAddress = "00:00:00:00:00:00";
  88. GPIO_Init();
  89. Bluetooth_Init();
  90. }
  91. /********************************************************** While **********************************************************/
  92. void loop()
  93. {
  94. unsigned long ms = millis();
  95. for (int relay=0; relay<6; relay++)
  96. {
  97. if ((timers[relay] > 0) && (timers[relay] <= ms))
  98. SetRelay(relay,'-');
  99. }
  100. }