|
|
@ -26,7 +26,9 @@ Main::Main(void) { |
|
|
|
|
|
|
|
mEep = new eep(); |
|
|
|
Serial.begin(115200); |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::Main")); |
|
|
|
#endif |
|
|
|
|
|
|
|
mUptimeSecs = 0; |
|
|
|
mUptimeTicker = 0xffffffff; |
|
|
@ -40,7 +42,9 @@ Main::Main(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::setup(uint32_t timeout) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::setup")); |
|
|
|
#endif |
|
|
|
bool startAp = mApActive; |
|
|
|
mLimit = timeout; |
|
|
|
|
|
|
@ -69,7 +73,9 @@ void Main::setup(uint32_t timeout) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::loop(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINT(F("M"));
|
|
|
|
#endif |
|
|
|
if(mApActive) { |
|
|
|
mDns->processNextRequest(); |
|
|
|
#ifndef AP_ONLY |
|
|
@ -118,7 +124,9 @@ void Main::loop(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
bool Main::getConfig(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::getConfig")); |
|
|
|
#endif |
|
|
|
bool mApActive = false; |
|
|
|
|
|
|
|
mWifiSettingsValid = checkEEpCrc(ADDR_START, ADDR_WIFI_CRC, ADDR_WIFI_CRC); |
|
|
@ -141,7 +149,9 @@ bool Main::getConfig(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::setupAp(const char *ssid, const char *pwd) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::setupAp")); |
|
|
|
#endif |
|
|
|
IPAddress apIp(192, 168, 1, 1); |
|
|
|
|
|
|
|
DPRINTLN(F("\n---------\nAP MODE\nSSDI: ") |
|
|
@ -149,7 +159,9 @@ void Main::setupAp(const char *ssid, const char *pwd) { |
|
|
|
+ String(pwd) + F("\nActive for: ") |
|
|
|
+ String(WIFI_AP_ACTIVE_TIME) + F(" seconds") |
|
|
|
+ F("\n---------\n")); |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN("DBG: " + String(mNextTryTs)); |
|
|
|
#endif |
|
|
|
|
|
|
|
WiFi.mode(WIFI_AP); |
|
|
|
WiFi.softAPConfig(apIp, apIp, IPAddress(255, 255, 255, 0)); |
|
|
@ -168,7 +180,9 @@ void Main::setupAp(const char *ssid, const char *pwd) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
bool Main::setupStation(uint32_t timeout) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::setupStation")); |
|
|
|
#endif |
|
|
|
int32_t cnt; |
|
|
|
bool startAp = false; |
|
|
|
|
|
|
@ -218,7 +232,9 @@ bool Main::setupStation(uint32_t timeout) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showSetup(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showSetup")); |
|
|
|
#endif |
|
|
|
String html = FPSTR(setup_html); |
|
|
|
html.replace(F("{SSID}"), mStationSsid); |
|
|
|
// PWD will be left at the default value (for protection)
|
|
|
@ -236,21 +252,27 @@ void Main::showSetup(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showCss(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showCss")); |
|
|
|
#endif |
|
|
|
mWeb->send(200, "text/css", FPSTR(style_css)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showSave(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showSave")); |
|
|
|
#endif |
|
|
|
saveValues(true); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::saveValues(bool webSend = true) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::saveValues")); |
|
|
|
#endif |
|
|
|
if(mWeb->args() > 0) { |
|
|
|
if(mWeb->arg("ssid") != "") { |
|
|
|
memset(mStationSsid, 0, SSID_LEN); |
|
|
@ -284,7 +306,9 @@ void Main::saveValues(bool webSend = true) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::updateCrc(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::updateCrc")); |
|
|
|
#endif |
|
|
|
uint16_t crc; |
|
|
|
crc = buildEEpCrc(ADDR_START, ADDR_WIFI_CRC); |
|
|
|
//Serial.println("new CRC: " + String(crc, HEX));
|
|
|
@ -295,7 +319,9 @@ void Main::updateCrc(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showUptime(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::showUptime"));
|
|
|
|
#endif |
|
|
|
char time[20] = {0}; |
|
|
|
|
|
|
|
int upTimeSc = uint32_t((mUptimeSecs) % 60); |
|
|
@ -311,14 +337,18 @@ void Main::showUptime(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showTime(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::showTime"));
|
|
|
|
#endif |
|
|
|
mWeb->send(200, "text/plain", getDateTimeStr(mTimestamp)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showNotFound(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showNotFound - ") + mWeb->uri()); |
|
|
|
#endif |
|
|
|
String msg = F("File Not Found\n\nURI: "); |
|
|
|
msg += mWeb->uri(); |
|
|
|
msg += F("\nMethod: "); |
|
|
@ -337,7 +367,9 @@ void Main::showNotFound(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showReboot(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showReboot")); |
|
|
|
#endif |
|
|
|
mWeb->send(200, F("text/html"), F("<!doctype html><html><head><title>Rebooting ...</title><meta http-equiv=\"refresh\" content=\"10; URL=/\"></head><body>rebooting ... auto reload after 10s</body></html>")); |
|
|
|
delay(1000); |
|
|
|
ESP.restart(); |
|
|
@ -347,7 +379,9 @@ void Main::showReboot(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::showFactoryRst(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
DPRINTLN(F("Main::showFactoryRst")); |
|
|
|
#endif |
|
|
|
String content = ""; |
|
|
|
int refresh = 3; |
|
|
|
if(mWeb->args() > 0) { |
|
|
@ -376,7 +410,9 @@ void Main::showFactoryRst(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
time_t Main::getNtpTime(void) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::getNtpTime"));
|
|
|
|
#endif |
|
|
|
time_t date = 0; |
|
|
|
IPAddress timeServer; |
|
|
|
uint8_t buf[NTP_PACKET_SIZE]; |
|
|
@ -414,7 +450,9 @@ time_t Main::getNtpTime(void) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
void Main::sendNTPpacket(IPAddress& address) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::sendNTPpacket"));
|
|
|
|
#endif |
|
|
|
uint8_t buf[NTP_PACKET_SIZE] = {0}; |
|
|
|
|
|
|
|
buf[0] = B11100011; // LI, Version, Mode
|
|
|
@ -435,7 +473,9 @@ void Main::sendNTPpacket(IPAddress& address) { |
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
String Main::getDateTimeStr(time_t t) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::getDateTimeStr"));
|
|
|
|
#endif |
|
|
|
char str[20] = {0}; |
|
|
|
if(0 == t) |
|
|
|
sprintf(str, "n/a"); |
|
|
@ -449,7 +489,9 @@ String Main::getDateTimeStr(time_t t) { |
|
|
|
// calculates the daylight saving time for middle Europe. Input: Unixtime in UTC
|
|
|
|
// from: https://forum.arduino.cc/index.php?topic=172044.msg1278536#msg1278536
|
|
|
|
time_t Main::offsetDayLightSaving (uint32_t local_t) { |
|
|
|
#ifdef DEBUG_HMMAIN |
|
|
|
//DPRINTLN(F("Main::offsetDayLightSaving"));
|
|
|
|
#endif |
|
|
|
int m = month (local_t); |
|
|
|
if(m < 3 || m > 10) return 0; // no DSL in Jan, Feb, Nov, Dez
|
|
|
|
if(m > 3 && m < 10) return 1; // DSL in Apr, May, Jun, Jul, Aug, Sep
|
|
|
|