miscFunctions.ino 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. //void updateUptime()
  2. //{
  3. // sysUptime_mins++;
  4. // if (sysUptime_mins == 60)
  5. // {
  6. // sysUptime_mins = 0;
  7. // sysUptime_hours++;
  8. // }
  9. // if (sysUptime_hours == 24)
  10. // {
  11. // sysUptime_hours = 0;
  12. // sysUptime_days++;
  13. // }
  14. //}
  15. //void buildUptimeString()
  16. //{
  17. // if (sysUptime_days > 0)
  18. // sprintf(uptimeStr, "%dd %02d:%02d", sysUptime_days, sysUptime_hours, sysUptime_mins);
  19. // else
  20. // sprintf(uptimeStr, "%02d:%02d", sysUptime_hours, sysUptime_mins);
  21. //}
  22. void updateUptime()
  23. {
  24. if (millis() >= 3000000000) // save expected rollover
  25. {
  26. sysUptime.highMillis = 1;
  27. }
  28. if (millis() <= 100000 && sysUptime.highMillis == 1) // save actual rollover
  29. {
  30. sysUptime.rollover++;
  31. sysUptime.highMillis = 0;
  32. }
  33. unsigned long secsUp = millis() / 1000;
  34. sysUptime.sec = secsUp % 60;
  35. sysUptime.min = (secsUp / 60) % 60;
  36. sysUptime.hour = (secsUp / (60 * 60)) % 24;
  37. sysUptime.day = (sysUptime.rollover * 50) + (secsUp / (60 * 60 * 24)); // millis rollover ~50days
  38. }
  39. char* getUptimeStr(bool includeSeconds) {
  40. updateUptime();
  41. if(includeSeconds) {
  42. if(sysUptime.day == 0) sprintf(sysUptime.uptimeStr, "%02u:%02u:%02u", sysUptime.hour, sysUptime.min, sysUptime.sec);
  43. else sprintf(sysUptime.uptimeStr, "%ud %02u:%02u:%02u", sysUptime.day, sysUptime.hour, sysUptime.min, sysUptime.sec);
  44. }
  45. else {
  46. if(sysUptime.day == 0) sprintf(sysUptime.uptimeStr, "%02u:%02u", sysUptime.hour, sysUptime.min);
  47. else sprintf(sysUptime.uptimeStr, "%ud %02u:%02u", sysUptime.day, sysUptime.hour, sysUptime.min);
  48. }
  49. return sysUptime.uptimeStr;
  50. }
  51. void createDeviceName()
  52. {
  53. byte mac[6];
  54. WiFi.macAddress(mac);
  55. sprintf(confDevWiFi.deviceName, "%s-%02X%02X", FIRMWARE_SHORTNAME, (uint8_t)mac[4], (uint8_t)mac[5]);
  56. }
  57. void restart()
  58. {
  59. delay(100);
  60. //ESP.restart();
  61. // Adding Safer Restart method
  62. ESP.wdtDisable();
  63. ESP.reset();
  64. delay(2000);
  65. }
  66. void logSysdata()
  67. {
  68. char logBuf[101];
  69. sprintf_P(logBuf, "SYS: uptime=%s, heapFree=%u, heapFragm=%u%%, heapMaxBlock=%u", getUptimeStr(true), ESP.getFreeHeap(), ESP.getHeapFragmentation(), ESP.getMaxFreeBlockSize());
  70. //sprintf_P(logBuf, "SYS: uptime=%lu, freeHeap=%u, heapFragm=%u%%", millis(), ESP.getFreeHeap(), ESP.getHeapFragmentation());
  71. sendLog(logBuf, LOGLEVEL_INFO);
  72. }
  73. void printIpcfg() {
  74. char buf[100];
  75. byte mac[6];
  76. WiFi.macAddress(mac);
  77. 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]);
  78. sendLog(buf, LOGLEVEL_INFO);
  79. }