123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #include <HardwareSerial.h>
- #include <Preferences.h>
- #include <iostream>
- #include <sstream>
- #include <stdio.h>
- #include <string.h>
- #include <WiFi.h>
- #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;
- Preferences preferences;
- std::string macAddress;
- std::string GetContactInfo()
- {
- preferences.begin("prs-digital-key", true);
- String result = preferences.getString("contact-info");
- preferences.end();
- return result.c_str();
- }
- void SetContactInfo(std::string info)
- {
- preferences.begin("prs-digital-key", false);
- preferences.putString("contact-info", info.c_str());
- preferences.end();
- }
- std::string GetMacAddress()
- {
- return macAddress;
- }
- 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();
- WiFi.mode(WIFI_STA);
- macAddress = WiFi.macAddress().c_str();
-
- // uint8_t baseMac[6];
- // char buffer[18];
-
- // esp_err_t ret = esp_wifi_get_mac(WIFI_IF_STA, baseMac);
- // if (ret == ESP_OK)
- // {
- // sprintf(buffer, "%02x:%02x:%02x:%02x:%02x:%02x\n", baseMac[0], baseMac[1], baseMac[2], baseMac[3], baseMac[4], baseMac[5]);
- // macAddress = std::string(buffer);
- // }
- // else
- // macAddress = "00:00:00:00:00:00";
- GPIO_Init();
- Bluetooth_Init();
- }
- /********************************************************** While **********************************************************/
- void loop()
- {
-
- unsigned long ms = millis();
- for (int relay=0; relay<6; relay++)
- {
- if ((timers[relay] > 0) && (timers[relay] <= ms))
- SetRelay(relay,'-');
- }
- }
|