Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Sekunden in d/h/m umrechnen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    359

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.5k

Sekunden in d/h/m umrechnen

Geplant Angeheftet Gesperrt Verschoben JavaScript
19 Beiträge 5 Kommentatoren 2.1k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • G 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?

    MicM Offline
    MicM Offline
    Mic
    Developer
    schrieb am zuletzt editiert von Mic
    #2

    @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 Antwort Letzte Antwort
    0
    • MicM 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 Online
      G Online
      guergen
      schrieb am zuletzt editiert von guergen
      #3

      @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 Antwort Letzte Antwort
      0
      • DolomitiD Offline
        DolomitiD Offline
        Dolomiti
        schrieb am zuletzt editiert von Dolomiti
        #4

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

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

        G 1 Antwort Letzte Antwort
        0
        • NashraN Offline
          NashraN Offline
          Nashra
          Most Active Forum Testing
          schrieb am zuletzt editiert von Nashra
          #5

          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
          

          Gruß Ralf
          Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          1 Antwort Letzte Antwort
          1
          • DolomitiD 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 Online
            G Online
            guergen
            schrieb am zuletzt editiert von
            #6

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

            1 Antwort Letzte Antwort
            0
            • DolomitiD Offline
              DolomitiD Offline
              Dolomiti
              schrieb am zuletzt editiert von Dolomiti
              #7

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

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

              G 1 Antwort Letzte Antwort
              0
              • DolomitiD 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 Online
                G Online
                guergen
                schrieb am zuletzt editiert von
                #8

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

                1 Antwort Letzte Antwort
                0
                • DolomitiD Offline
                  DolomitiD Offline
                  Dolomiti
                  schrieb am zuletzt editiert von
                  #9

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

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                  Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                  G 2 Antworten Letzte Antwort
                  0
                  • DolomitiD Dolomiti

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

                    G Online
                    G Online
                    guergen
                    schrieb am zuletzt editiert von
                    #10

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

                    1 Antwort Letzte Antwort
                    0
                    • DolomitiD Dolomiti

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

                      G Online
                      G Online
                      guergen
                      schrieb am zuletzt editiert von
                      #11

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

                      1 Antwort Letzte Antwort
                      0
                      • DolomitiD Offline
                        DolomitiD Offline
                        Dolomiti
                        schrieb am zuletzt editiert von
                        #12

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

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                        Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                        G 1 Antwort Letzte Antwort
                        0
                        • DolomitiD Dolomiti

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

                          G Online
                          G Online
                          guergen
                          schrieb am zuletzt editiert von
                          #13

                          @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.H 1 Antwort Letzte Antwort
                          0
                          • DolomitiD Offline
                            DolomitiD Offline
                            Dolomiti
                            schrieb am zuletzt editiert von
                            #14

                            @guergen
                            Du musst die eckigen Klammern weglassen.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                            Intel N100 (32GB,256GB SSD), Proxmox -> Debian 12 in VM (Master) + Debian 12 in CT (Test) + Debmatic, HM-Aktoren, Wago 750-880, Shelly, Zigbee

                            G 1 Antwort Letzte Antwort
                            0
                            • DolomitiD Dolomiti

                              @guergen
                              Du musst die eckigen Klammern weglassen.

                              G Online
                              G Online
                              guergen
                              schrieb am zuletzt editiert von
                              #15

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

                              1 Antwort Letzte Antwort
                              0
                              • G guergen

                                @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.H Offline
                                Homer.J.H Offline
                                Homer.J.
                                schrieb am zuletzt editiert von Homer.J.
                                #16

                                @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 Antwort Letzte Antwort
                                1
                                • Homer.J.H 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 Online
                                  G Online
                                  guergen
                                  schrieb am zuletzt editiert von
                                  #17

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

                                  Homer.J.H 1 Antwort Letzte Antwort
                                  0
                                  • G guergen

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

                                    Homer.J.H Offline
                                    Homer.J.H Offline
                                    Homer.J.
                                    schrieb am zuletzt editiert von Homer.J.
                                    #18

                                    @guergen jab ändere es. :blush:
                                    funktioniert es. ?

                                    G 1 Antwort Letzte Antwort
                                    0
                                    • Homer.J.H Homer.J.

                                      @guergen jab ändere es. :blush:
                                      funktioniert es. ?

                                      G Online
                                      G Online
                                      guergen
                                      schrieb am zuletzt editiert von
                                      #19

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

                                      1 Antwort Letzte Antwort
                                      0
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      770

                                      Online

                                      32.5k

                                      Benutzer

                                      81.8k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe