//void updateUptime() //{ // sysUptime_mins++; // if (sysUptime_mins == 60) // { // sysUptime_mins = 0; // sysUptime_hours++; // } // if (sysUptime_hours == 24) // { // sysUptime_hours = 0; // sysUptime_days++; // } //} //void buildUptimeString() //{ // if (sysUptime_days > 0) // sprintf(uptimeStr, "%dd %02d:%02d", sysUptime_days, sysUptime_hours, sysUptime_mins); // else // sprintf(uptimeStr, "%02d:%02d", sysUptime_hours, sysUptime_mins); //} void updateUptime() { if (millis() >= 3000000000) // save expected rollover { sysUptime.highMillis = 1; } if (millis() <= 100000 && sysUptime.highMillis == 1) // save actual rollover { sysUptime.rollover++; sysUptime.highMillis = 0; } unsigned long secsUp = millis() / 1000; sysUptime.sec = secsUp % 60; sysUptime.min = (secsUp / 60) % 60; sysUptime.hour = (secsUp / (60 * 60)) % 24; sysUptime.day = (sysUptime.rollover * 50) + (secsUp / (60 * 60 * 24)); // millis rollover ~50days } char* getUptimeStr(bool includeSeconds) { updateUptime(); if(includeSeconds) { if(sysUptime.day == 0) sprintf(sysUptime.uptimeStr, "%02u:%02u:%02u", sysUptime.hour, sysUptime.min, sysUptime.sec); else sprintf(sysUptime.uptimeStr, "%ud %02u:%02u:%02u", sysUptime.day, sysUptime.hour, sysUptime.min, sysUptime.sec); } else { if(sysUptime.day == 0) sprintf(sysUptime.uptimeStr, "%02u:%02u", sysUptime.hour, sysUptime.min); else sprintf(sysUptime.uptimeStr, "%ud %02u:%02u", sysUptime.day, sysUptime.hour, sysUptime.min); } return sysUptime.uptimeStr; } void createDeviceName() { byte mac[6]; WiFi.macAddress(mac); sprintf(confDevWiFi.deviceName, "%s-%02X%02X", FIRMWARE_SHORTNAME, (uint8_t)mac[4], (uint8_t)mac[5]); } void restart() { delay(100); //ESP.restart(); // Adding Safer Restart method ESP.wdtDisable(); ESP.reset(); delay(2000); } void logSysdata() { char logBuf[101]; sprintf_P(logBuf, "SYS: uptime=%s, heapFree=%u, heapFragm=%u%%, heapMaxBlock=%u", getUptimeStr(true), ESP.getFreeHeap(), ESP.getHeapFragmentation(), ESP.getMaxFreeBlockSize()); //sprintf_P(logBuf, "SYS: uptime=%lu, freeHeap=%u, heapFragm=%u%%", millis(), ESP.getFreeHeap(), ESP.getHeapFragmentation()); sendLog(logBuf, LOGLEVEL_INFO); } void printIpcfg() { char buf[100]; byte mac[6]; WiFi.macAddress(mac); sprintf(buf, "%s: SSID='%s', IP='%s', GW='%s', DNS='%s', MAC='%02X:%02X:%02X:%02X:%02X:%02X'", PGMStr_WiFi, WiFi.SSID().c_str(), WiFi.localIP().toString().c_str(), WiFi.gatewayIP().toString().c_str(), WiFi.dnsIP().toString().c_str(), (uint8_t)mac[0], (uint8_t)mac[1], (uint8_t)mac[2], (uint8_t)mac[3], (uint8_t)mac[4], (uint8_t)mac[5]); sendLog(buf, LOGLEVEL_INFO); }