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.
    • Marc Berg
      Marc Berg Most Active last edited by Marc Berg

      Re: Externes node-RED und ioBroker. Wie verbinden ?

      Hallo,

      wie bereits mal in dem Parallelthread erwähnt, habe ich ein paar Nodes für die ioBroker-Anbindung für "Standalone Node-REDs" entwickelt. Nach dem ersten Entwurf auf Basis der REST-API wurde das ganze noch auf Websocket umgebaut.

      Das Paket richtet sich an Nutzer (wie mich), die Node-RED unabhängig von ioBroker betreiben möchten (und nicht als Adapter).

      Funktionen:

      • WebSocket-Verbindung zu ioBroker (über Web-, WebSocket- oder Admin-Adapter)
      • Bidirektionale Kommunikation (Lesen/Schreiben von States)
      • Wildcard-Pattern für Subscriptions (z.B. system.adapter.*.alive)
      • Interaktive State-Auswahl mit Suchfunktion
      • OAuth2-Authentifizierung und "No-Auth"-Modus
      • Automatische Wiederverbindung

      Das Paket ist als "node-red-contrib-iobroker" über die Palette oder npm verfügbar und auf GitHub dokumentiert.

      Falls jemand Interesse hat, das Paket zu testen oder Feedback zu geben, freue ich mich über Rückmeldungen. Besonders bei größeren ioBroker-Setups wäre Input hilfreich.
      Vielen Dank!

      Hinweis: Dies ist kein ioBroker-Adapter, sondern für externe Node-RED Installationen gedacht.

      ca0623d2-482b-4206-b3a8-e6159b4022f7-grafik.png fb498ce5-e046-45b8-86a2-d1c51bd7e053-grafik.png

      04f90895-5022-457e-9fb9-a4ca09b707b2-grafik.png

      93ad8343-797c-408b-95de-db4fa485d5e9-grafik.png

      R mickym Marc Berg 3 Replies Last reply Reply Quote 6
      • R
        rewenode @Marc Berg last edited by

        @marc-berg Macht bisher einen sehr guten Job. Danke für deine Arbeit.
        Kann leider noch nichts über größere Projekte sagen. Ich verwende sowas gerne zum Test von größeren Projekten. Habe bisher eine eigene WS-Implementierung in einem function-node dafür verwendet. Aber mit deinen nodes geht das Ganze doch schon komfortabler.

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

          @marc-berg Ich finde, dass ist eine großartige Arbeit von Dir. Ich hatte selbst vor ein paar Jahren mal diese Idee, aber mir fehlte zum Teil das Vorwissen und mir war das ganze Projekt dann zu groß.

          Strategisch sind diese Nodes sehr wertvoll, da man damit genauso von einer externen Instanz auf Homeassistant wie auf iobroker zugreifen kann.

          Ich habe momentan nur gerade wenig Lust - generell mein ganzes Projekt umzuschreiben, wobei ich schon Ideen und angefangen habe. Alleine für den neuen Desktop wollte ich meine ganzes Dashboard umschreiben.

          Was Du Dir damit angetan hast, ist halt, dass Du es vielleicht generell länger unterstützen müsstest. Ich hatte in der Vergangenheit oft das Gefühl, dass das IOB Team zum einen deswegen die interne Adapterlösung verwendet haben, da es ggf. geringerer Aufwand ist und das es vielleicht strategisch nicht gewollt ist, ein API von außen zugänglich zu machen.

          Jedenfalls vielen Dank - vielleicht berichtest Du mal - gerade in der NodeRed Community wie Deine Nodes ankommen.

          Hier im iobroker Bereich habe ich das Gefühl, dass die Zahl der NodeRed Interessenten/Anwender inzwischen sehr klein geworden ist und alle lieber puzzeln.
          Also ich beobachte einfach bisschen, wie sich Dein Projekt weiter entwickelt - aber bin schon mal sehr begeistert und werde mal in meiner Testumgebung Deine Nodes ausprobieren.

          👍 😀

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

            So die Nodes ließen sich problemlos installieren, allerdings bekomme ich keine Verbindung zustande - habe es mit 2 Iobroker Servern versucht.

            Meine NodeRed Instanz läuft als LXC auf 192.168.178.108

            mwadmin@mwnodered:~$ sudo ifconfig
            eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                    inet 192.168.178.108  netmask 255.255.255.0  broadcast 192.168.178.255
                    inet6 2001:9e8:a5da:e000:be24:11ff:feda:120f  prefixlen 64  scopeid 0x0<global>
                    inet6 fd00:2403:1961:0:be24:11ff:feda:120f  prefixlen 64  scopeid 0x0<global>
                    inet6 fe80::be24:11ff:feda:120f  prefixlen 64  scopeid 0x20<link>
                    ether bc:24:11:da:12:0f  txqueuelen 1000  (Ethernet)
                    RX packets 13458517  bytes 2232990941 (2.0 GiB)
                    RX errors 0  dropped 2698590  overruns 0  frame 0
                    TX packets 6444167  bytes 436372240 (416.1 MiB)
                    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            
            lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
                    inet 127.0.0.1  netmask 255.0.0.0
                    inet6 ::1  prefixlen 128  scopeid 0x10<host>
                    loop  txqueuelen 1000  (Lokale Schleife)
                    RX packets 0  bytes 0 (0.0 B)
                    RX errors 0  dropped 0  overruns 0  frame 0
                    TX packets 0  bytes 0 (0.0 B)
                    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            
            mwadmin@mwnodered:~$ ping -4 mwhome
            PING  (192.168.178.28) 56(84) bytes of data.
            64 bytes from mwhome.fritz.box (192.168.178.28): icmp_seq=1 ttl=64 time=0.488 ms
            64 bytes from mwhome.fritz.box (192.168.178.28): icmp_seq=2 ttl=64 time=0.158 ms
            64 bytes from mwhome.fritz.box (192.168.178.28): icmp_seq=3 ttl=64 time=0.183 ms
            

            Auch von meiner Standalone Windows NodeRed Installation bekomme ich keine Verbindung. Muss auf der Iobroker Seite noch was eingestellt werden?
            Ich nutze keine Authentifizierung .

            bf08970f-8e13-43e5-8f39-6fa401e8d85b-image.png

            Die Websocket Verbindung funktioniert nicht:

            [info] [WebSocket Manager] Creating connection 2 to mwhome:8084 (non-SSL, no-auth)
            23 Jun 22:00:08 - [info] Started modified nodes
            [error] [WebSocketClient:1750708808060-trhij11rf] socket hang up
            [error] [WebSocket Manager] Connection error for mwhome:8084 (connection 2): socket hang up
            [error] [WebSocketClient:1750708808060-trhij11rf] socket hang up
            [error] [WebSocket Manager] Connection error for mwhome:8084 (connection 2): socket hang up
            [error] [WebSocket Manager] Failed to create connection 2 to mwhome:8084: socket hang up
            [error] [WebSocket Manager] Subscribe failed for node 8b6f889fde2a90f0: socket hang up
            23 Jun 22:00:09 - [error] [iobin:8b6f889fde2a90f0] Connection failed: socket hang up
            23 Jun 22:00:09 - [error] [iobin:8b6f889fde2a90f0] WebSocket subscription failed: socket hang up
            [info] [WebSocket Manager] Deploy #2 completed
            [error] [WebSocketClient:1750708808060-trhij11rf] socket hang up
            [error] [WebSocket Manager] Connection error for mwhome:8084 (connection 2): socket hang up
            [error] [WebSocketClient:1750708808060-trhij11rf] socket hang up
            [error] [WebSocket Manager] Connection error for mwhome:8084 (connection 2): socket hang up
            [ioBroker] States API error: No active connection for mwhome:8084
            [ioBroker] States API error: No active connection for mwhome:8084
            [ioBroker] States API error: No active connection for mwhome:8084
            
            1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active last edited by

              OK - es läuft über den Admin Port 8081. Ist das richtig?

              Ich habe noch ein socket.io Adapter am Laufen der läuft auf 8084. Aber ich hab auch nichts dagegen wenn man den normalen iob Port 8081 nutzen muss.

              Aber ansonsten läuft die Kommunikation erst mal -

              10718841-70c1-4a2e-ace9-f7665eb3788b-image.png

              Super!!!!

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

                OK - das mit dem Refresh scheint noch manchmal bissi zu haken - und das Erstellen von Datenpunkten mit der automatischen Generierung der Hierarchien steht noch aus. Das ist so das, was ich auf die Schnelle entdecken konnte.

                Irgendwie ist das so ein Zwischending. Wenn man ein nicht existierenden Datenpunkt mit dem topic definiert, taucht der nicht auf. Wenn man den dann manuell in den Objekten erstellt, dann hat er aber die payload.

                Wenn man "cleared" und anschließend "refreshed" dann scheint das Aktualisieren zu funktionieren.

                Marc Berg 2 Replies Last reply Reply Quote 0
                • Marc Berg
                  Marc Berg Most Active last edited by

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

                  OK - es läuft über den Admin Port 8081. Ist das richtig?

                  Ich habe noch ein socket.io Adapter am Laufen der läuft auf 8084. Aber ich hab auch nichts dagegen wenn man den normalen iob Port 8081 nutzen muss.

                  Aber ansonsten läuft die Kommunikation erst mal -

                  Super!!!!

                  Schau mal bitte in die Readme. Du kannst drei Adapter nutzen: admin, ws und web (mit bestimmten Einstellungen) Der socket.io Adapter geht nicht (der spricht nicht websocket).

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

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

                    und das Erstellen von Datenpunkten mit der automatischen Generierung der Hierarchien steht noch aus.

                    Ja, das steht als Nächstes auf der Todo List, ich benutze das nicht.

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

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

                      Wenn man "cleared" und anschließend "refreshed" dann scheint das Aktualisieren zu funktionieren.

                      Okay, das war ein Browser-Cache Thema. Die 0.4.4 sollte dies fixen und die neu geladenen Daten in jedem Fall an den Browser durchreichen. Nach dem Laden des Updates unbedingt den Cache löschen, es sollte der Text oben angezeigt werden.

                      fa4b96a7-6594-4765-b129-b785b6afd0c6-grafik.png

                      In der 0.4.4 wurden auch noch ein paar Edge Cases bzgl. der Verbindung zum ioBroker angegangen. Bisher war es u.a. noch so, dass der ioBroker zum Start von Node RED laufen musste. Jetzt wird auch unabhängig davon der Verbindungsaufbau versucht.

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

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

                        Ich hatte in der Vergangenheit oft das Gefühl, dass das IOB Team zum einen deswegen die interne Adapterlösung verwendet haben, da es ggf. geringerer Aufwand ist

                        Es IST natürlich ein viel geringerer Aufwand. Ca. 90% der Entwicklungsarbeit für die externen Nodes gingen in den Test und das Handling der verschiedenen potentiellen Connection-Probleme, Token Ablauf Erneuerung (bei aktivierter Authentifizierung) inkl. der dann jeweils zu erneuernden Subscriptions, Node-Status-Texte, etc.

                        Beim Adapter ist die Gleichung im Vergleich recht einfach: "Wenn ioBroker aus, dann auch Node RED". Und für 99% aller Nutzer ist der Adapter auch die bessere Lösung.

                        und das es vielleicht strategisch nicht gewollt ist, ein API von außen zugänglich zu machen.

                        Im Ernst? Bei der Anzahl der zur Verfügung stehenden Schnittstellen (REST API, Simple API, Websocket, socket.io, ...)?

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

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

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

                          Wenn man "cleared" und anschließend "refreshed" dann scheint das Aktualisieren zu funktionieren.

                          Okay, das war ein Browser-Cache Thema. Die 0.4.4 sollte dies fixen und die neu geladenen Daten in jedem Fall an den Browser durchreichen. Nach dem Laden des Updates unbedingt den Cache löschen, es sollte der Text oben angezeigt werden.

                          fa4b96a7-6594-4765-b129-b785b6afd0c6-grafik.png

                          In der 0.4.4 wurden auch noch ein paar Edge Cases bzgl. der Verbindung zum ioBroker angegangen. Bisher war es u.a. noch so, dass der ioBroker zum Start von Node RED laufen musste. Jetzt wird auch unabhängig davon der Verbindungsaufbau versucht.

                          Das mit dem Refresh funktioniert jetzt wunderbar (auch die Anzeige ob Cache oder neu eingelesen). - Der Clear Button erschließt sich mir allerdings nicht ganz.

                          Allerdings wenn kein gültiger Topic/State eingetragen ist - also bei einer leeren Node oder wenn man das topic löscht und dann auf den Refresh-Button oder die Baumansicht geht, dann verheddert sich die Node.

                          cb854316-8f21-4adb-bbb4-4126f5ae4988-image.png
                          Erst wenn man dann manuell einen gültigen Pfad eingibt und deployed - dann kann man auch den Treeview in der Node wieder verwenden.

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

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

                            Allerdings wenn kein gültiger Topic/State eingetragen ist - also bei einer leeren Node oder wenn man das topic löscht und dann auf den Refresh-Button oder die Baumansicht geht, dann verheddert sich die Node.

                            Dann hat dein Browser noch einen alten Stand im Cache. Tritt es auch auf, wenn du mal einen Inkognito Tab öffnest? Wenn ja, bitte mal Schritt für Schritt, damit ich es nachstellen kann.

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

                              @marc-berg In dem Inkognito Fenster trat der Fehler nicht auf. Ich hatte zwar den Cache gelöscht, aber vielleicht hätte ich alles zu machen müssen.
                              Also alles fein. 🙂

                              Kannst Du mir noch erklären, wofür der Clear Button ist?

                              Etwas gewöhnungsbedürftig ist noch, dass man aus dem Tree-View die Übernahme des Topics mit einem Doppelklick machen muss. Oft klickt man auf die manuelle Ansicht oder denkt man hat den topic ausgewählt und schließt den Dialog und wundert sich, warum das Topic nicht übernommen wurde.

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

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

                                Kannst Du mir noch erklären, wofür der Clear Button ist?

                                Der löscht den search Input und setzt den Baum zurück, (falls man sich verlaufen hat) 🙂

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

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

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

                                  und das Erstellen von Datenpunkten mit der automatischen Generierung der Hierarchien steht noch aus.

                                  Ja, das steht als Nächstes auf der Todo List, ich benutze das nicht.

                                  In der 0.5.0 gibt es jetzt eine Node "iob out+"1e86478c-08ba-4637-bdce-c3cbae54bdc0-grafik.png

                                  Die kann jetzt auch Objekte erstellen. Bin noch nicht groß zum Testen gekommen, insbesondere die Autodetect Funktion für den Payload-Type müsste mal durchgetestet werden. Wenn das alles gut ist, würde ich die Funktion in die iobout Node übernehmen.


                                  2c4c468e-5e97-4bb6-95c6-fbb18cfce320-grafik.png

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

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

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

                                    Kannst Du mir noch erklären, wofür der Clear Button ist?

                                    Der löscht den search Input und setzt den Baum zurück, (falls man sich verlaufen hat) 🙂

                                    OK

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

                                    Etwas gewöhnungsbedürftig ist noch, dass man aus dem Tree-View die Übernahme des Topics mit einem Doppelklick machen muss. Oft klickt man auf die manuelle Ansicht oder denkt man hat den topic ausgewählt und schließt den Dialog und wundert sich, warum das Topic nicht übernommen wurde.

                                    Meines Erachtens wäre es sinnvoll den aktiven State auch in dem Tree View als Read-Only anzuzeigen.

                                    8aae43a4-4d6d-4d67-ac59-9867cfc9f347-image.png

                                    Das sind halt kleine Anpassungen, um den Dialog etwas intuitiver zu machen. 😉

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

                                      @marc-berg Die 0.5.0 Version wird mir in der Palette nicht angeboten.
                                      Du kannst das aber mit meinem Subflow selbst testen.

                                      558b4c18-595a-4c4d-8d84-92955764f0ea-image.png

                                      Im Prinzip hänge ich sonst nur noch die iob-Out Node dran. Die Angaben die in der iob-out stehen - stehen dann halt in der Prio über die automatischen Erkennungen.

                                      Im Topic steht ja - welche Datenpunkte zu beschreiben sind - egal, ob er bereits existiert oder nicht.
                                      Hier der Testflow:

                                      [{"id":"6e802f1553b18149","type":"subflow","name":"JSON or Obj to IOBroker","info":"# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the `top` property of the subflow-node is used. \n\nIn the properties of the subflow node a new property `keepTopic` has been added. Default is _false_ to keep the current behaviour. If set to _true_ then the originial topic will be placed between the `top` property of the subflow node and the property of the analyzed JSON object.\n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n**Update 13.09.2022:**\nSpaces in topics of objects are no longer replaced with underscores in objects. No differences between all data types.\n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der `top`-Wert der Subflow-Node verwendet.\n\nIn den Eigenschaften der Subflow-Node wurde ein neuer Parameter `keepTopic` hinzugefügt. Standardwert ist _false_, um das bisherige Verhalten beizubehalten. Setzt man die Eigenschaft auf _true_, dann wird das originale Topic zwischen der `top` Eigenschaft der Subflow-Node und Eigenschaft des analysierten JSON Objektes eingefügt.\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. \n\n**Update 13.09.2022:**\nLeerzeichen werden in Topics von Objekten nicht mehr durch Unterstriche ersetzt. Es gibt keine Unterschiede mehr zwischen den Datentypen.","category":"","in":[{"x":60,"y":160,"wires":[{"id":"554b8c663bcb46c2"}]}],"out":[{"x":2620,"y":280,"wires":[{"id":"0962842ebd23e0d7","port":0}]}],"env":[{"name":"top","type":"str","value":"objRoot"},{"name":"keepTopic","type":"bool","value":"false"}],"meta":{},"color":"#E2D96E","icon":"node-red/batch.svg"},{"id":"3e11e8338f694832","type":"split","z":"6e802f1553b18149","name":"split object","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"key","x":1370,"y":160,"wires":[["0562a4249c8b856b"]]},{"id":"0562a4249c8b856b","type":"change","z":"6e802f1553b18149","name":"add key to topic","rules":[{"t":"set","p":"stateName","pt":"msg","to":"key","tot":"msg"},{"t":"change","p":"key","pt":"msg","from":".","fromt":"str","to":"_","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"topic  & '.' & key","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1560,"y":160,"wires":[["ddc90985bef0fafa"]]},{"id":"ddc90985bef0fafa","type":"switch","z":"6e802f1553b18149","name":"is type?","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"array","vt":"array"},{"t":"istype","v":"object","vt":"object"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1740,"y":160,"wires":[["bfce19b206660fbe"],["3e11e8338f694832"],["1a8c03d866b85b12"]]},{"id":"bfce19b206660fbe","type":"split","z":"6e802f1553b18149","name":"split array","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":780,"y":280,"wires":[["e89927810c6d75ec"]]},{"id":"e89927810c6d75ec","type":"change","z":"6e802f1553b18149","name":"add index to topic","rules":[{"t":"set","p":"topic","pt":"msg","to":"topic  & '.' & parts.index","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":970,"y":280,"wires":[["a4d1a5d04564dc77"]]},{"id":"f5d52c6a57d08904","type":"change","z":"6e802f1553b18149","name":"finalize msg.topic","rules":[{"t":"set","p":"top","pt":"msg","to":"'0_userdata.0.' & top","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"top & '.' & topic","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2170,"y":240,"wires":[["0962842ebd23e0d7"]]},{"id":"1a8c03d866b85b12","type":"switch","z":"6e802f1553b18149","name":"is msg.top != null","property":"top","propertyType":"msg","rules":[{"t":"nnull"},{"t":"null"}],"checkall":"true","repair":false,"outputs":2,"x":1950,"y":280,"wires":[["f5d52c6a57d08904"],["74c895ce724750de"]]},{"id":"e023fe88445ce43e","type":"change","z":"6e802f1553b18149","name":"","rules":[{"t":"delete","p":"topic","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":200,"wires":[["3649300b4c233b10"]]},{"id":"3649300b4c233b10","type":"switch","z":"6e802f1553b18149","name":"is type?","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"json","vt":"json"},{"t":"istype","v":"array","vt":"array"},{"t":"istype","v":"object","vt":"object"},{"t":"else"}],"checkall":"true","repair":false,"outputs":4,"x":600,"y":160,"wires":[["fc7913a8524badb7"],["bfce19b206660fbe"],["3e11e8338f694832"],["9ac3cc3681e8b6c6"]]},{"id":"1b8480cd2df7ba3f","type":"comment","z":"6e802f1553b18149","name":"Array","info":"","x":600,"y":280,"wires":[]},{"id":"b3541807672be040","type":"comment","z":"6e802f1553b18149","name":"object","info":"","x":1340,"y":100,"wires":[]},{"id":"a4d1a5d04564dc77","type":"switch","z":"6e802f1553b18149","name":"is type?","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"object","vt":"object"},{"t":"istype","v":"array","vt":"array"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":1160,"y":280,"wires":[["3e11e8338f694832"],["bfce19b206660fbe"],["a096a93bb82b7a93"]]},{"id":"74c895ce724750de","type":"change","z":"6e802f1553b18149","name":"finalize msg.topic","rules":[{"t":"set","p":"top","pt":"msg","to":"top","tot":"env"},{"t":"set","p":"top","pt":"msg","to":"'0_userdata.0.' & top","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"top & '.' & topic","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":2170,"y":320,"wires":[["0962842ebd23e0d7"]]},{"id":"554b8c663bcb46c2","type":"switch","z":"6e802f1553b18149","name":"","property":"keepTopic","propertyType":"env","rules":[{"t":"true"},{"t":"false"}],"checkall":"true","repair":false,"outputs":2,"x":170,"y":160,"wires":[["e30ba9f0483285e4"],["e023fe88445ce43e"]]},{"id":"e30ba9f0483285e4","type":"change","z":"6e802f1553b18149","name":"","rules":[{"t":"change","p":"topic","pt":"msg","from":"/","fromt":"str","to":".","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":120,"wires":[["3649300b4c233b10"]]},{"id":"0962842ebd23e0d7","type":"change","z":"6e802f1553b18149","name":"translate invalid chars in topic","rules":[{"t":"change","p":"topic","pt":"msg","from":"..","fromt":"str","to":".","tot":"str"},{"t":"change","p":"topic","pt":"msg","from":"€","fromt":"str","to":"EUR","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":2430,"y":280,"wires":[[]]},{"id":"9ac3cc3681e8b6c6","type":"change","z":"6e802f1553b18149","name":"set topic, if empty","rules":[{"t":"set","p":"topic","pt":"msg","to":"topic ? topic : $type(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":950,"y":200,"wires":[["a096a93bb82b7a93"]]},{"id":"fc7913a8524badb7","type":"json","z":"6e802f1553b18149","name":"","property":"payload","action":"obj","pretty":false,"x":750,"y":100,"wires":[["d9e7bdd4c48a8aa1"]]},{"id":"d9e7bdd4c48a8aa1","type":"switch","z":"6e802f1553b18149","name":"is type?","property":"payload","propertyType":"msg","rules":[{"t":"istype","v":"array","vt":"array"},{"t":"istype","v":"object","vt":"object"},{"t":"else"}],"checkall":"true","repair":false,"outputs":3,"x":900,"y":100,"wires":[["1520be42bcc2145e"],["1520be42bcc2145e"],["9ac3cc3681e8b6c6"]]},{"id":"a096a93bb82b7a93","type":"junction","z":"6e802f1553b18149","x":1380,"y":280,"wires":[["1a8c03d866b85b12"]]},{"id":"1520be42bcc2145e","type":"junction","z":"6e802f1553b18149","x":480,"y":20,"wires":[["3649300b4c233b10"]]},{"id":"8d36fab85a67b5f5","type":"subflow:6e802f1553b18149","z":"636428f191d4dd62","name":"","env":[{"name":"top","value":"Test2","type":"str"}],"x":650,"y":520,"wires":[["f6641df68daf3f73"]]},{"id":"80c5f230876a9366","type":"inject","z":"636428f191d4dd62","name":"Testobjekt","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"squadName\":\"Super hero squad\",\"homeTown\":\"Metro City\",\"formed\":2016,\"secretBase\":\"Super tower\",\"active\":true,\"members\":[{\"name\":\"Molecule Man\",\"age\":29,\"secretIdentity\":\"Dan Jukes\",\"powers\":[\"Radiation resistance\",\"Turning tiny\",\"Radiation blast\"],\"dressed\":{\"head\":\"Kopfbedeckung\"}},{\"name\":\"Madame Uppercut\",\"age\":69,\"secretIdentity\":\"Jane Wilson\",\"powers\":[\"Million tonne punch\",\"Damage resistance\",\"Superhuman reflexes\"]},{\"name\":\"Eternal Flame\",\"age\":1000000,\"secretIdentity\":\"Unknown\",\"powers\":[\"Immortality\",\"Heat Immunity\",\"Inferno\",\"Teleportation\",\"Interdimensional travel\"]}]}","payloadType":"json","x":420,"y":520,"wires":[["8d36fab85a67b5f5"]]},{"id":"f6641df68daf3f73","type":"debug","z":"636428f191d4dd62","name":"Objektbaum","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":910,"y":520,"wires":[]}]
                                      


                                      Im Prinzip ist das das 6. Beispiel JSON String in meinem Subflow und so sollte der Baum dann auch aussehen:
                                      https://forum.iobroker.net/topic/43856/json-oder-javascript-objekt-in-iobroker-datenpunkte-zerlegen
                                      0342bd8f-ac0e-4af3-978d-7022e5332214-image.png
                                      Ich muss jetzt für heute erst mal weg. Also lass Dir ruhig Zeit.

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

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

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

                                        Kannst Du mir noch erklären, wofür der Clear Button ist?

                                        Der löscht den search Input und setzt den Baum zurück, (falls man sich verlaufen hat) 🙂

                                        Meines Erachtens braucht es den Button aber nicht, weil der Refreshknopf ja auch die Suche zurücksetzt - aber Du bist der Chef. 😉

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

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

                                          Meines Erachtens braucht es den Button aber nicht, weil der Refreshknopf ja auch die Suche zurücksetzt - aber Du bist der Chef.

                                          Wenn man eine Vielzahl von States hat, kann das Refreshen schon mal länger dauern, deshalb diese einfache Alternative.

                                          Als very-very-very-nice-to-have möchte ich den refresh Button abschaffen und auf Objekt-Änderungen in Realtime reagieren.

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

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

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

                                            Meines Erachtens braucht es den Button aber nicht, weil der Refreshknopf ja auch die Suche zurücksetzt - aber Du bist der Chef.

                                            Wenn man eine Vielzahl von States hat, kann das Refreshen schon mal länger dauern, deshalb diese einfache Alternative.

                                            Als very-very-very-nice-to-have möchte ich den refresh Button abschaffen und auf Objekt-Änderungen in Realtime reagieren.

                                            Ich finde, dass Dein Refresh Button gut funktioniert. Im Adapter funktioniert der Refresh bis heute nicht und ich hatte das schon vor Jahren "angemerkt". - Also lieber ein funktionierender Refresh, als kein Refresh.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            931
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            communication node-red
                                            5
                                            83
                                            1306
                                            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