Seite 1 von 2
Darstellung Sekunden in hh:mm:ss
Verfasst: 19. Apr 2024 15:03
von TomW80
Hallo,
ich möchte die gelieferten Sekunden eines Items in hhh:mm:ss darstellen.
Per State Description das ganze so formatiert.
Jetzt wird mir in der Sitemap das auch soweit angezeigt, nur sind es bei 577980s nicht 16h 33min, sondern 160h und xx min.
Wie bekomme ich das hin dass die Stunden 3stellig angezeigt werden?
Gruß Tom
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 19. Apr 2024 15:57
von lenschith
Ich nutze hier eine JS Transformation und gebe mir das in Tage Stunden Minuten und Sekunden aus
Code: Alles auswählen
(function(data){
var retval = "";
var seconds = parseInt(data);
var days = Math.floor(seconds / 3600 / 24);
var hours = Math.floor(seconds / 3600);
var minutes = Math.floor(seconds / 60);
hours = hours % 24;
minutes = minutes % 60;
seconds = seconds % 60;
retval = retval + days + "d " + hours + "h ";
if (minutes < 10)
retval = retval + "0";
retval = retval + minutes + "m ";
if (seconds < 10)
retval = retval + "0";
retval = retval + seconds + "s";
return retval;
})(input)
In der StateDescription im Pattern
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 20. Apr 2024 09:03
von TomW80
Ok, probiere ich aus.
Wo muss der Code hin?
Hab eine Datei SecToDHMS.js mit dem Code erstellt und erhalte aber nun folgenden Fehler:
Failed transforming the state '577980 s' on item 'LandroidTotalTime' with pattern 'JS(config:js:SecToDHMS):%s': Could not get script for UID 'config:js:SecToDHMS'.
Gruß Tom
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 20. Apr 2024 10:48
von lenschith
Ich mache es über die UI. Dort die Transformation mit dem Namen SecToDHMS anlegen. Wenn du das über Files machst is die state description etwas anders siehe
https://next.openhab.org/docs/configura ... ns.html#JS aber da hab nicht so viel plan da ich nur die UI nutze
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 20. Apr 2024 19:31
von TomW80
Danke, funktioniert in der UI, aber in der Sitemap wirds mir falsch dargestellt.
Screenshot 2024-04-20 192929.png
Screenshot 2024-04-20 192951.png
Sitemap ist so definiert:
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 20. Apr 2024 21:37
von lenschith
Stimmt, ist bei mir auch so. Hab ich noch nie bemerkt. ich nutze da hauptsächlich die UI um das anzuschauen.
Da muss ich erst mal schauen. Da hab ich gerade keine Ahnung warum das so ist.
hab das auch mal mit [%s] versucht aber das zeigt mir das auch falsch an.
Vielleicht hat da noch jemand einen Tipp
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 22. Apr 2024 20:02
von TomW80
Ich habe
diesen Beitrag nun gefunden der das Problem beschreibt. Dein Ansatz passt also.
Wenn ich es in der Sitemap so definiere, dann funktioniert es.
Code: Alles auswählen
Text item=LandroidTotalBladeTime label="Gesamt Klingen-Arbeitszeit [%1$td:%1$tH:%1$tM]"
bzw.
Code: Alles auswählen
Text item=LandroidTotalBladeTime label="Gesamt Klingen-Arbeitszeit [%1$tdd%1$tHh%1$tMm]"
Kann mir villeicht noch jemand sagen wie ich nach den Tagen und Stunden ein Leerzeichen bekomme?
So klappt es nicht.
Code: Alles auswählen
Text item=LandroidTotalBladeTime label="Gesamt Klingen-Arbeitszeit [%1$tdd %1$tHh %1$tMm]"
Gruß Tom
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 22. Apr 2024 20:06
von TomW80
Zu früh gefreut, habe erst jetzt gesehen dass es in der Sitemap nun einen Tag mehr anzeigt.
Jemand eine Idee wie ich den Tag da weg bekomme?
Gruß Tom
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 22. Apr 2024 21:01
von Harka
Moin,
ja, Transformation nutzen. Ist oben und in dem von Dir verlinktem Beitrag beschrieben. Wenn diese über die UI (Settings/Transformation/+/JS) angelgt wurde funktioniert es bei mir nach diesem Schema
Code: Alles auswählen
Text item=FritzBox_64_Uptime label="Uptime [JS(config:js:secs2dhms:de):%d]"
%1$td liefert nur bis 31 Tage aus. Wir hatten mal noch
"%1$tj-1d %1$tH:%1$tM" oder
"Tag %1$tj %1$tH:%1$tM". Auch da wird prinzipbedingt immer 1 Tag zu viel angezeigt.
Re: Darstellung Sekunden in hh:mm:ss
Verfasst: 23. Apr 2024 07:19
von udo1toni
TomW80 hat geschrieben: ↑22. Apr 2024 20:06
habe erst jetzt gesehen dass es in der Sitemap nun einen Tag mehr anzeigt.
Was leicht erklärbar ist, denn es handelt sich nicht um eine angezeigte Zeit
spanne, sondern um ein Datum (also einen Zeit
punkt) was da angezeigt wird. Ein Zeitpunkt wird als Kombination aus Datum und Uhrzeit angegeben, im Datum gibt es keinen Tag 0. 0 Sekunden Länge werden als 01.01.1970 0:00:00 Uhr dargestellt (weil Unix-Zeitstempel).
Am ehesten wird man wie von Harka beschrieben mit einer Transformation per Script weiterkommen. Das Script kann wahlweise nur die Anzeige beeinflussen oder den Wert direkt im Item speichern (dann muss das Item aber vom Typ String sein - die Transformation wird dann im Link zwischen Channel und Item eingerichtet).