Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node Red Werte aus Objekten

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Node Red Werte aus Objekten

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

      Hallo zusammen,

      ich spiele gerade mit Node Red etwas rum und komme an einem Punkt nicht weiter:

      015ead50-6301-40f4-a300-78af9730b29c-image.png

      0577ef81-4c33-4d7e-93da-e5bd033f2e13-image.png

      e2470e35-4303-4b55-8314-29f587b82c29-image.png

      Und zwar möchte ich, wenn über Alexa der Schalter "Speicher" aktiviert wird, dass der Wert von SoC PV Anlage über "Routine Speak" ausgegeben wird. Dazu wollte ich den Wert in die Variable flow.speicher_soc schreiben.

      Wenn ich das ganze mit INJECT und Zahlenwerten probiere und manuell anstoße, funktioniert es. Wenn ich das an "SOC PV Anlage" hänge, geht nicht.

      Nun meine Frage(n):
      1.) Wie triggere ich das CHANGE an, wenn über "SoC PV Anlage" nur der Wert geliefert wird? Vermutlich liegt es daran?!

      Alternative Idee:
      2.) Was muss ich eingeben, um direkt auf den Wert von dem Baustein "SoC PV Anlage" zugreifen zu können? Dann könnte ich das ja eventuell in dem CHANGE Node direkt auf die FLOW Variable schreiben und triggern tu ich das ganze dann über Alexa und den "Schalter".

      Ich hoffe man versteht, was mein Problem ist. 😄

      Bin für jeden Hinweis dankbar!

      VG
      Sascha

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

        @sascha-holzer Na ich versteh es nur halb. Warum kannst Du den Wert nicht in einer Flow variable speichern. Wenn da halt auch andere Werte rauskommen, dann filtere halt mit einer switch Node die Nachrichten aus, die den korrekten Wert enthalten.

        Die Flow-variable über ein Change Node wieder zu holen, sollte ja kein Problem sein.

        Wenn das oben Dein korrektes payload Objekt ist, dann filtere halt die Nachrichten aus, deren state korrekt ist und speichere dann die payload.

        1 Reply Last reply Reply Quote 0
        • Sascha Holzer
          Sascha Holzer last edited by

          @mickym Ok du hast recht, das Problem lag wohl nicht an dieser change node sondern beim Routine Speak von Alexa.
          993ba445-2d79-4ab0-aad5-a2bf87548644-image.png
          Der Wert kam dort an (68), aber irgendwie scheint es ein Problem mit dem Datentyp zu geben?!

          Wenn ich das vorher nochmal in einen String umwandle, dann hat es funktioniert.

          var SoC = String(msg.payload)
          msg.payload = "Der Speicher hat " +SoC+ " Prozent"
          return msg;

          Mein Verständnis-Problem lag daran, dass ich dachte, man muss die Change Node nochmal antriggern, damit der Befehl ausgeführt wird. Bin noch sehr am Anfang mit Node Red

          Aber für die Zukunft, nochmal zu Frage 2): Wie kann ich in zB einer Function direkt auf diese 5 aus dem Objekt zugreifen? Oder geht das gar nicht?

          VG
          Sascha

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

            @sascha-holzer Ich würde Dir generell raten nicht soviel mit function Nodes zu machen. Solche Dinge kann man alle mit Change Node machen. Mit function Nodes programmierst Du wieder auf herkömmliche Weise und das muss man nur, für wirklich komplexe Anforderungen - für die es keine eigene Node gibt.

            Auf die Eigenschaften von Objekten greifst Du wie in Javascript auch über die Punkt oder über die Klammernotation zu.

            0d3714cb-9ce6-4d03-bca6-a0688ced88ca-image.png

            aus https://www.w3schools.com/js/js_objects.asp

            Am Besten ist einfach - du lässt Dir das Objekt in einer Debug Node ausgeben und dann kopierst Du Dir den Pfad zu einer Objekteigenschaft direkt aus dem Debugfenster:

            copy path.gif

            Sascha Holzer 1 Reply Last reply Reply Quote 0
            • Marc Berg
              Marc Berg Most Active last edited by

              @sascha-holzer sagte in Node Red Werte aus Objekten:

              Aber für die Zukunft, nochmal zu Frage 2): Wie kann ich in zB einer Function direkt auf diese 5 aus dem Objekt zugreifen? Oder geht das gar nicht?

              einfach per "msg.payload"

              hier ein kurzer Ausschnitt als Beispiel:

              if (msg.payload==msg.actuator){
                  //downlink queue löschen mit leerem Array
                  msg.payload={};
              }
              
              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Marc Berg last edited by mickym

                @marc-berg Nur eine kleine Anmerkung zu Deinem Code- Schnipsel - ist ein leeres Objekt und kein leeres Array auf das Du die payload setzt. 😉

                Marc Berg 1 Reply Last reply Reply Quote 1
                • Marc Berg
                  Marc Berg Most Active @mickym last edited by Marc Berg

                  @mickym sagte in Node Red Werte aus Objekten:

                  @marc-berg Nur eine kleine Anmerkung zu Deinem Code- Schnipsel - ist ein leeres Objekt und kein leeres Array auf das Du die payload setzt. 😉

                  Da hast Du natürlich recht, wobei in meinem Code sonst in diesem Object noch ein Array drin steckt, deshalb der Kommentar.

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

                    @mickym
                    Danke für die Tipps, ich werde mich durchwuseln.
                    Habe es jetzt geschafft, die Function zu ersetzen und gleich mit den anderen Werten weiter gemacht 😃

                    1092fb51-5ab3-4660-b65a-d5a69d68e33d-image.png

                    Besten Dank!

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

                      @sascha-holzer Gerne Du - kannst im Übrigen auch mehrere Regel in einer Change Node zusammenfassen. 😉 Nur mal so allgemein gesprochen. 😉

                      Also so was:

                      069f91e2-904f-4d1d-b224-089e642a437d-image.png

                      kann man wahrscheinlich auch in eine Change NOde packen. 😉

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

                        @mickym Da hab ich mir schon gedacht, aber ich finde es als Anfänger so tatsächlich übersichtlicher und man kann sich schnell was neues zusammenkopieren.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        886
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        901
                        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