diff --git a/doc/img/status.png b/doc/img/status.png
index 7643cf3..32b4754 100644
Binary files a/doc/img/status.png and b/doc/img/status.png differ
diff --git a/include/pages.h b/include/pages.h
index 1914a37..cc22430 100644
--- a/include/pages.h
+++ b/include/pages.h
@@ -14,6 +14,8 @@
void sendResponseTrailer(AsyncResponseStream *response);
void sendButton(AsyncResponseStream *response, const char *title, const char *action, const char *css = "");
void sendTableRow(AsyncResponseStream *response, const char *name, uint32_t value);
+ void sendTableRow(AsyncResponseStream *response, const char *name, String value);
void sendDebugForm(AsyncResponseStream *response, String slaveId, String reg, String function, String count);
const String ErrorName(Modbus::Error code);
+ const String WiFiQuality(int rssiValue);
#endif /* PAGES_H */
\ No newline at end of file
diff --git a/src/pages.cpp b/src/pages.cpp
index d0a6621..a4264c4 100644
--- a/src/pages.cpp
+++ b/src/pages.cpp
@@ -19,6 +19,15 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
auto *response = request->beginResponseStream("text/html");
sendResponseHeader(response, "Status");
response->print("
");
+
+ // show ESP infos...
+ sendTableRow(response, "ESP Uptime (sec)", esp_timer_get_time() / 1000000);
+ sendTableRow(response, "ESP SSID", WiFi.SSID());
+ sendTableRow(response, "ESP RSSI", WiFi.RSSI());
+ sendTableRow(response, "ESP WiFi Quality", WiFiQuality(WiFi.RSSI()));
+ sendTableRow(response, "ESP MAC", WiFi.macAddress());
+ sendTableRow(response, "ESP IP", WiFi.localIP().toString() );
+
sendTableRow(response, "RTU Messages", rtu->getMessageCount());
sendTableRow(response, "RTU Pending Messages", rtu->pendingRequests());
sendTableRow(response, "RTU Errors", rtu->getErrorCount());
@@ -469,6 +478,14 @@ void sendButton(AsyncResponseStream *response, const char *title, const char *ac
"", action, css, title);
}
+void sendTableRow(AsyncResponseStream *response, const char *name, String value){
+ response->printf(
+ ""
+ "%s: | "
+ "%s | "
+ "
", name, value.c_str());
+}
+
void sendTableRow(AsyncResponseStream *response, const char *name, uint32_t value){
response->printf(
""
@@ -564,3 +581,16 @@ const String ErrorName(Modbus::Error code)
default: return "undefined error";
}
}
+
+// translate RSSI to quality string
+const String WiFiQuality(int rssiValue)
+{
+ switch (rssiValue)
+ {
+ case -30 ... 0: return "Amazing";
+ case -67 ... -31: return "Very Good";
+ case -70 ... -68: return "Okay";
+ case -80 ... -71: return "Not Good";
+ default: return "Unusable";
+ }
+}