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. Node-Red
  5. Uhrzeit Sonnenaufgang von openweathermap an Dashboard

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    309

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

Uhrzeit Sonnenaufgang von openweathermap an Dashboard

Geplant Angeheftet Gesperrt Verschoben Node-Red
6 Beiträge 3 Kommentatoren 1.3k Aufrufe 3 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.
  • L Offline
    L Offline
    libsch
    schrieb am zuletzt editiert von
    #1

    Hallo Zusammen,

    ich habe den Zeitpunkt des Sonnenaufgangs als Number von openweathernet.

    1 var newMsg = { payload : msg.payload.sunset };
    2 return newMsg

    Danach wandle ich es in einen String und schneide GMT+0100 (Mitteleuropäische Normalzeit) weg. Dann bleibt das Datum mit Uhrzeit übrig.

    1 var time = msg.payload
    2 time *= 1000
    3 var sunrise = new Date(time)
    4 msg.payload = sunrise.toString().replace(" GMT+0100 (Mitteleuropäische Normalzeit)", "");
    5 return msg;

    Ergebnis:
    2.1.2022, 20:03:56node: f5dde3798730e67d
    msg.payload : string[24]
    "Sun Jan 02 2022 08:07:14"

    Jetzt würde ich gern das Datum und die Uhrzeit getrennt anzeigen lassen. Nur leider weiß ich nicht, wie ich das trennen kann.

    Kann mir da jemand helfen?

    LG Daniel

    L mickymM 2 Antworten Letzte Antwort
    0
    • L libsch

      Hallo Zusammen,

      ich habe den Zeitpunkt des Sonnenaufgangs als Number von openweathernet.

      1 var newMsg = { payload : msg.payload.sunset };
      2 return newMsg

      Danach wandle ich es in einen String und schneide GMT+0100 (Mitteleuropäische Normalzeit) weg. Dann bleibt das Datum mit Uhrzeit übrig.

      1 var time = msg.payload
      2 time *= 1000
      3 var sunrise = new Date(time)
      4 msg.payload = sunrise.toString().replace(" GMT+0100 (Mitteleuropäische Normalzeit)", "");
      5 return msg;

      Ergebnis:
      2.1.2022, 20:03:56node: f5dde3798730e67d
      msg.payload : string[24]
      "Sun Jan 02 2022 08:07:14"

      Jetzt würde ich gern das Datum und die Uhrzeit getrennt anzeigen lassen. Nur leider weiß ich nicht, wie ich das trennen kann.

      Kann mir da jemand helfen?

      LG Daniel

      L Offline
      L Offline
      libsch
      schrieb am zuletzt editiert von
      #2

      Hallo zusammen,

      habe gestern noch ein wenig gesucht. Mir haben 2 Beiträge geholfen.
      https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered/19
      und
      https://www.w3docs.com/snippets/javascript/how-to-format-a-javascript-date.html

      Habe es jetzt so gelöst:

      1. Funktion
      1 var newMsg = { payload : msg.payload.sunset };
      2 return newMsg

      2. Funktion
      1 var time = msg.payload
      2 time *= 1000
      3 msg.payload = time;
      4 return msg;

      Danach noch eine change-node mit
      $moment(payload).format('HH:mm:ss')

      Jetzt geht es. Wer noch eine elegantere Möglichkeit hat, darf die gern teilen. Bin gerade erst am Angang,
      mich mit Node-Red und Javascript zu beschägftigen.

      LG Daniel

      F 1 Antwort Letzte Antwort
      0
      • L libsch

        Hallo zusammen,

        habe gestern noch ein wenig gesucht. Mir haben 2 Beiträge geholfen.
        https://forum.iobroker.net/topic/50086/datum-und-zeitverarbeitung-mit-nodered/19
        und
        https://www.w3docs.com/snippets/javascript/how-to-format-a-javascript-date.html

        Habe es jetzt so gelöst:

        1. Funktion
        1 var newMsg = { payload : msg.payload.sunset };
        2 return newMsg

        2. Funktion
        1 var time = msg.payload
        2 time *= 1000
        3 msg.payload = time;
        4 return msg;

        Danach noch eine change-node mit
        $moment(payload).format('HH:mm:ss')

        Jetzt geht es. Wer noch eine elegantere Möglichkeit hat, darf die gern teilen. Bin gerade erst am Angang,
        mich mit Node-Red und Javascript zu beschägftigen.

        LG Daniel

        F Offline
        F Offline
        frankyboy73
        schrieb am zuletzt editiert von frankyboy73
        #3

        @libsch Hi, ich persönlich bin bei dieser Lösung hängengeblieben. Damit kann ich mir meine Ausgabe je nach wunsch zusammenstellen. In diesem Fall werte ich das msg.payload.ts (timestamp) aus. Da ziehe ich mir die einzelnen Daten des Datums als Variablen raus und füge das zum Schluss so als Text String zusammen wie ich es brauche und gebe es wieder als msg.payload.ts aus. In meinem Fall habe ich noch das hinzufügen einer 0 bei Stunde wenn einstellig ist auskommentiert, weil ich die 0 nicht möchte. Als Ausgabe erhalte ich hier dann z.B. Montag 7 Uhr 44.
        Habe mir da noch Kommentare dran geschrieben, damit ich irgendwann mal noch weiß was ich da mache.

        //Zeit nach Wunsch umwandeln
        
        
        
        var dt = new Date(msg.payload.ts);
        
        //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
        var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
        var Day = days[dt.getDay()];
        
        var Tag = dt.getDate();
        var Monat = dt.getMonth() + 1;
        var Jahr = dt.getFullYear();
        var Stunde = dt.getHours();
        var Minute = dt.getMinutes();
        var Sekunde = dt.getSeconds();
        
        //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
        if(Monat.toString().length == 1) {
        var Monat = '0'+Monat;
        }
        if(Tag.toString().length == 1) {
        var Tag = '0'+Tag;
        }
        //if(Stunde.toString().length == 1) {
        //var Stunde = '0'+Stunde;
        //}
        if(Minute.toString().length == 1) {
        var Minute = '0'+Minute;
        }
        if(Sekunde.toString().length == 1) {
        var Sekunde = '0'+Sekunde;
        }
        //hier die gewünschte Ausgabe zusammenstellen
        msg.payload.ts = Day+' '+Stunde+' Uhr '+Minute;
        return msg;
        

        Für deinen Fall, mit msg.payload.sunset und Ausgabe als msg.payload nur in Stunden Minuten und Sekunden könnte das dann so aussehen.

        //Zeit nach Wunsch umwandeln
        
        
        
        var dt = new Date(msg.payload.sunset);
        
        //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
        var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
        var Day = days[dt.getDay()];
        
        var Tag = dt.getDate();
        var Monat = dt.getMonth() + 1;
        var Jahr = dt.getFullYear();
        var Stunde = dt.getHours();
        var Minute = dt.getMinutes();
        var Sekunde = dt.getSeconds();
        
        //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
        if(Monat.toString().length == 1) {
        var Monat = '0'+Monat;
        }
        if(Tag.toString().length == 1) {
        var Tag = '0'+Tag;
        }
        //if(Stunde.toString().length == 1) {
        //var Stunde = '0'+Stunde;
        //}
        if(Minute.toString().length == 1) {
        var Minute = '0'+Minute;
        }
        if(Sekunde.toString().length == 1) {
        var Sekunde = '0'+Sekunde;
        }
        //hier die gewünschte Ausgabe zusammenstellen
        msg.payload = Stunde+  ' Uhr ' +Minute+ ' und ' +Sekunde+ ' Sekunden';
        return msg;
        


        Der Code kommt in eine Funktion Node
        Quelle ist dieser Post, eventuell auch interessant für Dich, da gabs auch mehrere Lösungsansätze, unter anderem auch deine jetztige Lösung.
        https://forum.iobroker.net/topic/40727/timestamp-umwandeln-in-node-red-gelöst/5

        Edit: Bei deiner Lösung, könntest du die beiden Funktionen auch in eine Funktion packen.

        var time = msg.payload.sunset
        time *= 1000
        msg.payload = time;
        return msg;
        

        Oder du nimmst anstatt der ersten Funtion ne change Node:
        Change1.jpg
        Da gibts meist immer viele Wege die zum Erfolg führen und jeder hat da so seine Vorlieben. Ich versuche immer möglichst wenig Funktion Nodes einzusetzen, da man nicht gleich immer von außen sieht was darin passiert und es schnell unübersichtlich wird. Aber in diesem Fall habe ich noch keine andere zufriedenstellende Alternative gefunden.

        Schöne Grüße Frank

        L mickymM 2 Antworten Letzte Antwort
        0
        • F frankyboy73

          @libsch Hi, ich persönlich bin bei dieser Lösung hängengeblieben. Damit kann ich mir meine Ausgabe je nach wunsch zusammenstellen. In diesem Fall werte ich das msg.payload.ts (timestamp) aus. Da ziehe ich mir die einzelnen Daten des Datums als Variablen raus und füge das zum Schluss so als Text String zusammen wie ich es brauche und gebe es wieder als msg.payload.ts aus. In meinem Fall habe ich noch das hinzufügen einer 0 bei Stunde wenn einstellig ist auskommentiert, weil ich die 0 nicht möchte. Als Ausgabe erhalte ich hier dann z.B. Montag 7 Uhr 44.
          Habe mir da noch Kommentare dran geschrieben, damit ich irgendwann mal noch weiß was ich da mache.

          //Zeit nach Wunsch umwandeln
          
          
          
          var dt = new Date(msg.payload.ts);
          
          //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
          var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
          var Day = days[dt.getDay()];
          
          var Tag = dt.getDate();
          var Monat = dt.getMonth() + 1;
          var Jahr = dt.getFullYear();
          var Stunde = dt.getHours();
          var Minute = dt.getMinutes();
          var Sekunde = dt.getSeconds();
          
          //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
          if(Monat.toString().length == 1) {
          var Monat = '0'+Monat;
          }
          if(Tag.toString().length == 1) {
          var Tag = '0'+Tag;
          }
          //if(Stunde.toString().length == 1) {
          //var Stunde = '0'+Stunde;
          //}
          if(Minute.toString().length == 1) {
          var Minute = '0'+Minute;
          }
          if(Sekunde.toString().length == 1) {
          var Sekunde = '0'+Sekunde;
          }
          //hier die gewünschte Ausgabe zusammenstellen
          msg.payload.ts = Day+' '+Stunde+' Uhr '+Minute;
          return msg;
          

          Für deinen Fall, mit msg.payload.sunset und Ausgabe als msg.payload nur in Stunden Minuten und Sekunden könnte das dann so aussehen.

          //Zeit nach Wunsch umwandeln
          
          
          
          var dt = new Date(msg.payload.sunset);
          
          //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
          var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
          var Day = days[dt.getDay()];
          
          var Tag = dt.getDate();
          var Monat = dt.getMonth() + 1;
          var Jahr = dt.getFullYear();
          var Stunde = dt.getHours();
          var Minute = dt.getMinutes();
          var Sekunde = dt.getSeconds();
          
          //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
          if(Monat.toString().length == 1) {
          var Monat = '0'+Monat;
          }
          if(Tag.toString().length == 1) {
          var Tag = '0'+Tag;
          }
          //if(Stunde.toString().length == 1) {
          //var Stunde = '0'+Stunde;
          //}
          if(Minute.toString().length == 1) {
          var Minute = '0'+Minute;
          }
          if(Sekunde.toString().length == 1) {
          var Sekunde = '0'+Sekunde;
          }
          //hier die gewünschte Ausgabe zusammenstellen
          msg.payload = Stunde+  ' Uhr ' +Minute+ ' und ' +Sekunde+ ' Sekunden';
          return msg;
          


          Der Code kommt in eine Funktion Node
          Quelle ist dieser Post, eventuell auch interessant für Dich, da gabs auch mehrere Lösungsansätze, unter anderem auch deine jetztige Lösung.
          https://forum.iobroker.net/topic/40727/timestamp-umwandeln-in-node-red-gelöst/5

          Edit: Bei deiner Lösung, könntest du die beiden Funktionen auch in eine Funktion packen.

          var time = msg.payload.sunset
          time *= 1000
          msg.payload = time;
          return msg;
          

          Oder du nimmst anstatt der ersten Funtion ne change Node:
          Change1.jpg
          Da gibts meist immer viele Wege die zum Erfolg führen und jeder hat da so seine Vorlieben. Ich versuche immer möglichst wenig Funktion Nodes einzusetzen, da man nicht gleich immer von außen sieht was darin passiert und es schnell unübersichtlich wird. Aber in diesem Fall habe ich noch keine andere zufriedenstellende Alternative gefunden.

          L Offline
          L Offline
          libsch
          schrieb am zuletzt editiert von
          #4

          @frankyboy73

          Danke für die Hilfe.

          LG

          1 Antwort Letzte Antwort
          0
          • L libsch

            Hallo Zusammen,

            ich habe den Zeitpunkt des Sonnenaufgangs als Number von openweathernet.

            1 var newMsg = { payload : msg.payload.sunset };
            2 return newMsg

            Danach wandle ich es in einen String und schneide GMT+0100 (Mitteleuropäische Normalzeit) weg. Dann bleibt das Datum mit Uhrzeit übrig.

            1 var time = msg.payload
            2 time *= 1000
            3 var sunrise = new Date(time)
            4 msg.payload = sunrise.toString().replace(" GMT+0100 (Mitteleuropäische Normalzeit)", "");
            5 return msg;

            Ergebnis:
            2.1.2022, 20:03:56node: f5dde3798730e67d
            msg.payload : string[24]
            "Sun Jan 02 2022 08:07:14"

            Jetzt würde ich gern das Datum und die Uhrzeit getrennt anzeigen lassen. Nur leider weiß ich nicht, wie ich das trennen kann.

            Kann mir da jemand helfen?

            LG Daniel

            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            @libsch Wenn Du ein moment-Objekt erstellst - die Seite hast ja bereits gefunden, kannst Du Dir das Objekt in allen möglichen Formaten ausgeben lassen. In der Regel versteht die moment Bibliothek die RFC Datumstrings direkt als Input bzw. Du kannst ja über einen Formatstring angeben, wie die Eingabe zu interpretieren ist.

            Auch wenn der Input zum Beispiel eine UNIX Zeit in s anstelle von ms angegeben ist, kann man das direkt beim Einlesen durch einen Formatstring angeben.

            https://momentjs.com/docs/#/parsing/

            4cd2aa34-abbf-421c-9a83-bb513710e41a-image.png

            Ich dachte ich hätte das alles in dem Thread ausführlichst beschrieben, scheint aber wohl nicht so zu sein. :anguished:
            Es ist eigentlich so schade.

            d87bbcca-4d63-4c55-8e0e-89baa8d46d48-image.png

            [
               {
                   "id": "24cd7114.ce5e4e",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "",
                   "payloadType": "date",
                   "x": 660,
                   "y": 2880,
                   "wires": [
                       [
                           "bc88a459.8035f8",
                           "efdaf679.2867f8",
                           "2fb2fbe8.db1a54"
                       ]
                   ]
               },
               {
                   "id": "efdaf679.2867f8",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload/1000",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 870,
                   "y": 2920,
                   "wires": [
                       [
                           "d1b5fc81.a852b",
                           "f68d8bfe.5a1cf8"
                       ]
                   ]
               },
               {
                   "id": "bc88a459.8035f8",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "Zeit in ms",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 870,
                   "y": 2820,
                   "wires": []
               },
               {
                   "id": "d1b5fc81.a852b",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "Zeit in s",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 860,
                   "y": 3000,
                   "wires": []
               },
               {
                   "id": "f68d8bfe.5a1cf8",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "$moment(payload,'X').format('HH:mm:ss')\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1150,
                   "y": 2920,
                   "wires": [
                       [
                           "893bba7e.941aa8"
                       ]
                   ]
               },
               {
                   "id": "2fb2fbe8.db1a54",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "$moment(payload,'x').format('HH:mm:ss')",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1150,
                   "y": 2880,
                   "wires": [
                       [
                           "893bba7e.941aa8"
                       ]
                   ]
               },
               {
                   "id": "893bba7e.941aa8",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "Zeit RFC",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 1420,
                   "y": 2820,
                   "wires": []
               }
            ]
            

            Man muss also gar nichts rechnen, noch function Nodes noch sonst was zu nutzen.

            Ist die Eingabe in ms gebe ich ein kleines x als Format mit, ist die payload in s dann ein großes X. Ausserdem hänge ich gleich das Ausgabeformat an.

            Javascript brauchst Du dafür jedenfalls nicht, auch wenn es für später durchaus wichtig ist.

            Im Prinzip kannst auch in der Changenode statt payload auch die Eigenschaft angeben.

            e75863d5-bb59-4936-b9ea-860dfea162b8-image.png

            Damit kannst Dir alle sonstigen Nodes sparen.

            Das getrennte Ausgeben von Datum und Uhrzeit erreichst Du indem Du einfach 2 Moment Objekte mit der gleichen Zeit erstellst und nur das Ausgabeformat modifizierst.

            b6a37682-2d62-4b3e-929f-95812e0fe3b0-image.png

            [
               {
                   "id": "24cd7114.ce5e4e",
                   "type": "inject",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "",
                   "payloadType": "date",
                   "x": 660,
                   "y": 2920,
                   "wires": [
                       [
                           "efdaf679.2867f8"
                       ]
                   ]
               },
               {
                   "id": "efdaf679.2867f8",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload/1000",
                           "tot": "jsonata"
                       },
                       {
                           "t": "move",
                           "p": "payload",
                           "pt": "msg",
                           "to": "payload.sunrise",
                           "tot": "msg"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 870,
                   "y": 2920,
                   "wires": [
                       [
                           "d1b5fc81.a852b",
                           "f68d8bfe.5a1cf8",
                           "b02ce0b5.c9c0e"
                       ]
                   ]
               },
               {
                   "id": "d1b5fc81.a852b",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "Zeit in s",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 860,
                   "y": 3000,
                   "wires": []
               },
               {
                   "id": "f68d8bfe.5a1cf8",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "$moment(payload.sunrise,'X').format('HH:mm:ss')\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1130,
                   "y": 2940,
                   "wires": [
                       [
                           "dd9e3919.4a3478"
                       ]
                   ]
               },
               {
                   "id": "b02ce0b5.c9c0e",
                   "type": "change",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "$moment(payload.sunrise,'X').format('DD.MM.YY')\t",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 1130,
                   "y": 2900,
                   "wires": [
                       [
                           "dd9e3919.4a3478"
                       ]
                   ]
               },
               {
                   "id": "dd9e3919.4a3478",
                   "type": "debug",
                   "z": "54b226bc.0793e8",
                   "name": "",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "false",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 1350,
                   "y": 2920,
                   "wires": []
               }
            ]
            

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • F frankyboy73

              @libsch Hi, ich persönlich bin bei dieser Lösung hängengeblieben. Damit kann ich mir meine Ausgabe je nach wunsch zusammenstellen. In diesem Fall werte ich das msg.payload.ts (timestamp) aus. Da ziehe ich mir die einzelnen Daten des Datums als Variablen raus und füge das zum Schluss so als Text String zusammen wie ich es brauche und gebe es wieder als msg.payload.ts aus. In meinem Fall habe ich noch das hinzufügen einer 0 bei Stunde wenn einstellig ist auskommentiert, weil ich die 0 nicht möchte. Als Ausgabe erhalte ich hier dann z.B. Montag 7 Uhr 44.
              Habe mir da noch Kommentare dran geschrieben, damit ich irgendwann mal noch weiß was ich da mache.

              //Zeit nach Wunsch umwandeln
              
              
              
              var dt = new Date(msg.payload.ts);
              
              //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
              var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
              var Day = days[dt.getDay()];
              
              var Tag = dt.getDate();
              var Monat = dt.getMonth() + 1;
              var Jahr = dt.getFullYear();
              var Stunde = dt.getHours();
              var Minute = dt.getMinutes();
              var Sekunde = dt.getSeconds();
              
              //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
              if(Monat.toString().length == 1) {
              var Monat = '0'+Monat;
              }
              if(Tag.toString().length == 1) {
              var Tag = '0'+Tag;
              }
              //if(Stunde.toString().length == 1) {
              //var Stunde = '0'+Stunde;
              //}
              if(Minute.toString().length == 1) {
              var Minute = '0'+Minute;
              }
              if(Sekunde.toString().length == 1) {
              var Sekunde = '0'+Sekunde;
              }
              //hier die gewünschte Ausgabe zusammenstellen
              msg.payload.ts = Day+' '+Stunde+' Uhr '+Minute;
              return msg;
              

              Für deinen Fall, mit msg.payload.sunset und Ausgabe als msg.payload nur in Stunden Minuten und Sekunden könnte das dann so aussehen.

              //Zeit nach Wunsch umwandeln
              
              
              
              var dt = new Date(msg.payload.sunset);
              
              //mit var days werden die Wochentage (0-6) auf die Tagesnamen umgewandelt
              var days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
              var Day = days[dt.getDay()];
              
              var Tag = dt.getDate();
              var Monat = dt.getMonth() + 1;
              var Jahr = dt.getFullYear();
              var Stunde = dt.getHours();
              var Minute = dt.getMinutes();
              var Sekunde = dt.getSeconds();
              
              //hier wird über ob die Zahlen einstellig sind, falls ja dann wird ne Null davor gesetzt
              if(Monat.toString().length == 1) {
              var Monat = '0'+Monat;
              }
              if(Tag.toString().length == 1) {
              var Tag = '0'+Tag;
              }
              //if(Stunde.toString().length == 1) {
              //var Stunde = '0'+Stunde;
              //}
              if(Minute.toString().length == 1) {
              var Minute = '0'+Minute;
              }
              if(Sekunde.toString().length == 1) {
              var Sekunde = '0'+Sekunde;
              }
              //hier die gewünschte Ausgabe zusammenstellen
              msg.payload = Stunde+  ' Uhr ' +Minute+ ' und ' +Sekunde+ ' Sekunden';
              return msg;
              


              Der Code kommt in eine Funktion Node
              Quelle ist dieser Post, eventuell auch interessant für Dich, da gabs auch mehrere Lösungsansätze, unter anderem auch deine jetztige Lösung.
              https://forum.iobroker.net/topic/40727/timestamp-umwandeln-in-node-red-gelöst/5

              Edit: Bei deiner Lösung, könntest du die beiden Funktionen auch in eine Funktion packen.

              var time = msg.payload.sunset
              time *= 1000
              msg.payload = time;
              return msg;
              

              Oder du nimmst anstatt der ersten Funtion ne change Node:
              Change1.jpg
              Da gibts meist immer viele Wege die zum Erfolg führen und jeder hat da so seine Vorlieben. Ich versuche immer möglichst wenig Funktion Nodes einzusetzen, da man nicht gleich immer von außen sieht was darin passiert und es schnell unübersichtlich wird. Aber in diesem Fall habe ich noch keine andere zufriedenstellende Alternative gefunden.

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von
              #6

              @frankyboy73 sagte in Uhrzeit Sonnenaufgang von openweathermap an Dashboard:

              In meinem Fall habe ich noch das hinzufügen einer 0 bei Stunde wenn einstellig ist auskommentiert, weil ich die 0 nicht möchte. Als Ausgabe erhalte ich hier dann z.B. Montag 7 Uhr 44.

              Auch das geht mit der Moment Bibliothek direkt. ;)

              f31ce43d-e5e6-48aa-b4b5-241c2f4b83d3-image.png

              $moment().locale('de').format('dddd H [Uhr] mm')
              

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              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

              540

              Online

              32.5k

              Benutzer

              81.7k

              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