Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Visualisierung mit Node Red erstellen

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    Visualisierung mit Node Red erstellen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Damrak2022
      Damrak2022 @mickym last edited by Damrak2022

      @mickym Danke, bei JSONATA war ich die ganze Zeit. Aber ich habe nirgends was gefunden, was ich da exakt eingeben muss.

      Ich versuche den Code mal zu kapieren: Da der Ausgangswert Sekunden ist wird mit diesem Teil

      $fromMillis(payload*1000
      

      erstmal auf Sekunden gerechnet.
      Aber wo findet denn die Division statt? Wahrscheinlich hier, kann ja nicht anders sein:

      [H00]:[m]:[s]')
      

      Ich bin davon ausgegangen das die Division mit "/" angegeben wird

      mickym 2 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Damrak2022 last edited by

        @damrak2022 sagte in Visualisierung mit Node Red erstellen:

        @mickym Danke, bei JSONATA war ich die ganze Zeit. Aber ich habe nirgends was gefunden, was ich da exakt eingeben muss.

        Eine kurze Beschreibung zu den Funktionen bekommst Du wenn Du diese halt durchschaust.

        b18962a0-e83a-43af-bbb7-39d724ac65ed-image.png

        Ein komplette Funktionsreferenz bekommst Du hier: https://docs.jsonata.org/overview
        Datums und Zeitfunktionen findest Du hier.
        https://docs.jsonata.org/date-time-functions

        Zusätzlich und das habe ich in meinem Datums- und Zeitthread ist die moments Bibliothek noch eingebaut.

        Diese Funktion geht allerdings nur bis zu 24 Stunden. Über 24 Stunden musst Du die Tage erst weg rechnen.

        Damrak2022 1 Reply Last reply Reply Quote 0
        • Damrak2022
          Damrak2022 @mickym last edited by

          @mickym sagte in Visualisierung mit Node Red erstellen:

          https://docs.jsonata.org/date-time-functions

          Danke, habe mir das mal als Lesezeichen angelegt. Mal schauen ob ich das verstehe.

          1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @Damrak2022 last edited by mickym

            @damrak2022 Nein hier wird gar nicht gerechnet. Funktioniert aber nur BIS ZU 24 Stunden - anderenfalls musst Du die Tage abrechnen. Ich gebe Dir aber unten den Weg, wie Du es herkömmlich ausrechnen würdest-

            Diese Funktion gibt Dir bis zu 24 Stunden automatisch eine Umrechnung statt. Und zwar wird ein "Datum" gebildet aus der Zahl von milli-sekunden und formatiert Dir das dann. Wenn Du es richtig ausrechnen möchtest, dann musst Du richtig.

            erst mal die Stunden ausrechnen.

            Eine Stunde sind 60 min * 60 sec = 3600 sec

            Das heisst Du rechnest erst mal den ganzzahligen Anteil der Stunden aus und rundest ab.

            $floor(payload/3600) Stunden
            

            Der Rest ist dann Minuten

            payload%3600 ist dann der Rest in Sekunden. Das teilst dann durch 60 um die Minuten zu enthalten und nimmst auch wieder der ganzzahligen Anteil.

            $floor(payload%3600/60)
            

            Der Rest sind dann Sekunden.

            payload%3600%60
            

            Also wenn Du es ganz normal mathematisch ausrechnen wolltest würde das so aussehen:

            $floor(payload/3600) & " Stunden "	 & $floor(payload%3600/60) & " Minuten " & payload%3600%60 & " Sekunden"
            

            29a6b4f5-937f-400e-a128-acf36d2e04e0-image.png

            Die Floor Funktion rundet wie gesagt ab:

            70a24488-149e-46cb-bbe6-1577f6889b2d-image.png

            Ansonsten hast Du mit / als Division und %, also Modulo um den Rest zu ermittel natürlich recht:

            7f5dc685-4d28-4b56-be81-becbf6c1f20a-image.png

            Damrak2022 1 Reply Last reply Reply Quote 1
            • Damrak2022
              Damrak2022 @mickym last edited by

              @mickym Achso, na das muss man ja auch erstmal wissen. Aber danke dafür, denn jetzt habe ich das und kann jederzeit nachschauen.

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Damrak2022 last edited by mickym

                @damrak2022 sagte in Visualisierung mit Node Red erstellen:

                @mickym Achso, na das muss man ja auch erstmal wissen. Aber danke dafür, denn jetzt habe ich das und kann jederzeit nachschauen.

                Ja das ist halt bis zu 24 Stunden ein kleiner Trick - um Dir die Rechnerei zu ersparen. Im Prinzip wenn Du 0 der Funktion $fromMillis() übergibst, wird das Datum auf 0 Uhr am 1.1.1970 gesetzt. Wenn Du nun 24660000 Millisekunden übergibst, dann entspricht das einen Datum von 06:51 am 1.1.1970 - da uns das Datum aber egal ist, kann man halt bis zu 24 Stunden das als schnelle Umrechnung verwenden. Ist halt ein kleiner Trick - aber ansonsten habe ich Dir ja im vorherigen Post gezeigt, wie man es normal und richtig ausrechnet.

                Damrak2022 1 Reply Last reply Reply Quote 1
                • Damrak2022
                  Damrak2022 @mickym last edited by

                  @mickym Hast Du - Danke

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @Damrak2022 last edited by mickym

                    @damrak2022 Wie gesagt ich hab das ja auch schon mal alles in meinem Datumsthread erklärt.

                    Wenn diese 24660 zum Beispiel auf ein Ereignis in der Vergangenheit hinweisen - also von jetzt 6 Stunden und 51 Minuten zurück, dann benutzt Du die mächtige moments Bibliothek:

                    So kannst Du Dir zum Beispiel das Datum und die Uhrzeit von vor 24660 Sekunden vom aktuellen Zeitpunkt ausgeben lassen:

                    0ce950a1-1bc1-425a-b06e-a55eb75a34e4-image.png

                    $moment().subtract($$.payload,'seconds').locale("de").format('LLLL')
                    

                    https://momentjs.com/docs/

                    auch wenn die Bibliothek leider nicht mehr weiter entwickelt wird.

                    Damrak2022 2 Replies Last reply Reply Quote 0
                    • Damrak2022
                      Damrak2022 @mickym last edited by

                      @mickym Ich habe das von Dir mit der Moments Bibliothek gelesen, aber ich bin da ziemlich schnell ausgestiegen, da ich es nicht wirklich kapiert habe. Aber ich komme ja in winzigen Schrittchen voran

                      1 Reply Last reply Reply Quote 0
                      • Damrak2022
                        Damrak2022 @mickym last edited by

                        @mickym Hallo, ich bin auch wieder da - 🙂

                        Jetzt habe ich zum wiederholten Male Deinen Beitrag gelesen, aber ich bekomme es natürlich wieder nicht hin.

                        Ich habe hier eine Datumsangabe, welche als String geliefert wird. Nun versuche ich schon seit gefühlt ewiger Zeit diesen so abzuändern, das er mir im deutschen Format, also DD - MM - YYYY angezeigt wird, scheitere aber kläglich.
                        Bildschirmfoto 2022-10-28 um 00.19.22.png

                        Bestimmt kannst Du das in 5 Sekunden lösen.🙂

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Damrak2022 last edited by

                          @damrak2022 Die Frage ist, ob Du es selbst lernen willst - oder von mir in 5s einfach eine Lösung haben willst?

                          Damrak2022 1 Reply Last reply Reply Quote 0
                          • Damrak2022
                            Damrak2022 @mickym last edited by Damrak2022

                            @mickym Natürlich lernen. Das geht bestimmt auch in der change node über JSONATA

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Damrak2022 last edited by

                              @damrak2022Richtig - geht das über die Change Node und JSONATA - weil Du möchtest ja Deine payload ändern. Möchtest Du eine Lösung mit oder ohne die moments Bibliothek?

                              Damrak2022 1 Reply Last reply Reply Quote 0
                              • Damrak2022
                                Damrak2022 @mickym last edited by

                                @mickym Ich glaube ohne wäre mir lieber, da ich erstmal die einfachen Sachen kapieren will

                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Damrak2022 last edited by

                                  @damrak2022 Na die moments Bibliothek ist nicht so kompliziert. Ich hätte Dir ja geholfen. Aber gut - machen wir es ohne.
                                  Damit behandeln wir die payload - die herein kommt als Zeichenkette.

                                  Ich geht also davon aus, dass die Zeichenkette:

                                  2022-10-27
                                  

                                  lautet.

                                  Damrak2022 1 Reply Last reply Reply Quote 0
                                  • Damrak2022
                                    Damrak2022 @mickym last edited by

                                    @mickym So sieht die Debug aus:
                                    Bildschirmfoto 2022-10-28 um 00.36.22.png

                                    mickym 1 Reply Last reply Reply Quote 0
                                    • mickym
                                      mickym Most Active @Damrak2022 last edited by

                                      @damrak2022 Nun dann habe ich ja richtig gedacht. Wie sind nun die einzelnen Datumsbestandteile voneinander getrennt?

                                      Damrak2022 1 Reply Last reply Reply Quote 0
                                      • Damrak2022
                                        Damrak2022 @mickym last edited by Damrak2022

                                        @mickym Äh mit einem Bindestrich. Das geht auch mit ändere und setze. Aber das ist nicht nutzbar, weil morgen ein anderes Datum ist

                                        mickym 1 Reply Last reply Reply Quote 0
                                        • mickym
                                          mickym Most Active @Damrak2022 last edited by mickym

                                          @damrak2022 gut dann mach mal noch eine debug Node hinter deine Change NOde und versuche mal das Datum in seine Bestandteile aufzuteilen.

                                          Nein wir nehmen JSONATA und teilen erst mal das Datum in seine Bestandteile auf - wie Du sagst hast Du den Bindestrich in diesem Fall als Trenner.

                                          Dann schau Dir mal die split Funktion in der Change Node in JSONATA an.

                                          d20d30fb-b027-46ba-b369-cd6713a5780d-image.png

                                          Dies ist ja die Ausgangssituation:

                                          e345a79c-dc8b-4275-83d9-234f2602baaa-image.png

                                          Damrak2022 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active last edited by

                                            Wenn Du etwas an dem Hilfetext nicht verstehst - dann frag - sonst warte ich hier eine Ewigkeit. 😉

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            872
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            4845
                                            1970130
                                            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