Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Sekunden in d/h/m umrechnen

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Sekunden in d/h/m umrechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • G
      guergen last edited by guergen

      Hallo,

      ich wollte die "uptime" des Nuc´s umrechnen.
      Da ich das mit den Zeiten des NAS schon habe, dachte ich mir, ändere die Datenpunkte und gut ist.
      Beim Nas (wo es funktioniert) sieht es folgendermaßen aus:

      on({id: 'snmp.0.192_168_1_91.UpTime', change: "ne"}, function (dp) {
      
      	var timesec = dp.state.val.split(' ');
      
      	var timenew = Math.floor(timesec[0] / 8640000 )+'Tage'+Math.floor( (timesec[0] % 8640000) / 360000 )+'h'+Math.floor( (timesec[0] % 360000) / 6000 )+'min';
      
          	setState("javascript.0.Eigene_Datenpunkte.NAS.NAS_8_TB_Uptime",timenew);
      
      
      });
      

      Beim Nuc habe ich das Script äquivalent so eingebaut:

      on({id: 'system.host.NUC.uptime', change: "ne"}, function (dp) {
      
      	var timesec = dp.state.val.split(' ');
      
      	var timenew = Math.floor(timesec[0] / 3600 )+'h'+Math.floor( (timesec[0] % 3600) / 60 )+'min';
      
          	setState("javascript.0.Eigene_Datenpunkte.Haus.Uptime_NUC",timenew);
      
      });
      

      Leider bekomme ich beim Nuc-Script folgenden Fehler:

      13:15:48.009 error javascript.0 (2836) at Object.<anonymous> (script.js.common.Diverse_Scripte.nuc-test:3:29)
      

      Habe es auch probiert, das "NUC-Script" im golbal laufen zu lassen, hilft nichts!
      Die Ursprungs-dp sind boolean, aber auch als Zahl geht es nicht.

      Wo liegt hier der Fehler?

      Mic 1 Reply Last reply Reply Quote 0
      • Mic
        Mic Developer @guergen last edited by Mic

        @guergen sagte in Sekunden in d/h/m umrechnen:

        'system.host.NUC.uptime'

        Hi,

        1. welcher Datentyp ist denn der State "'system.host.NUC.uptime'"? Findest du unter Objekte, da den Datenpunkt auswählen, rechts auf den "Stift" klicken, da unter "Raw", Zeile "type":
          welcherstates.png

        2. Kopiere hier mal ein Beispiel rein eines State-Inhaltes.

        G 1 Reply Last reply Reply Quote 0
        • G
          guergen @Mic last edited by guergen

          @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 function

          Das Zeichen für das ausführen des Scriptes wird gelb

          1 Reply Last reply Reply Quote 0
          • Dolomiti
            Dolomiti last edited by Dolomiti

            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);
            });
            
            G 1 Reply Last reply Reply Quote 0
            • Nashra
              Nashra Most Active Forum Testing last edited by Nashra

              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 rein

              Uptime : {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
              
              1 Reply Last reply Reply Quote 1
              • G
                guergen @Dolomiti last edited by

                @Dolomiti Das interessante ist ja, dass bei beiden die selben Werte gesetzt werden, bei dem einen Script geht es, bei dem anderen nicht

                1 Reply Last reply Reply Quote 0
                • Dolomiti
                  Dolomiti last edited by Dolomiti

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

                  G 1 Reply Last reply Reply Quote 0
                  • G
                    guergen @Dolomiti last edited by

                    @Dolomiti Mit Deinem Vorschlag des Scripts fängt er jetzt grade bei 1 minute an.... es sind aber 11700 sekunden

                    1 Reply Last reply Reply Quote 0
                    • Dolomiti
                      Dolomiti last edited by

                      @guergen
                      Bei mir passt es zusammen
                      Anmerkung 2019-12-29 132959.png
                      Anmerkung 2019-12-29 1329592.png

                      G 2 Replies Last reply Reply Quote 0
                      • G
                        guergen @Dolomiti last edited by

                        @Dolomiti Hmmh.....:
                        5ab4b6ac-0156-4a8e-b59f-324dbab45531-grafik.png

                        1 Reply Last reply Reply Quote 0
                        • G
                          guergen @Dolomiti last edited by

                          @Dolomiti Wenn ich jetzt die eckigen Klammern einfüge kommt folgendes:
                          1c265fce-a494-4d29-959a-0aebdbcd64c3-grafik.png

                          1 Reply Last reply Reply Quote 0
                          • Dolomiti
                            Dolomiti last edited by

                            @guergen
                            Hat der Tag nicht nur 86400 Sekunden. Sind da nicht zwei Nullen zuviel?
                            Poste mal dein Skript.

                            G 1 Reply Last reply Reply Quote 0
                            • G
                              guergen @Dolomiti last edited by

                              @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);
                              
                              });
                              

                              eafefd02-dcae-4b0a-9a2b-f77de1ce6411-grafik.png

                              Homer.J. 1 Reply Last reply Reply Quote 0
                              • Dolomiti
                                Dolomiti last edited by

                                @guergen
                                Du musst die eckigen Klammern weglassen.

                                G 1 Reply Last reply Reply Quote 0
                                • G
                                  guergen @Dolomiti last edited by

                                  @Dolomiti Oh man...
                                  Manchmal sieht man vor lauter Bäumen den Wald nicht...
                                  Danke!
                                  Lauft!

                                  1 Reply Last reply Reply Quote 0
                                  • Homer.J.
                                    Homer.J. @guergen last edited by Homer.J.

                                    @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);
                                    })
                                    
                                    G 1 Reply Last reply Reply Quote 1
                                    • G
                                      guergen @Homer.J. last edited by

                                      @Homer-J das "code_" und das "text" muss noch raus 🙂

                                      Homer.J. 1 Reply Last reply Reply Quote 0
                                      • Homer.J.
                                        Homer.J. @guergen last edited by Homer.J.

                                        @guergen jab ändere es. 😊
                                        funktioniert es. ?

                                        G 1 Reply Last reply Reply Quote 0
                                        • G
                                          guergen @Homer.J. last edited by

                                          @Homer-J JA!
                                          Sieht einfacher aus... dann kommt man mit den Nullen nicht durcheinander!

                                          1 Reply Last reply Reply Quote 0
                                          • First post
                                            Last post

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          928
                                          Online

                                          31.7k
                                          Users

                                          79.7k
                                          Topics

                                          1.3m
                                          Posts

                                          5
                                          19
                                          1614
                                          Loading More Posts
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          The ioBroker Community 2014-2023
                                          logo