Darstellung Sekunden in hh:mm:ss

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

TomW80
Beiträge: 70
Registriert: 7. Mai 2021 19:11
Answers: 0

Darstellung Sekunden in hh:mm:ss

Beitrag von TomW80 »

Hallo,

ich möchte die gelieferten Sekunden eines Items in hhh:mm:ss darstellen.
Per State Description das ganze so formatiert.

Code: Alles auswählen

%1$tH:%1$tM:%1$tS
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

Benutzeravatar
lenschith
Beiträge: 246
Registriert: 11. Dez 2020 22:36
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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

Code: Alles auswählen

JS(config:js:SecToDHMS):%s
openHAB4.1.2 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

TomW80
Beiträge: 70
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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

Benutzeravatar
lenschith
Beiträge: 246
Registriert: 11. Dez 2020 22:36
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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
openHAB4.1.2 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

TomW80
Beiträge: 70
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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:

Code: Alles auswählen

Text item=LandroidTotalBladeTime
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
lenschith
Beiträge: 246
Registriert: 11. Dez 2020 22:36
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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
openHAB4.1.2 in einem Docker Container auf RPI4b-4GB, AVM: Fritz!Box 7590 - DECT301 - Comet, DECT210, DECT200, DECT440, Alexa, Shelly, Tasmota, ESP Easy, WLED

TomW80
Beiträge: 70
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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

TomW80
Beiträge: 70
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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

Harka
Beiträge: 313
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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.

Benutzeravatar
udo1toni
Beiträge: 13996
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Darstellung Sekunden in hh:mm:ss

Beitrag 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 Zeitspanne, sondern um ein Datum (also einen Zeitpunkt) 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).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Antworten