Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

N1d45
Beiträge: 123
Registriert: 5. Jan 2020 14:26
Answers: 2

Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von N1d45 »

Huhu.

Der liebe Shelly liefert seine Betriebszeit in Sekunden an ein Item. Diese Zahl wird natürlich sehr groß mit der Zeit und sieht auf der Sitemap unanschaulich und unüberschaubar aus.

Was für möglichkeiten hat man, um sich das in Tag : Stunden : Minuten : Sekunden anzeigen zu lassen?

Kann man das direkt in der Sitemap irgendwie formatieren, ähnlich wie das nach Komma abrunden?

Oder muß man da sogar eine Rule erstellen?

Wenn ja, muss man dann für jeden Shelly eine Rule erstellen? Oder kann man da irgendwie eine allgemein gültige Rule erstellen?

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

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von udo1toni »

Es bietet sich an, das mit einer Transformation zu machen, in diesem Fall Java Script.

Das Script kommt ins Verzeichnis transform, unter dem Namen sectohms.js

Code: Alles auswählen

(function(seconds){
    var retval = "";
    var hours = Math.floor(seconds / 3600)
    var minutes = Math.floor(seconds / 60)
    seconds = seconds % 60
    retval = retval + hours + ":";
    if (minutes < 10)
        retval = retval + "0";
    retval = retval + minutes + ":";
    if (seconds < 10)
        retval = retval + "0";
    retval = retval + seconds;
    return retval;
})(input)
Im Label der Items setzt Du dann jeweils das Script zur Transformation:

Code: Alles auswählen

Number myNumber "Betriebsdauer [JS(sectohms.js):%d]"
Natürlich muss die JS-Transformation installiert sein.
Die Transformation kann auch entsprechend erweitert werden, um auch die Anzahl Tage auszugeben, oder gar nur dann Tage, Stunden oder Minuten anzuzeigen, wenn die jeweiligen Grenzen überschritten werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

N1d45
Beiträge: 123
Registriert: 5. Jan 2020 14:26
Answers: 2

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von N1d45 »

Danke, bin erst heute dazu gekommen.

Es zeigt mir auf der Sitemap aber "104:6252:29" an bei 375270 Sekunden. Da scheint noch etwas nicht ganz zu stimmen?

Mal etwas damit ich es besser verstehe. Math.floor rundet ab?

Ich vermute die Stunden werden von den Minuten nicht abgezogen. Mal sehen ob ich da etwas selber zusammen frikeln kann.

--------------------------------------------------------------------------------
Edit 1:
Ich habe noch

Code: Alles auswählen

 minutes = minutes % 60 
hinzugefügt. Damit funktioniert es.

Damit ich es richtig verstehe. gibt den Rest von geteilt durch 60 an? Oder wie genau kann man das verstehen? Gibt es irgendwo eine deutsche Doku zu diesen Befehlen?

Und Danke :)

--------------------------------------------------------------------------------
Edit 2:
So, nun habe ich es mal Final für mich angepasst.

Code: Alles auswählen

(function(seconds){
    var retval  = "";
    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)
Auf der Sitemap kommt dann folgendes herraus

Code: Alles auswählen

Betriebsdauer    4d 8h 31m 36s
Zuletzt geändert von N1d45 am 30. Jan 2020 21:26, insgesamt 2-mal geändert.

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

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von udo1toni »

Ach, Mist, ja, ich hatte die falsche Datei kopiert und war dann zu faul, noch mal nachzuschauen...

% ist der Modulo Operator. Das ist der Rest einer Division. (also z.B. 5 % 3 ergibt 2)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

maseb
Beiträge: 2
Registriert: 29. Mai 2020 01:16
Answers: 0

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von maseb »

Hallo,

auf meiner sitemap wird für die Batterie Time to go sekunden angezeigt .
Failed transforming the state '83279.9921875'

Wie kann ich diese in Tage und stunden Tage , h
umformatieren.

Was muss ich bei dem Skript ändern.
Wie kann ich das Skript in den items ansprechen.

%d wars ja nicht.

Gruß
Rudi

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

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von udo1toni »

Das ist ein Float Wert... Aber ob das tatsächlich Sekunden sein sollen?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

maseb
Beiträge: 2
Registriert: 29. Mai 2020 01:16
Answers: 0

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von maseb »

Hallo,

ich habe die Funktion folgendermassen in .items eingesetzt

Number PV_battery_time_to_go "Battery TimeToGo [JS(sectohms.js):%d]" {mqtt="<[ccgx:N/b827eb74cb1f/system/0/Dc/Battery/TimeToGo:state:JSONPATH($.value)]"}

Die Fehlermeldung lautet
2020-05-29 23:49:43.695 [WARN ] [rest.core.item.EnrichedItemDTOMapper] - Failed transforming the state '103139.9921875' on item 'PV_battery_time_to_go' with pattern 'JS(sectohms.js):%d': Cannot format state '103139.9921875' to format '%d'

Wie muss die Funktion aufgerufen werden?

Gruß
Rudi

EmptySoft
Beiträge: 247
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von EmptySoft »

ich speichere die Zeit als Sekunden (leichter zum bearbeiten in Rules) und mache den Transform in der Sitemap

Code: Alles auswählen

Text item=Laufzeit_Today label="Laufzeit ist [JS(secToHM.js):%s]"
Variable und Scriptname an Deine anpassen
BYe
Harald

tanzehn
Beiträge: 21
Registriert: 15. Dez 2020 10:03
Answers: 0

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von tanzehn »

N1d45 hat geschrieben: 30. Jan 2020 21:10 Danke, bin erst heute dazu gekommen.

Es zeigt mir auf der Sitemap aber "104:6252:29" an bei 375270 Sekunden. Da scheint noch etwas nicht ganz zu stimmen?

Mal etwas damit ich es besser verstehe. Math.floor rundet ab?

Ich vermute die Stunden werden von den Minuten nicht abgezogen. Mal sehen ob ich da etwas selber zusammen frikeln kann.

--------------------------------------------------------------------------------
Edit 1:
Ich habe noch

Code: Alles auswählen

 minutes = minutes % 60 
hinzugefügt. Damit funktioniert es.

Damit ich es richtig verstehe. gibt den Rest von geteilt durch 60 an? Oder wie genau kann man das verstehen? Gibt es irgendwo eine deutsche Doku zu diesen Befehlen?

Und Danke :)

--------------------------------------------------------------------------------
Edit 2:
So, nun habe ich es mal Final für mich angepasst.

Code: Alles auswählen

(function(seconds){
    var retval  = "";
    var days    = Math.floor(seconds / 86400 / 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)
Auf der Sitemap kommt dann folgendes herraus

Code: Alles auswählen

Betriebsdauer    4d 8h 31m 36s

tanzehn
Beiträge: 21
Registriert: 15. Dez 2020 10:03
Answers: 0

Re: Sitemap Sekunden als Tag:stunden:minuten:sekunden anzeigen lassen.

Beitrag von tanzehn »

N1d45 hat geschrieben: 30. Jan 2020 21:10 Danke, bin erst heute dazu gekommen.

Es zeigt mir auf der Sitemap aber "104:6252:29" an bei 375270 Sekunden. Da scheint noch etwas nicht ganz zu stimmen?

Mal etwas damit ich es besser verstehe. Math.floor rundet ab?

Ich vermute die Stunden werden von den Minuten nicht abgezogen. Mal sehen ob ich da etwas selber zusammen frikeln kann.

--------------------------------------------------------------------------------
Edit 1:
Ich habe noch

Code: Alles auswählen

 minutes = minutes % 60 
hinzugefügt. Damit funktioniert es.

Damit ich es richtig verstehe. gibt den Rest von geteilt durch 60 an? Oder wie genau kann man das verstehen? Gibt es irgendwo eine deutsche Doku zu diesen Befehlen?

Und Danke :)

--------------------------------------------------------------------------------
Edit 2:
So, nun habe ich es mal Final für mich angepasst.

Code: Alles auswählen

(function(seconds){
    var retval  = "";
    var days    = Math.floor(seconds / 86400 / 24)   [b]<---- ein Tag hat 86400 sekunden[/b]
    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)
Auf der Sitemap kommt dann folgendes herraus

Code: Alles auswählen

Betriebsdauer    4d 8h 31m 36s

Antworten