diff --git a/src/HAP.cpp b/src/HAP.cpp index c343d4b..a72df6a 100644 --- a/src/HAP.cpp +++ b/src/HAP.cpp @@ -1256,6 +1256,16 @@ int HAPClient::putPrepareURL(char *json){ int HAPClient::getStatusURL(){ + char clocktime[33]; + + if(homeSpan.webLog->timeInit){ + struct tm timeinfo; + getLocalTime(&timeinfo,10); + strftime(clocktime,sizeof(clocktime),"%c",&timeinfo); + } else { + sprintf(clocktime,"Unknown"); + } + char uptime[16]; int seconds=esp_timer_get_time()/1e6; int secs=seconds%60; @@ -1268,13 +1278,14 @@ int HAPClient::getStatusURL(){ String response="HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n"; response+="HomeSpan Status\n"; - response+="\n"; response+="\n"; response+="

" + String(homeSpan.displayName) + "

\n"; response+="\n"; response+="\n"; + response+="\n"; response+="\n"; response+="\n"; response+="\n"; @@ -1292,9 +1303,21 @@ int HAPClient::getStatusURL(){ lastIndex=0; for(int i=homeSpan.webLog->nEntries-1;i>=lastIndex;i--){ - response+=""; + int index=i%homeSpan.webLog->maxEntries; + seconds=homeSpan.webLog->log[index].upTime/1e6; + secs=seconds%60; + mins=(seconds/=60)%60; + hours=(seconds/=60)%24; + days=(seconds/=24); + sprintf(uptime,"%d:%02d:%02d:%02d",days,hours,mins,secs); + + if(homeSpan.webLog->log[index].clockTime.tm_year>0) + strftime(clocktime,sizeof(clocktime),"%c",&homeSpan.webLog->log[index].clockTime); + else + sprintf(clocktime,"Unknown"); + + response+=""; } - response+="
Up Time:" + String(uptime) + "
Current Time:" + String(clocktime) + "
Boot Time:" + String(homeSpan.webLog->bootTime) + "
ESP32 Board:" + String(ARDUINO_BOARD) + "
Arduino-ESP Version:" + String(ARDUINO_ESP_VERSION) + "
" + String(i+1) + "" + "TBD1" "" + "TBD2" + "" + String(homeSpan.webLog->log[i%homeSpan.webLog->maxEntries].message) + "
" + String(i+1) + "" + String(uptime) + "" + String(clocktime) + "" + String(homeSpan.webLog->log[index].message) + "
\n"; } diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 69a6948..0d7a4cb 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -1965,9 +1965,9 @@ void SpanWebLog::addLog(const char *m){ int index=nEntries%maxEntries; - log[index].upTime=esp_timer_get_time()/1e6; + log[index].upTime=esp_timer_get_time(); if(timeInit) - getLocalTime(&log[index].clockTime); + getLocalTime(&log[index].clockTime,10); else log[index].clockTime.tm_year=0; log[index].message=m; diff --git a/src/HomeSpan.h b/src/HomeSpan.h index 362fa7e..748fd72 100644 --- a/src/HomeSpan.h +++ b/src/HomeSpan.h @@ -105,7 +105,7 @@ struct SpanWebLog{ // optional web status/log data String statusURL; // URL of status log struct log_t { // log entry type - uint32_t upTime; // number of seconds since booting + uint64_t upTime; // number of seconds since booting struct tm clockTime; // clock time const char *message; // pointers to log entries of arbitrary size } *log=NULL; // array of log entries