Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Node-RED Nodes für externe ioBroker Integration

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Node-RED Nodes für externe ioBroker Integration

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

      @Marc-Berg Ich hab da mal eine prinzipielle Frage

      Ich habe jetzt mal etwas intensiver mit den nodes von einem externen NR gespielt. In meine Beispiel versuche ich mich gerade mit dem Dashboard 2 vertraut zu machen. Besonders die Verwendung von Subflows vereinfachen die Arbeit ungemein.
      Mein Test sieht etwa so aus:
      2025-07-14_08-31-13.png
      Hier habe die WS-ioB-nodes alle in den Subflow gepackt, was den Hauptflow extrem vereinfacht.
      Natürlich sind hier auch andere Szenarien denkbar.
      Man könnte auch die zu abonnierenden states über einen einzelnen externen WS-ioB-IN realisieren, und die Daten den Subflow-Instanzen extern zuführen.

      Was ich mich frage:
      Wie verhalten sie diesbezüglich eigentlich die WS-ioB in Bezug auf Speicher/Performance?
      Will fragen, was ist besser, die states einzeln zu abonnieren oder alle in einem node zu abonnieren.
      Dabei lass ich mal außer acht, dass der externe Aufwand im Falle von mehreren states pro WS-ioB-IN steigen wird, weil die Daten i.d.R. wieder auseinanderklamüsert werden müssen.

      In meinem Test mit den 3 Instanzen des Subflows gibt es keinerlei Probleme. Bin nach wie vor von den WS-ioB nodes begeistert.

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

        @rewenode sagte in Node-RED Nodes für externe ioBroker Integration:

        Was ich mich frage:
        Wie verhalten sie diesbezüglich eigentlich die WS-ioB in Bezug auf Speicher/Performance?
        Will fragen, was ist besser, die states einzeln zu abonnieren oder alle in einem node zu abonnieren.

        Speichertechnisch dürfte der "MultipleStates" Ansatz Vorteile bringen. Wenn ich das mal grob überschlage:

        100 einzelne Nodes:

        100 × Node-Instanz ≈ 100 × 5KB = 500KB
        100 × Callback-Handler ≈ 100 × 1KB = 100KB
        100 × State-Tracking ≈ 100 × 0.5KB = 50KB

        Summe: ~650KB
        ─────────────────────────────────────────

        1 Multiple States Node:

        1 × Node-Instanz ≈ 5KB
        1 × Callback-Handler ≈ 1KB
        100 × State-Tracking ≈ 50KB

        Summe: ~56KB
        ─────────────────────────────

        Und auch die CPU-Belastung düfte etwas geringer ausfallen.

        Ob in heutigen Hardware-Szenarien das wirklich relevant ist und den Mehraufwand rechtfertigt, muss man entscheiden.

        In meinem Test mit den 3 Instanzen des Subflows gibt es keinerlei Probleme. Bin nach wie vor von den WS-ioB nodes begeistert.

        Freut mich. Ich habe meine Prod umgestellt (noch ohne Optimierungen auf Basis der neuen Möglichkeiten), mit 600 Nodes (davon ca. 180 ioBroker WS Nodes) dümpelt der Container bei ca. 100MB und 0.1-0.2% CPU dahin.

        In Summe (vor und nach der Umstellung) sehe ich keinen Unterschied bei Memory und CPU. Das geht im Grundrauschen unter.

        R 1 Reply Last reply Reply Quote 0
        • R
          rewenode @Marc Berg last edited by

          @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

          Ich habe meine Prod umgestellt (noch ohne Optimierungen auf Basis der neuen Möglichkeiten), mit 600 Nodes (davon ca. 180 ioBroker WS Nodes) dümpelt der Container bei ca. 100MB und 0.1-0.2% CPU dahin.
          In Summe (vor und nach der Umstellung) sehe ich keinen Unterschied bei Memory und CPU. Das geht im Grundrauschen unter.

          Das klingt gut. Werde ich auch erst mal so machen. Falls es Engpässe gibt , kann ich ja immer noch nach Multistate umstellen.
          In vielen Fällen ist das bei mir eh vorteilhafter. Ich arbeite ja nicht überall mit Subflows.

          R 1 Reply Last reply Reply Quote 0
          • R
            rewenode @rewenode last edited by rewenode

            @rewenode So langsam stelle ich immer mehr meiner Flows um und bisher kann ich von keinen Problemen berichten 😉 Dass das recht langsam voran geht liegt daran, dass ich gleichzeitig meine Dashboards umstelle.

            Und da habe ich mal eine Frage.
            Wäre es möglich, dem WS-ioB-In einen Eingang zu verpassen, um sozusagen von extern einen "Send initial value on startup" auszulösen?

            Hintergrund.
            Bei vielen Dashboards habe ich das Problem, dass ich aktuelle Werte nach einem Page/Tab Change Event benötige.
            Jetzt mache ich das mit einem UI-control, der dann für jeden (eigentlich abonnierten Wert) einen WS-ioB-get triggert.
            Das klappt zwar super, verdoppelt aber die WS-ioB nodes für alle Werte in der Anzeige.
            Da wo ich mit multiplen states arbeiten kann ist das nicht so problematisch.

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

              @rewenode sagte in Node-RED Nodes für externe ioBroker Integration:

              Wäre es möglich, dem WS-ioB-In einen Eingang zu verpassen, um sozusagen von extern einen "Send initial value on startup" auszulösen?

              Möglich ja, aber: Nein.

              Abgesehen davon, dass der iob-in Node schon ziemlich überladen ist, finde ich es konzeptionell falsch. Ein "-in" Node sollte nur einen Ausgang haben, ein "-out" Node nur einen Eingang. Sonst werden Flows unlesbar, wenn man keine Trigger mehr erkennt.

              Aber ich verstehe das Problem und könnte mir eine Lösung vorstellen:

              • Jeder iob-in Node registriert sich selbst im Flow-Context und stellt eine Trigger-Funktion bereit. (muss ich anpassen)
              • Dein Dashboard Change Event triggert ein Function Node, in diesem steht sinngemäß:
              const registeredNodes = context.flow.get('iobroker_in_nodes');
              
              Object.values(registeredNodes)
                  .filter(nodeInfo => nodeInfo.name && nodeInfo.name.includes('[Dashboard]'))
                  .forEach(nodeInfo => nodeInfo.triggerCached());
              

              Oder beliebige andere Filter-Mechanismen, die Node-RED zur Verfügung stellt (alle Nodes eines Flows, einer Gruppe, ..)

              Marc Berg R 2 Replies Last reply Reply Quote 1
              • Marc Berg
                Marc Berg Most Active @Marc Berg last edited by

                @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                (muss ich anpassen)

                --> v0.15.0-1

                R 1 Reply Last reply Reply Quote 0
                • R
                  rewenode @Marc Berg last edited by

                  @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                  --> v0.15.0-1

                  Klasse, werde ich gleich mal testen.
                  Dein Argument mit dem ioB-in kann ich nachvollziehen. Dein Lösungsvorschlag klingt sehr flexibel. Bin mal gespannt.

                  1 Reply Last reply Reply Quote 0
                  • R
                    rewenode @Marc Berg last edited by

                    @marc-berg Das klappt prinzipiell wunderbar 👍
                    Wenn ich alle WS-ioB-in trigger, klappe es super!

                    const registeredNodes = context.flow.get('iobroker_in_nodes');
                    
                    Object.values(registeredNodes)
                        //.filter(nodeInfo => nodeInfo.name && nodeInfo.name.includes('[Dashboard]'))
                        .forEach(nodeInfo => nodeInfo.triggerCached());
                        
                    return msg;
                    

                    Mit dem Filter stehe ich noch auf dem Schlauch.
                    Im Subflow kann ich das 'iobroker_in_nodes'-Object nicht inspizieren.
                    Interpretiere ich deinen Beispielfilter richtig?

                    nodeInfo.name steht hier für den Namen des WS-ioB-nodes. Der darf nicht leer sein und muss den String [Dashboard] enthalten.
                    Oder bin ich hier auf der falschen Fährte?

                    R Marc Berg 2 Replies Last reply Reply Quote 0
                    • R
                      rewenode @rewenode last edited by

                      @Marc-Berg Ok, habs geschnallt😀
                      Alle Dashboard relevanten ioB-In mit [Dashboard] im Namen zu versehen, macht absolut Sinn. Schließlich brauchen nur die den Page/Tab Change Event.
                      Das werde ich auch so machen und dann den Filter einschalten. Welche key`s da ggf. noch zur Filterung zur Verfügung stehen, kann ich mir im Hauptflow ansehen, wenn ich da ein ioB-In platziere.

                      Meinen Subflows habe ich nun einen Eingang spendiert, da brauche ich den UI-control nur einmal im Hauptflow.

                      Da bleiben eigentlich keine Wünsche offen.
                      Danke

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

                        @rewenode sagte in Node-RED Nodes für externe ioBroker Integration:

                        //.filter(nodeInfo => nodeInfo.name && nodeInfo.name.includes('[Dashboard]'))  
                        

                        nodeInfo.name steht hier für den Namen des WS-ioB-nodes. Der darf nicht leer sein und muss den String [Dashboard] enthalten.
                        Oder bin ich hier auf der falschen Fährte?

                        ja, so ähnlich. Mit dem Konstrukt

                        nodeInfo.name && nodeInfo.name.includes('[Dashboard]'))
                        

                        stellt man sicher, dass die Funktion keinen häßlichen Fehler auswirft, falls ein Node keine "Name" Eigenschaft besitzt. (ein eher theoretischer Fehler).

                        Ich werde die Funktion noch ausbauen, sodass man den Namen der Trigger-Gruppe pro iob-in Node festlegen kann. Auf diese Weise muss man die Nodes im function Node nicht nochmal filtern.

                        d3a36243-b85d-4792-819c-83844526eb72-grafik.png

                        R 1 Reply Last reply Reply Quote 1
                        • R
                          rewenode @Marc Berg last edited by

                          @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                          Ich werde die Funktion noch ausbauen, sodass man den Namen der Trigger-Gruppe pro iob-in Node festlegen kann. Auf diese Weise muss man die Nodes im function Node nicht nochmal filtern.

                          Klasse 👍

                          v0.15.0-1 läuft jedenfalls schon mal seit gestern und tut genau was sie soll.

                          1 Reply Last reply Reply Quote 0
                          • M
                            MartyBr last edited by

                            @Marc-Berg
                            Hallo, ich migrieren gerade meine Flows vom ioBroker-Node-Red zu dem eigenständigen Node-Red server. Deine Nodes sind in der Version 15.0 installiert.

                            Mein Problem ist folgendes:
                            Im Original-Node gibt es das Feld Attribut:
                            Bildschirmfoto 2025-07-26 um 11.00.24.png

                            In deinem Node finde ich hier keine Möglichkeit, das Attribut festzulegen:
                            Bildschirmfoto 2025-07-26 um 11.03.53.png

                            Hier gibt es Output Property.
                            Kann ich es so anwenden?

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

                              @martybr sagte in Node-RED Nodes für externe ioBroker Integration:

                              Mein Problem ist folgendes:
                              Im Original-Node gibt es das Feld Attribut:

                              Hier gibt es Output Property.
                              Kann ich es so anwenden?

                              Das ist das Gleiche. Ich habe mich für den Begriff "property" entschieden, weil es besser in die Node-RED Konventionen passt.

                              M R 2 Replies Last reply Reply Quote 0
                              • M
                                MartyBr @Marc Berg last edited by

                                @marc-berg
                                Danke 👍
                                Passt

                                1 Reply Last reply Reply Quote 0
                                • R
                                  rewenode @Marc Berg last edited by

                                  @marc-berg Also zu meckern gibt es immer noch nichts;-) Inzwischen habe ich weite Teile meiner Flows migriert.
                                  Bei einer Sache habe ich echt an meinem Verstand gezweifelt.
                                  Ich habe mir vor langer Zeit so einen Flow gebastelt, der rein im function node per WS meine PV abfragt.
                                  Da abboniere ich viele Datenpunkte gemäß deren API, die sehen dann z.B. so aus:

                                  "_sum/EssActiveDischargeEnergy"
                                  

                                  Die reinkommenden Daten schreibe ich dann in states mit dem Topic:

                                        msg.topic = "node-red.0/fems/" + fems_request_channels[i][requestKey];
                                  
                                  

                                  Das läuft mit den alten nodes ok. Nicht aber mit den neuen.
                                  Hab dann irgendwann endlich gemerkt, dass die neuen nodes zwingend den "." als Property-Trenner verlangen.
                                  Das ist natürlich ok und sicher auch besser.
                                  Will nur darauf hinweisen, falls noch jemand in diese Falle tappst;-)

                                  Macht echt Spass, seine Flows mit den neuen Möglichkeiten gleich mal zu überarbeiten.

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

                                    @rewenode sagte in Node-RED Nodes für externe ioBroker Integration:

                                    Das läuft mit den alten nodes ok. Nicht aber mit den neuen.
                                    Hab dann irgendwann endlich gemerkt, dass die neuen nodes zwingend den "." als Property-Trenner verlangen.

                                    Um ehrlich zu sein, habe ich mir nicht viel Mühe dabei gegeben, die Umstellung so einfach wie möglich zu gestalten. An dieser Stelle hatte ich eine Weile überlegt, wie ich es mache. Insbesondere beim "in" Node konnte man ja auch das "MQTT" Format mit "/" wählen. Ich hab's dann weggelassen weil ich es nicht verwendete (dachte ich). Bei der Umstellung hab ich dann gemerkt, dass ich doch eine Stelle drin hatte.

                                    Will nur darauf hinweisen, falls noch jemand in diese Falle tappst;-)

                                    So wie ich selbst.

                                    M 1 Reply Last reply Reply Quote 0
                                    • M
                                      MartyBr @Marc Berg last edited by

                                      @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                                      @rewenode sagte in Node-RED Nodes für externe ioBroker Integration:

                                      Das läuft mit den alten nodes ok. Nicht aber mit den neuen.
                                      Hab dann irgendwann endlich gemerkt, dass die neuen nodes zwingend den "." als Property-Trenner verlangen.

                                      Um ehrlich zu sein, habe ich mir nicht viel Mühe dabei gegeben, die Umstellung so einfach wie möglich zu gestalten. An dieser Stelle hatte ich eine Weile überlegt, wie ich es mache. Insbesondere beim "in" Node konnte man ja auch das "MQTT" Format mit "/" wählen. Ich hab's dann weggelassen weil ich es nicht verwendete (dachte ich). Bei der Umstellung hab ich dann gemerkt, dass ich doch eine Stelle drin hatte.

                                      Will nur darauf hinweisen, falls noch jemand in diese Falle tappst;-)

                                      So wie ich selbst.

                                      Planst du das Verhalten noch zu ändern? Wo finde ich die Doku dazu? Ich verwende eine Menge mqtt-Nodes. Wenn ich das richtig??? gelesen habe, betrifft es den in und den out-Node?

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

                                        @martybr sagte in Node-RED Nodes für externe ioBroker Integration:

                                        Planst du das Verhalten noch zu ändern?

                                        Ich sehe im Moment keinen Grund dafür. Hier geht es ja lediglich darum, in welchem Format die Topics durch den Flow geschleust werden. Da es sich hier um ioBroker Nodes handelt, verwende ich natürlich die ioBroker Notation, und die ist mit Punkten.

                                        Wo finde ich die Doku dazu?

                                        Ich verstehe nicht. Die Nodes sind schon umfangreicher dokumentiert als 99,9% vergleichbarer Projekte. Soll ich jetzt auch noch dokumentieren, was ich NICHT mache?

                                        Ich verwende eine Menge mqtt-Nodes. Wenn ich das richtig??? gelesen habe, betrifft es den in und den out-Node?

                                        Ja. Beim "in" Node konnte man wählen, dass man statt der Punkte im Topic "/" hat. Und beim out-Node konnte man AUCH "/" als Trenner angeben. Das hat aber aus meiner Sicht Fehlerpotential, weil auch solche Bezeichner wie

                                        abd0da1d-794c-4bbb-a790-7f506a62a5ff-grafik.png

                                        möglich sind.

                                        R M 2 Replies Last reply Reply Quote 1
                                        • R
                                          rewenode @Marc Berg last edited by

                                          @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                                          Da es sich hier um ioBroker Nodes handelt, verwende ich natürlich die ioBroker Notation, und die ist mit Punkten.

                                          Ich würde es ehrlich gesagt auch so lassen. Ist weniger fehleranfällig und in stateID Pattern sind die Beispiele ja auch mit Punkt. Da könnte man zur Not ja noch
                                          "only dot notation is permitted" drunterschreiben.

                                          @marc-berg sagte in Node-RED Nodes für externe ioBroker Integration:

                                          Die Nodes sind schon umfangreicher dokumentiert als 99,9% vergleichbarer Projekte.

                                          Würde ich mal zu 100% unterschreiben. Kann mich nicht erinnern schon mal so gut dokumentierte nodes gesehen zu haben. Danke dafür.

                                          1 Reply Last reply Reply Quote 0
                                          • M
                                            MartyBr @Marc Berg last edited by

                                            @marc-berg
                                            Ich habe die Doku auf Github gefunden. Sie ist wirklich ausgesprochen umfangreich.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            533
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            communication node-red
                                            5
                                            100
                                            2073
                                            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