Hallo udo1toni,
darf ich zu dem zitierten Teil nochmal was nachfragen?
Was ist mein Systemstand:
1.) Windows-basierendes System eines Tiny-PCs habe ich gestern auf OH 3.2.0 aktualisiert.
2.) Habe wegen paar Fehlern nach dem Updatescript (meine 3.1.0 er Installation war arg angeschossen) dann eine neue OH 3.2.0 aufgesetzt und wieder initialisiert.
3.) aus dem letzten gesicherten Backup den Stand Anfang Dezember wieder hin bekommen mit selektiven zusammenkopieren.
4.) Zugriff auf die ausgelagerte MariaDB auf einem Synology läuft wieder, alte historische Daten (Solarertrag z.B.) alle wieder da.
Also erstmal läuft meine frische OH 3.2.0 wieder korrekt, meine überwachten Sensoren und gesteuerten Aktoren (zeitlich oder von Sensoren geführt) sind da, es klappt wieder alles.
Mein MANKO ist, dass ich eher von der Hardwareecke komme und immer so einige Verständnisprobleme bei den Softwarethemen habe, mir fehlt da irgendie die Ader.
Was ist mein Problem:
Ich scheitere seit etlichen Wochen daran, Umrechnungen von Items hin zu bekommen, wenn diese Werte im nicht gewünschten Format vorliegen.
Konkret habe ich den Stand:
- die Javascript Transformation ist lt. OpenHAB-Menü installiert
- Mein Script "secs2hms.js" ist im Verzeichnis transform (Inhalt siehe unten im Zitat, die im Verlauf erwähnte korrigierte Variante)
- meine Fritzbox 7590 ist eingebunden
- die Uptime in Sekunden liegt vor als Item (wird aller 60 Sekunden aktualisiert)
- mit dem Channel Link zur Fritzbox Uptime
- im Channel das Profile "JS" ausgewählt (ist sicher nur da, wenn "JS Transformation" installiert ist).
- und die Datei "secs2hms.js" in der Menüauswahl auch angeboten bekommen und direkt ausgewählt.
- Speichern, der Teil m.E. korrekt erledigt.
Ab diesem Zeitpunkt habe ich aber bereits in den Logs von OpenHAB (openhab.log) folgende Einträge stehen:
Code: Alles auswählen
2021-12-30 12:15:40.200 [WARN ] [iles.JavaScriptTransformationProfile] - Could not transform state '1370470 s' with function 'secs2hms.js' and format '%s'
Die dargestellte Zeit bleibt in Sekunden im Item.
Sicher nur ein trivialer Fehler, aber ich kriege es nicht gebacken
Und dabei bin ich noch nichtmal am Schritt 2 angekommen "Im Label der Items setzt Du dann jeweils das Script zur Transformation:"
Was mir als DAU / OpenHAb Einsteiger noch etwas zu kryptisch ist...
Meine Datei "secs2hms.js"
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 + "Tage " + hours + "Stunden ";
if (Minuten < 10)
retval = retval + "0";
retval = retval + minutes + "m ";
if (seconds < 10)
retval = retval + "0";
retval = retval + seconds + "s";
return retval;
})(input)
udo1toni hat geschrieben: ↑28. Jan 2020 00:30
Es bietet sich an, das mit einer Transformation zu machen, in diesem Fall Java Script.
Das Script ist im Verzeichnis transform, unter dem Namen "secs2hms.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:
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.
viele Grüße und Dank vorab
openHAB-Rookie / Tommy