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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Visualisierung mit Node Red erstellen

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

      @damrak2022 sagte in Visualisierung mit Node Red erstellen:

      @mickym Ich habe dahinter nochmal einen .* eingefügt

      Super!!!

      Vollständig sieht es nun also so aus:

      63b2b3ce-1baa-402e-a190-86415dc0a0d7-image.png

      Auf die Gruppe kannst Du dann später mit $1 zugreifen.

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

        @mickym Sieht bei mir auch so aus. Jetzt fahre ich testen

        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 Sieht bei mir auch so aus. Jetzt fahre ich testen

          Noch einen kurzen Augenblick. Speichere Dir diesen regulären Ausdruck ab bzw. ich mach das in dem ich es hier nochmal poste:

          .*-(.*?)\/.*
          

          So sieht also unser regulärer Ausdruck aus, um aus dem topic die Kennung zu extrahieren. Morgen werden wir das mit einer Change Node machen.

          EDIT: Mit dem Dach (brauchst nicht - da habe ich nur was getestet).

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

            @mickym sagte in Visualisierung mit Node Red erstellen:

            Speichere Dir diesen regulären Ausdruck ab bzw. ich mach das in dem ich es hier nochmal poste

            Schon kurios. Gestern habe ich mich mit dem Thema ebenfalls beschäftigt. Ich ziehe momentan meine Flows von einem RasPi3 auf einen RasPi4 um. Damit es auch nicht zu einfach wird, habe ich vor, die auf dem Raspi3 laufenden function-Nodes (ca. 130 Stück) zu reduzieren. Angefangen habe ich mit den function-Nodes um Modbusdaten in lesbare Zahlen umzuwandeln.

            Alt:
            9ba815d5-ebb0-4d94-bb16-dc5e1b151b04-grafik.png

            Neu:
            71a55c27-f900-463a-b041-f11b2bfb4322-grafik.png

            Dann stand dieser Flow an, ich lese damit die CPU Temp. des Raspi aus.
            e462dd1b-5c27-45f6-8cf5-6d8796e28e58-grafik.png

            Ich habe es dann mit JSONata versucht und bin auf folgendem Lösung gekommen:
            3871e32d-ddd2-4a81-9fd0-991a59e238b9-grafik.png

            c1decab1-12ab-4be3-b0a0-90316f833ac0-grafik.png

            Das Ergebnis passt soweit. Dann habe ich es, wie von dir beschrieben, mit regex versucht.
            Das Ergebnis pass leider nicht, aber Du bist ja auch noch nicht mit deinen Erklärungen zu Ende.

            So sieht das Ergebnis in regex101 aus:
            11b0196c-112d-41cd-9203-a4f794a0de65-grafik.png
            e7875a19-7bcb-45df-9741-66ea6e9ab26a-grafik.png

            Und so das Ergebnis im debug Node:
            f39163b2-6880-4c4a-abbd-e6ef110fd4dc-grafik.png
            049c2deb-cee3-42e2-a54e-431e86058180-grafik.png
            d7fb5c6f-7284-4006-89cf-73d1e1cbc8bf-grafik.png
            Da habe ich wohl noch etwas nicht vollständig verstanden.

            Ich will allerdings auch nicht deinen weiteren Ausführungen schon vorgreifen. Ich bin schon sehr gespannt wie es weiter geht.

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

              @garf Wir werden es heute abend zwar nicht mit der $replace Funktion von JSONATA machen, sondern mit den Standardmitteln der Change Node. Lies Dir im Vorfeld aber noch einmal den Hilfetext zur Change Node durch. 😉

              Ich hab es aber mal so wie Du hier gemacht hast, mit der $replace Funktion implementiert, das funktioniert auch - du musst nur den Platzhalter für die Gruppe in Gänsefüsschen packen. Du hattest es also schon fast gehabt.

              Schau Dir einfach nochmal mein Posting hierzu an: https://forum.iobroker.net/post/911819

              Kannst ja mal schreiben, ob Dir meine Tipps geholfen haben - ansonsten gehts heute abend weiter, falls Andy weiter machen will. 😉

              4056a5b1-2d44-482e-a94f-154a15e97e28-image.png

              Du musst also nur eine Winzigkeit in Deiner Funktion ändern. 😉

              Da Du das Ganze ja also Zahl brauchst, aber das Ergebnis von regulären Ausdrücken immer Strings sind und natürlich auch die $replace() Funktion eine Stringfunktion ist, musst Du immer das Gesamtergebnis in eine Zahl umwandeln. 😉

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

                @mickym sagte in Visualisierung mit Node Red erstellen:

                Du musst also nur eine Winzigkeit in Deiner Funktion ändern.

                Die Winzigkeit wird durch einen schwarzen Punkt verdeckt. Ich komme nicht drauf. Da fehlt wohl noch etwas Hintergrundwissen. Vielleicht magst Du es ja auflösen wollen. Ich habe mir den Hilfetext der change Node mal bzgl. regulärern Ausdruck angesehen. Damit habe ich noch nicht gearbeitet. Bin aber schon ganz gespannt, was deine nächsten Lehrstundn dazu bringen wird. Du siehst, es liest mindestens noch einer mit und ist auch sehr interessiert. Allerdings nicht zu den Uhrzeiten oder besser Unzeiten wo ihr euch hier tummelt. Ist bei mir die Morgenlektüre. Ob man sich daß alles dauerhaft merken kann, weiß ich noch nicht. Im Moment speichere ich mir viel in OneNote zu den Themen ab.

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

                  @mickym sagte in Visualisierung mit Node Red erstellen:

                  Funktion eine Stringfunktion ist, musst Du immer das Gesamtergebnis in eine Zahl umwandeln.

                  Daß ist mir schon klar und habe ich in meiner eigenen Lösung es ja auch so bereits gemacht. Vorher habe ich den Wert an den MQTT Broker übergeben, da konnte es auch gut ein Stringwert bleiben.

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

                    @garf Na gut - nachdem ich mit Andy heute abend die andere Lösung durchsprechen werde, so wie sie in der Beschreibung zur Change Node steht und Du mit meinem Link, den ich gepostet habe anscheinend doch nichts anfangen konntest (obwohl ich dachte dass der Zaunpfahl darin schon enthalten sei 😉 ) - Hier dann alles offengelegt. 😉

                    2103e8ac-5213-4615-a373-0631d8a581f4-image.png

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

                      @mickym sagte in Visualisierung mit Node Red erstellen:

                      Hier dann alles offengelegt.

                      Mir geht es ja nicht um fertige Lösungen, sondern um das Verstehen. Schon schwierig genug sich alles zu behalten. Auf die $1 wäre ich nie gekommen. Obwohl es ja überall steht. Jetzt verstehe ich vermutlich auch wie es über den regulären Ausdruck bei der change Node funktionieren wird. Aber woher kommt die $1. Ist das der Wert der Group 1?
                      Bei mir schleppt er aber noch ein unbeliebtes Zeichen mit:
                      1b89e2e5-7c18-40a1-9e8d-570f6b5e3ace-grafik.png

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

                        @garf Genau - mit den Klammer gruppierst Du reguläre Ausdrücke - also neben dem insgesamten Match kannst Du solche Gruppen eben über die Klammern bilden und nach der Reihe die 1. Gruppe mit $1, die 2. Gruppe mit $2 etc. ansprechen.

                        Im folgenden Bild hellblau markiert.

                        Wenn Du also noch eine zweite Klammer hättest könntest Du die mit $2 ansprechen.

                        f86f03da-d690-4f6d-a80f-5400a544bef3-image.png

                        So Du hast aber noch einen Zeilenvorschub drin. Da der nicht gemached hat - wird dieser Zeilenvorschub mit übernommen - da der nicht matched - um den noch mit in das matching pattern aufzunehmen, musst du noch den Zeilenvorschub am Ende Deines regEx Ausdrucks anhängen - orange markiert.

                        Um also den Zeilenvorschub wegzubekommen, musst Du den LineBreak noch in dein Matching Pattern aufnehmen.

                        2782da3e-e4c6-4065-afba-fa6b0b395eb2-image.png f28b46de-baa3-43f1-9058-b1fbf70abef4-image.png

                        Zeilenvorschübe sind also nicht im "Punkt" als beliebiges Zeichen enthalten.

                        Ist auch so definiert - habe es gerade nochmal nachgeschaut:

                        71566849-c154-46b7-9e44-24e4f6d78b64-image.png

                        Also ein Punkt definiert alle Zeichen - außer dem Zeilenvorschub. 😉 - Deswegen hat das bei Dir nicht bis zum Ende gemached. 😉

                        EDIT:

                        Der korrekte Ausdruck muss also

                        $replace(payload,/.*=(.*)\'.*\n/,"$1")
                        

                        heißen bzw. Dein RegEx Ausdruck eben noch den Zeilenvorschub enthalten:

                        .*=(.*)\'.*\n
                        

                        Hier nochwas zu Ergänzung. Im RegEx kann man auch Parameter mitgeben, in dem der Punkt auch den Zeilenvorschub als beliebiges Zeichen akzeptiert:

                        ef5b89a6-58df-4aeb-931c-d46dae1a85ea-image.png

                        Leider wird diese Option aber nicht von JSONATA unterstützt -
                        56ae68d1-bef6-4f2a-ab1f-2388cd2975f6-image.png

                        Es wird also nur i und m unterstützt. Im Prinzip bekommst Du aber auch im Nachhinein solche Zeichen ggf. wenn Du den Zeilenvorschub nicht in das search patter aufnehmen willst über die $trim Funktion weg.

                        $trim($replace(payload,/.*=(.*)\'.*/,"$1"))
                        
                        1 Reply Last reply Reply Quote 1
                        • mickym
                          mickym Most Active @Garf last edited by mickym

                          @garf Ein schönes Beispiel mit der Replace Funktion und den Gruppen möchte ich Dir hier mal verdeutlichen.

                          Ich hab Deinen String mal etwas aufgebohrt - und wenn es nicht darum geht, den Zahlenwert zu extrahieren - habe ich nun mal 3 Gruppen gebildet. 😉

                          1. Gruppe: die Temperatur (35.9)
                          2. Gruppe: die Einheit (C)
                          3. Gruppe: quasi das Topic - also um welche Temperatur es sich handelt. (CPU-Temperatur)

                          Mit der Replacefunktion können wir das nun komplett anders zusammensetzen:

                          af69d90f-eb35-4a80-8623-6da4c71b665d-image.png

                          Sting:

                          temp=35.9'C ist die CPU-Temperatur
                          

                          RegEx

                          .*=(.*)\'(.)?.*\s(.*)
                          

                          So kannst Du dann die eingefangenen Gruppen beliebig neu anordnen und einen neuen String bilden:

                          51a896e3-92e7-4419-a1f4-5c3c0d99a678-image.png

                          G Damrak2022 2 Replies Last reply Reply Quote 1
                          • G
                            Garf @mickym last edited by

                            @mickym sagte in Visualisierung mit Node Red erstellen:

                            So kannst Du dann die eingefangenen Gruppen beliebig neu anordnen und einen neuen String bilden:

                            Auch nicht übel und alles direkt in die richtige Form gebracht. Du solltest Online Schulungen abhalten. Vielleicht wirst Du damit steinreich.👍

                            Schon außergwöhnlich wie Du einem hilfst Probleme zu lösen und sein Wissen auszubauen.

                            Danke dafür. Freue mich jetzt schon auf eure nächtlichen Beiträge.

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

                              @mickym So, was möchtest Du jetzt mit der Change Node anstellen, wenn Du Lust hast?

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

                                @damrak2022 Hab ich was von einer Change Node geschrieben? 😁 😏 - Wie sieht es denn erst mal aus, ob Du prüfst, ob dein regulärer Ausdruck funktioniert? - Was wollen wir denn überhaupt machen? - Hast Du das Ziel noch vor Augen?

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

                                  @mickym sagte in Visualisierung mit Node Red erstellen:

                                  Morgen werden wir das mit einer Change Node machen.

                                  Ja, hier.
                                  Äh das Ziel habe ich wohl etwas aus den Augen verloren. Wie frage ich denn mit dem $1 ab. Das weiß ich auch noch nicht

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

                                    @damrak2022 OK - das hab ich da tatsächlich geschrieben. Gut dann werden wir mal kurz zusammenfassen, was wir erreichen wollen.

                                    • Nun wir haben ja eine iobroker-IN Node aus dem Du alle Status des Ein- und Ausschaltzustandes raus bekommst.
                                    • Nun siehst Du ja, dass aus jeder Nachricht jeder Shelly meldet, das topic den Datenpunkt des Gerätes enthält, das den Status meldet.
                                    • Aus diesem Topic wollen wir die Geräte Kennung (also aus dem Pfad des Datenpunktes) extrahieren
                                    • Die Gerätekennung wollen wir dann in einen sprechenden Namen übersetzen
                                    • Schließlich wollen wir den Zustand der Shellies in einem Objekt zusammenfassen.
                                    Damrak2022 1 Reply Last reply Reply Quote 1
                                    • Damrak2022
                                      Damrak2022 @mickym last edited by

                                      @mickym Ja

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

                                        @damrak2022 sagte in Visualisierung mit Node Red erstellen:

                                        @mickym Ja

                                        Das heißt wir sind in unserem Kochbuch in der Mitte gelandet. Dann lass uns doch mal da weiter machen, wo wir gestern aufgefhört haben. Du machst nochmal die regEx Seite auf und kopierst ein Topic rein und schaust, ob Du mit Deinem RegEx Ausdruck, die Kennung extrahieren kannst.

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

                                          @mickym Moment

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

                                            @mickym Habe ich:
                                            Bildschirm­foto 2022-12-19 um 00.07.18.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            713
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

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