diff --git a/lang/el.lang.json b/lang/el.lang.json
index 5c5ef7cc..8d66ea61 100644
--- a/lang/el.lang.json
+++ b/lang/el.lang.json
@@ -61,6 +61,10 @@
"Light": "Φωτεινό",
"Auto": "Αυτόματο"
},
+ "dataagedisplay": {
+ "DataAge": "Τελευταία ενημέρωση πρίν από",
+ "SecondsSince": "0 δευτερόλεπτα | 1 δευτερόλεπτα | {n} δευτερόλεπτα"
+ },
"apiresponse": {
"1001": "Οι ρυθμίσεις αποθηκεύτηκαν!",
"1002": "Δεν βρέθηκαν τιμές!",
@@ -134,8 +138,6 @@
"LiveData": "Τηλεμετρία",
"SerialNumber": "Σειριακός Αριθμός: ",
"CurrentLimit": "Τρέχον Όριο: ",
- "DataAge": "Τελευταία ενημέρωση πρίν από: ",
- "Seconds": "{val} δευτερόλεπτα",
"ShowSetInverterLimit": "Εμφάνιση/Ρύθμιση ορίου μετατροπέα",
"TurnOnOff": "Ενεργοποίηση/απενεργοποίηση του μετατροπέα",
"ShowInverterInfo": "Εμφάνιση πληροφοριών του μετατροπέα",
diff --git a/lang/es.lang.json b/lang/es.lang.json
index 1918f680..f25408b5 100644
--- a/lang/es.lang.json
+++ b/lang/es.lang.json
@@ -61,6 +61,10 @@
"Light": "Claro",
"Auto": "Automático"
},
+ "dataagedisplay": {
+ "DataAge": "Edad de los Datos",
+ "SecondsSince": "0 segundos | 1 segundos | {n} segundos"
+ },
"apiresponse": {
"1001": "¡Opciones guardadas!",
"1002": "No se encontraron valores",
@@ -134,8 +138,6 @@
"LiveData": "Datos en Vivo",
"SerialNumber": "Número de Serie: ",
"CurrentLimit": "Límite de Corriente: ",
- "DataAge": "Edad de los Datos: ",
- "Seconds": "{val} segundos",
"ShowSetInverterLimit": "Ver / Establecer Límite del Inversor",
"TurnOnOff": "Encender/Apagar el Inversor",
"ShowInverterInfo": "Ver Información del Inversor",
diff --git a/lang/it.lang.json b/lang/it.lang.json
index 1f537532..0c48c921 100644
--- a/lang/it.lang.json
+++ b/lang/it.lang.json
@@ -61,6 +61,10 @@
"Light": "Chiaro",
"Auto": "Automatico"
},
+ "dataagedisplay": {
+ "DataAge": "Aggiornamento Dati",
+ "SecondsSince": "0 secondi | 1 secondi | {n} secondi"
+ },
"apiresponse": {
"1001": "Settings saved!",
"1002": "No values found!",
@@ -134,8 +138,6 @@
"LiveData": "Dati in tempo reale",
"SerialNumber": "Numero seriale: ",
"CurrentLimit": "Limite attuale: ",
- "DataAge": "Aggiornamento Dati: ",
- "Seconds": "{val} secondi",
"ShowSetInverterLimit": "Mostra / Imposta Limite di Potenza",
"TurnOnOff": "Accendi/Spegni Inverter",
"ShowInverterInfo": "Mostra info Inverter",
diff --git a/lang/pl.lang.json b/lang/pl.lang.json
index 454635b8..e56ed24f 100644
--- a/lang/pl.lang.json
+++ b/lang/pl.lang.json
@@ -61,6 +61,10 @@
"Light": "Jasny",
"Auto": "Automatyczny"
},
+ "dataagedisplay": {
+ "DataAge": "Aktualizacja danych",
+ "SecondsSince": "0 sekund | 1 sekund | {n} sekund"
+ },
"apiresponse": {
"1001": "Ustawienia zapisane!",
"1002": "Nie znaleziono żadnych wartości!",
@@ -134,8 +138,6 @@
"LiveData": "Dane na żywo",
"SerialNumber": "Numer seryjny: ",
"CurrentLimit": "Aktualny limit: ",
- "DataAge": "Aktualizacja danych: ",
- "Seconds": "{val} sekund",
"ShowSetInverterLimit": "Pokaż / ustaw limit mocy",
"TurnOnOff": "Włącz /wyłącz falownik",
"ShowInverterInfo": "Pokaż informacje o falowniku",
diff --git a/src/WebApi_ws_live.cpp b/src/WebApi_ws_live.cpp
index 8b7518a5..d3e2a12d 100644
--- a/src/WebApi_ws_live.cpp
+++ b/src/WebApi_ws_live.cpp
@@ -146,6 +146,7 @@ void WebApiWsLiveClass::generateInverterCommonJsonResponse(JsonObject& root, std
root["name"] = inv->name();
root["order"] = inv_cfg->Order;
root["data_age"] = (millis() - inv->Statistics()->getLastUpdate()) / 1000;
+ root["data_age_ms"] = millis() - inv->Statistics()->getLastUpdate();
root["poll_enabled"] = inv->getEnablePolling();
root["reachable"] = inv->isReachable();
root["producing"] = inv->isProducing();
diff --git a/webapp/src/components/DataAgeDisplay.vue b/webapp/src/components/DataAgeDisplay.vue
new file mode 100644
index 00000000..1b329644
--- /dev/null
+++ b/webapp/src/components/DataAgeDisplay.vue
@@ -0,0 +1,34 @@
+
+