UoM: Sekunden in Stunden und/oder Minuten darstellen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von OliverCJ »

Hallo zusammen,

ich muss jetzt noch mal ganz konkret fragen. Ich habe folgendes Item:

Code: Alles auswählen

Number:Time Kueche_Geschirrspueler_RemainingProgramTimeState
	"Verbleibende Zeit"
	(gKuecheGeschirrspueler)
	{channel="homeconnect:dishwasher:api_bridge_at_home:dishwasher1:remaining_program_time_state"}
Der Channel liefert die Restlaufzeit einer Spülmaschine in Sekunden. Ich hätte aber gerne ein Darstellung in Minuten, besser noch in Stunden und Minuten.

Wenn ich mir nun die Doku zu Units of Measurement durchlese, dann kann :Time die Einheiten s, min, h, d, week und y darstellen. Und wenn ich einige Beiträge zu UoM nicht völlig falsch verstanden habe, dann übernimmt UoM quasi die Umrechnung.

Auf der anderen Seite habe ich gestern im englischen Forum einen Beitrag - zugegeben von 2017 - gefunden, dass genau das nicht gehen würde. Wenn ein Channel Sekunden liefert, dann werden eben die angezeigt und ein umrechnen muss über eine rule erfolgen.

Ja was denn nun? Kann mir vielleicht jemand auf die Sprünge helfen?

Danke!
von Quautiputzli » 4. Mai 2021 16:58
Hi, bei meiner Waschmaschiene kommt die Zeit eigentlich auch in Sekunden. Ich habe in der state description einfach stehen "%.0f min" und schon zeigt er es in Minuten an.

Edit:
Ich denke aber, Voraussetzung dafür ist, dass der Channel als Number angelegt ist und in der Zeile unit muss dann eben "s" für Sekunden stehen.
Gehe zur vollständigen Antwort

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

int5749
Beiträge: 1161
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von int5749 »

OliverCJ hat geschrieben: 3. Mai 2021 21:57
Ja was denn nun? Kann mir vielleicht jemand auf die Sprünge helfen?

Danke!
Wenn so nett gefragt wird 8-)

Ich habe dies bei mir über JS Transformation gelöst. Diese muss natürlich zunächst installiert sein

Item

Code: Alles auswählen

Number:Time Kueche_Geschirrspueler_RemainingProgramTimeState  "Verbleibende Zeit [JS(minstohours.js):%s]"
JS welches im richtigen Verzeichnis liegen muss

Code: Alles auswählen

/*
Javascript transform function to change the number
of minutes of CPU time from the System Info Binding
into a more readable format
eg: 2365 into '1 day 15 hours 25 minutes

The item in the items file is defined as follow:
Number LocalComputer_Cpu_SystemUptime "[JS(CPUTime.js):%s]"
and linked via PaperUI to the System uptime channel
of the System Info Thing
*/

(function(i) {
    if (i == 'NULL') { return i; }
    if (i == '-') { return 'Undefined'; }
    var val = parseInt(i); // The value sent by OH is a string so we parse into an integer
    var days = 0; // Initialise variables
    var hours = 0;
    var minutes = 0;
    if (val >= 1440) { // 1440 minutes in a days
        days = Math.floor(val / 1440); // Number of days
        val = val - (days * 1440); // Remove days from val
    }
    if (val >= 60) { // 60 minutes in an hour
       hours = Math.floor(val /60); // Number of hours
        val = val - (hours * 60); // Remove hours from val
    }
    minutes = Math.floor(val); // Number of minutes

    var stringDays = ''; // Initialse string variables
    var stringHours = '';
    var stringMinutes = '';
    if (days === 1) {
        stringDays = '1 day '; // Only 1 day so no 's'
    } else if (days > 1) {
        stringDays = days + ' days '; // More than 1 day so 's'
    } // If days = 0 then stringDays remains ''

    if (hours === 1) {
        stringHours = '1 hour '; // Only 1 hour so no 's'
    } else if (hours > 1) {
        stringHours = hours + ' hours '; // More than 1 hour so 's'
    } // If hours = 0 then stringHours remains ''

    if (minutes === 1) {
        stringMinutes = '1 minute'; // Only 1 minute so no 's'
    } else if (minutes > 1) {
        stringMinutes = minutes + ' minutes'; // More than 1 minute so 's'
    } // If minutes = 0 then stringMinutes remains ''

    var returnString =  stringDays + stringHours + stringMinutes
    return returnString.trim(); // Removes the extraneous space at the end

})(input)
Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Quautiputzli
Beiträge: 317
Registriert: 29. Okt 2020 19:53
Answers: 2

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von Quautiputzli »

Hi, bei meiner Waschmaschiene kommt die Zeit eigentlich auch in Sekunden. Ich habe in der state description einfach stehen "%.0f min" und schon zeigt er es in Minuten an.

Edit:
Ich denke aber, Voraussetzung dafür ist, dass der Channel als Number angelegt ist und in der Zeile unit muss dann eben "s" für Sekunden stehen.
Servus

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von OliverCJ »

Hallo und vielen Dank euch beiden für die Antworten!

Das war übrigens tatsächlich nett gemeint, ich war zu dem Zeitpunkt nur sehr verwirrt, dass die Aussagen so unterschiedlich waren und ich tatsächlich viele Beispiele gefunden habe, wo Leute das mit rules umgerechnet haben. Aber da konnte ich mir halt nicht vorstellen, dass das der Sinn von UoM sein soll.

Und tatsächlich hat Quautiputzli die Lösung geliefert... Aber warum steht das so nirgendwo? Oder doch und ich habe es nur nicht gesehen/verstanden?
Egal... so läuft es... Danke noch mal!

Viele Grüße
Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Galadriel13
Beiträge: 216
Registriert: 30. Dez 2019 20:29

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von Galadriel13 »

Hallo zusammen,

anlehnend an diese Frage habe ich auch eine Frage an euch:
Ein Item für die Bewässerungsdauer gibt die Laufzeit in Sekunden aus z.B. 300s für 5 Minuten).
Dies möchte ich aber in Minuten mit Einheit angezeigt bekommen.

Wichtig ist, dass nur die Ausgabe in Minuten erfolgt, die Eingabe (als Slider) muss in Sekunden bleiben, da sonst die SPS zickt.

Wie kann ich das anstellen?

Danke im Voraus.
Hausautomation zu 95% mit Siemens Logo! (5x 0BA8).
Gartenbewässerung, Rollosteuerung, Lichtsteuerung, etc.
Abfrage von Temperaturen, Helligkeit, Füllstand Zisterne Leistung Photovoltaik.

openHAB 4.0.4 mit folgenden Bindings:

- Bosch Indego Binding
- Tankerkönig Binding
- iCalendar Binding
- iCloud Binding
- Anwesenheit via iCloud
- ComfoAir Binding (Zehnder AirComfort A350)
- SolarEdge Binding (PV)
- OpenWeatherMap Binding
- DWD Pollenflug Binding
- DWD Unwetter Binding
- FritzBox TR064 Binding
- PLCLogo Binding
- WIFI LED Binding
- Luxtronikheatpump (Novelan-WP)
- BEOK Raumthermostate
- myenergi

Benutzeravatar
OliverCJ
Beiträge: 404
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von OliverCJ »

Hi,

Stell doch das item mal hier rein, dann könnten wir vielleicht helfen...

Gesendet von meinem SM-N975F mit Tapatalk



_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Galadriel13
Beiträge: 216
Registriert: 30. Dez 2019 20:29

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von Galadriel13 »

OliverCJ hat geschrieben: 11. Mai 2021 17:58 Hi,

Stell doch das item mal hier rein, dann könnten wir vielleicht helfen...

Gesendet von meinem SM-N975F mit Tapatalk

Hi, ich nutze openHAB3.

Die Frage ist, wie ich ggf. mit einer Transformation/Java das lösen kann.

Unter Metadata --> State Description funktioniert das scheinbar nicht.
Hausautomation zu 95% mit Siemens Logo! (5x 0BA8).
Gartenbewässerung, Rollosteuerung, Lichtsteuerung, etc.
Abfrage von Temperaturen, Helligkeit, Füllstand Zisterne Leistung Photovoltaik.

openHAB 4.0.4 mit folgenden Bindings:

- Bosch Indego Binding
- Tankerkönig Binding
- iCalendar Binding
- iCloud Binding
- Anwesenheit via iCloud
- ComfoAir Binding (Zehnder AirComfort A350)
- SolarEdge Binding (PV)
- OpenWeatherMap Binding
- DWD Pollenflug Binding
- DWD Unwetter Binding
- FritzBox TR064 Binding
- PLCLogo Binding
- WIFI LED Binding
- Luxtronikheatpump (Novelan-WP)
- BEOK Raumthermostate
- myenergi

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

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von udo1toni »

Der oben beschriebene Weg funktioniert nur mit UoM Items (also Number:Time). Wenn Du ein "gewöhnliches" Number Item verwendest, kannst Du mit einer JavaScript Transformation arbeiten. Bitte Java und JavaScript nicht miteinander verwechseln ;)
Ich nutze dieses Script:

Code: Alles auswählen

(function(seconds){
    var retval = "";
    var minutes = Math.floor(seconds / 60)
    seconds = seconds % 60
    if (minutes < 10)
        retval = retval + "0";
    retval = retval + minutes + "'";
    if (seconds < 10)
        retval = retval + "0";
    retval = retval + seconds + "\"";
    return retval;
})(input)
Der Aufruf sieht dann ungefähr so aus:

Code: Alles auswählen

Number MyTimeItem "Zeit [JS(minsec.js):%s]"
Die Datei mit dem Code heißt bei mit minsec.js und sie befindet sich im Ordner transform (nicht etwas unter scripts), denn JS ist hier ein Transformation Service.

Die Ausgabe sieht dann so aus: Zeit 5'35"
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Galadriel13
Beiträge: 216
Registriert: 30. Dez 2019 20:29

Re: UoM: Sekunden in Stunden und/oder Minuten darstellen

Beitrag von Galadriel13 »

Vielen Dank, das ist es.
Hausautomation zu 95% mit Siemens Logo! (5x 0BA8).
Gartenbewässerung, Rollosteuerung, Lichtsteuerung, etc.
Abfrage von Temperaturen, Helligkeit, Füllstand Zisterne Leistung Photovoltaik.

openHAB 4.0.4 mit folgenden Bindings:

- Bosch Indego Binding
- Tankerkönig Binding
- iCalendar Binding
- iCloud Binding
- Anwesenheit via iCloud
- ComfoAir Binding (Zehnder AirComfort A350)
- SolarEdge Binding (PV)
- OpenWeatherMap Binding
- DWD Pollenflug Binding
- DWD Unwetter Binding
- FritzBox TR064 Binding
- PLCLogo Binding
- WIFI LED Binding
- Luxtronikheatpump (Novelan-WP)
- BEOK Raumthermostate
- myenergi

Antworten