NEWS
Sekunden in d/h/m umrechnen
-
@Mic Hier der inhalt von NUC.uptime:
{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1577495005124, "common": { "name": "Controller - uptime in seconds", "type": "string", "role": "value", "unit": "seconds", "read": true, "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "system.host.NUC.uptime", "type": "state" }
Und hier mein DP:
{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1573829622690, "common": { "name": "Uptime_NUC", "role": "", "type": "string", "desc": "Manuell erzeugt", "read": true, "write": true }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "javascript.0.Eigene_Datenpunkte.Haus.Uptime_NUC", "type": "state" }
Folgende Fehler kommen dann im Log:
javascript.0 2019-12-29 09:20:25.538 error (1857) at processImmediate (timers.js:658:5)
javascript.0 2019-12-29 09:20:25.538 error (1857) at tryOnImmediate (timers.js:676:5)
javascript.0 2019-12-29 09:20:25.538 error (1857) at runCallback (timers.js:705:18)
javascript.0 2019-12-29 09:20:25.538 error (1857) at Immediate.setImmediate (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:226:41)
javascript.0 2019-12-29 09:20:25.538 error (1857) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:4745:37)
javascript.0 2019-12-29 09:20:25.538 error (1857) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:439:25)
javascript.0 2019-12-29 09:20:25.538 error (1857) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1101:38)
javascript.0 2019-12-29 09:20:25.538 error (1857) at Object.<anonymous> (script.js.common.Diverse_Scripte.nuc-test:3:29)
javascript.0 2019-12-29 09:20:25.537 error (1857) Error in callback: TypeError: dp.state.val.split is not a functionDas Zeichen für das ausführen des Scriptes wird gelb
-
Hallo,
was werden den in beiden Fällen für Werte geliefert? Wenn ich die Uptime von meinem Host anzeigen lasse, steht dort eine Zahl. Mit der Split-Funktion versuchst du bei jedem Leerzeichen die Zahl zu trennen. Da du aber nur eine Zahl ohne Leerzeichen hast funktioniert das nicht.
Versuch mal das Split wegzulassen und dann bei timesec die eckigen Klammern.on({id: 'system.host.ioBroker-Test.uptime'/*Controller - uptime in seconds*/, change: "ne"}, function (dp) { log (dp.state.val); var timesec = dp.state.val; var timenew = Math.floor(timesec / 3600 )+'h'+Math.floor( (timesec % 3600) / 60 )+'min'; setState('javascript.0.Uptime_iobtest'/*javascript 0 Uptime iobtest*/,timenew); log (timenew); });
-
Warum so kompliziert. Einfach ein Basic-html Widget in VIS (gehe mal davon aus das Du es dafür brauchst)
und im html Bereich dies reinUptime : {d:proxmox.0.node_Netzserver.uptime;Math.floor( ((d)/60/60/24) )} Tage‚{h:proxmox.0.node_Netzserver.uptime;Math.floor( ((h)/60/60) % 24 )} Std‚ {m:proxmox.0.node_Netzserver.uptime;Math.floor( ((m)/60) % 60 )} Min
-
@Dolomiti Das interessante ist ja, dass bei beiden die selben Werte gesetzt werden, bei dem einen Script geht es, bei dem anderen nicht
-
@guergen
Du hast Recht. Hab es mit meinem NAS ausprobiert. Hier funktioniert es auch. Hängt es vielleicht mit der Struktur der Ausgangswerte zusammen?Edit: Bei der System-Uptime ist der Type Number, beim NAS ein String. Meines Wissens nach funktioniert Split nur beim String. Bei Number macht das ja auch keinen Sinn, das es nur einen Wert gibt ohne Leerzeichen o.Ä. Beim NAS findet er kein Leerzeichen und nimmt deshalb auromatisch die ganze Zahl.
-
@Dolomiti Mit Deinem Vorschlag des Scripts fängt er jetzt grade bei 1 minute an.... es sind aber 11700 sekunden
-
@guergen
Bei mir passt es zusammen
-
@Dolomiti Hmmh.....:
-
@Dolomiti Wenn ich jetzt die eckigen Klammern einfüge kommt folgendes:
-
@guergen
Hat der Tag nicht nur 86400 Sekunden. Sind da nicht zwei Nullen zuviel?
Poste mal dein Skript. -
@Dolomiti Ähhh... ja.... habe es grade geändert, das andere waren hundertstel Sekunden....
Aber es nutzt trotzdem nichts:on({id: 'system.host.NUC.uptime', change: "ne"}, function (dp) { log (dp.state.val); var timesec = dp.state.val; var timenew = Math.floor(timesec[0] / 86400 )+'Tage'+Math.floor( (timesec[0] % 86400) / 3600 )+'h'+Math.floor( (timesec[0] % 3600) / 60 )+'min'; setState('javascript.0.Eigene_Datenpunkte.Haus.Uptime_NUC',timenew); log (timenew); });
-
@guergen
Du musst die eckigen Klammern weglassen. -
@Dolomiti Oh man...
Manchmal sieht man vor lauter Bäumen den Wald nicht...
Danke!
Lauft! -
@guergen nimm mal das.
({id: 'proxmox.0.qemu_iobroker.uptime'/*uptime*/, change: "ne"}, function (dp) { //log (dp.state.val); var timesec = dp.state.val; var timenew = Math.floor(timesec /60/60/24 )+' Tag(e), '+Math.floor(timesec / 60/60 % 24)+' Std, '+Math.floor( (timesec / 60) % 60 )+' Min'; setState('javascript.0.Vis.Anzeige.iobroker_Laufzeit'/*iobroker Laufzeit*/,timenew); //log (timenew); })
-
@Homer-J das "code_" und das "text" muss noch raus
-
@guergen jab ändere es.
funktioniert es. ? -
@Homer-J JA!
Sieht einfacher aus... dann kommt man mit den Nullen nicht durcheinander!