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 @rewenode last edited by

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

      Ideal wäre, wenn die ENUM zum getObj mit ausgeben würden.

      So ist das, wenn man Funktionen nicht selbst braucht und einsetzt ...

      Ich werde die Ausgabe der Enums optional machen und so in das Objekt einbetten:

      {
      	"type": "channel",
      	"common": {
      		"name": {
      			"en": "AZThermostat"
      		},
      		"role": "thermostat"
      	},
      	"_id": "alias.0.Haus.Arbeitszimmer.AZThermostat",
      	"native": {},
      	"acl": {
      		"object": 1636,
      		"owner": "system.user.admin",
      		"ownerGroup": "system.group.administrator"
      	},
      	"from": "system.adapter.admin.0",
      	"user": "system.user.admin",
      	"ts": 1692695747121,
      	"enumAssignments": {
      		"rooms": [
      			{
      				"id": "enum.rooms.Arbeitszimmer",
      				"name": "Arbeitszimmer",
      				"type": "rooms",
      				"members": [
      					"alias.0.Haus.Arbeitszimmer.AZThermostat",
      					"alias.0.Haus.Arbeitszimmer.BlindAZ1",
      					"alias.0.Haus.Arbeitszimmer.BlindAZ2"
      				]
      			}
      		],
      		"functions": [],
      		"other": []
      	}
      }
      

      Außerdem ist es dann wohl auch eine gute Idee, die Enums separat suchen und filtern zu können.

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

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

        Ich werde die Ausgabe der Enums optional machen und so in das Objekt einbetten:

        Langsam bekomme ich echt ein schlechtes Gewissen;-( Ich hoffe, du genießt erstmal das Wochenende.
        Herzlichen Dank und schönen Sonntag

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

          @rewenode

          Danke und geht schon ... 🙂

          Mit der v0.10.0 sind die Enum-Funktionalitäten nun integriert. Da ich auch noch kräftig an der Code-Struktur geschraubt habe, zunächst nur als Beta über Github.

          In der v0.11 gibt es später noch einen "SendTo" Node und dann ist auch erstmal gut mit neuen Funktionen.

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

            @marc-berg Habe mir die CHANGELOG auf Github durchgelesen. Klingt großartig👍
            Inzwischen habe ich mir auch wieder einen ioB-Testcontainer erstellt und mit einigen Daten gefüllt um mal etwas intensiver testen zu können.
            Kannst du mir noch kurz sagen, wie ich die contrib-nodes im ioB Container direkt aus Guthub installieren kann?

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

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

              wie ich die contrib-nodes im ioB Container direkt aus Guthub installieren kann?

              .tgz aus dem Release runter-

              a8936104-7526-49ae-afd1-21f1c29346bc-grafik.png

              und hier hochladen:

              5c9ddd95-be59-4741-ac24-4caed67bd017-grafik.png

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

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

                Kannst du mir noch kurz sagen, wie ich die contrib-nodes im ioB Container direkt aus Guthub installieren kann?

                Ah, ich seh schon die 0.10 in der Palette. Danke 😀

                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:

                  .tgz aus dem Release runter-

                  Und nochmal danke😀

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

                    In der v0.12.0 habe ich noch ein wenig an der Darstellung des History-Node geschraubt (Tab-Darstellung).

                    c836d237-dcb2-47ab-9b8b-07adcae23363-grafik.png

                    Außerdem kann man im Node jetzt einstellen, wie man mit fast zeitgleich eintreffenden Queries umgehen möchte, die ja auch mal länger laufen können:

                    f526838e-6f8f-430f-a777-93ce7b5a1ec2-grafik.png

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

                      @marc-berg Bin da auf ein Problem gestossen. Könnte evtl. ein Bug sein oder an meiner Vorgehensweise liegen.

                      Ich arbeite relativ intensiv mit alias-states. Hauptsächlich um Sensoren schnell wechseln zu können.
                      So ist der alias-state: alias.0.Klima.office.Temperatur halt die Temp im Office.
                      Diesem State ist der Ort (enum.rooms.ground_floor.office) zugewiesen.

                      Der Sensor selbst(base) ist irgend ein Temperatursensor, der auch schnell mal gewechselt werden kann.
                      Zum Test grad der Temp-Sensor einer Tasmota-Steckdose: "mqtt.0.stTasmota-8.tele.SENSOR"
                      Diese wiederum hat eigene Eigenschaften, die ich i.d.R. ebenfalls in enums abgelegt habe. Da ist dann halt der Hardwaretyp/Batterie etc. hinterlegt.

                      Ich habe mir da so Listen gebastelt z.B. „offene Fenster“, die dann neben dem Status auch gleich signalisieren, wenn die Batterie zur Neige geht. Kurz, machmal brauche ich neben dem State auch das eigentliche (base) Objekt.

                      Mit den alten iob-Nodes bin ich immer folgendermaßen vorgegangen:

                      05351d6b-942e-4c64-9b95-4a497d6730a6-2025-07-07_14-30-51.png 

                      Umständlich aber funktioniert.

                      Jetzt versuche ich das mit deinen nodes. Da nehme natürlich statt der iob-list-node die „WS ioB getObj+Enum.
                      Die Node ansich tut einen hervorragenden Job und ist extrem flexibel.
                      da5596ea-0600-4883-97fc-4c2f1dd53750-2025-07-07_15-46-04.png 
                      Obwohl der topic korrekt gesetzt ist, bekomme ich den Fehler, wenn ich als letztes das base object abfragen will.
                      Frage ich das base object separat ab, läuft alles bestens.
                      44721575-357a-4cc0-8b6e-af330c09fe7f-lE mgrto.srtasmota-e.png
                      
                      Sieht fast so aus, als hätte es mit dem msg-object zu tun, was ja komplett durchgeschleift wird.

                      Getestet mit V0.10 externes NR und ioB NR Adapter.

                      [
                         {
                             "id": "6447bedc408b2e69",
                             "type": "iobget",
                             "z": "347707a21df4b745",
                             "name": "alias.0.Klima.office.Temperatu",
                             "state": "",
                             "outputProperty": "payload",
                             "server": "156c0c01949ae8c4",
                             "x": 410,
                             "y": 1000,
                             "wires": [
                                 [
                                     "6de201bbfc7ed4c2"
                                 ]
                             ]
                         },
                         {
                             "id": "4535ffb1c50b52c8",
                             "type": "inject",
                             "z": "347707a21df4b745",
                             "name": "alias.0.Klima.office.Temperatur",
                             "props": [
                                 {
                                     "p": "payload"
                                 },
                                 {
                                     "p": "topic",
                                     "vt": "str"
                                 }
                             ],
                             "repeat": "",
                             "crontab": "",
                             "once": false,
                             "onceDelay": 0.1,
                             "topic": "alias.0.Klima.office.Temperatur",
                             "payload": "",
                             "payloadType": "date",
                             "x": 410,
                             "y": 940,
                             "wires": [
                                 [
                                     "6447bedc408b2e69"
                                 ]
                             ]
                         },
                         {
                             "id": "0ad59e53d2561a23",
                             "type": "debug",
                             "z": "347707a21df4b745",
                             "name": "debug 79",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "true",
                             "targetType": "full",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 640,
                             "y": 1060,
                             "wires": []
                         },
                         {
                             "id": "6de201bbfc7ed4c2",
                             "type": "change",
                             "z": "347707a21df4b745",
                             "name": "state -> msg.alias_status",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "alias_status",
                                     "pt": "msg",
                                     "to": "state",
                                     "tot": "msg"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 390,
                             "y": 1060,
                             "wires": [
                                 [
                                     "0ad59e53d2561a23",
                                     "3abb390c37ed8d21"
                                 ]
                             ]
                         },
                         {
                             "id": "1ac08b45ac708426",
                             "type": "comment",
                             "z": "347707a21df4b745",
                             "name": "get alias status",
                             "info": "",
                             "x": 100,
                             "y": 1000,
                             "wires": []
                         },
                         {
                             "id": "8f216fcf8b8e7ac9",
                             "type": "debug",
                             "z": "347707a21df4b745",
                             "name": "debug 80",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "true",
                             "targetType": "full",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 640,
                             "y": 1200,
                             "wires": []
                         },
                         {
                             "id": "3abb390c37ed8d21",
                             "type": "iobgetobject",
                             "z": "347707a21df4b745",
                             "name": "",
                             "objectId": "",
                             "outputProperty": "payload",
                             "outputMode": "single",
                             "objectType": "",
                             "useWildcard": false,
                             "includeEnums": true,
                             "enumTypes": "all",
                             "server": "156c0c01949ae8c4",
                             "x": 380,
                             "y": 1120,
                             "wires": [
                                 [
                                     "49f35147ddc3fd53"
                                 ]
                             ]
                         },
                         {
                             "id": "49f35147ddc3fd53",
                             "type": "change",
                             "z": "347707a21df4b745",
                             "name": "topic -> base obj \\n alias obj -> msg.alias_obj",
                             "rules": [
                                 {
                                     "t": "set",
                                     "p": "alias_obj",
                                     "pt": "msg",
                                     "to": "payload",
                                     "tot": "msg"
                                 },
                                 {
                                     "t": "set",
                                     "p": "topic",
                                     "pt": "msg",
                                     "to": "payload[0].common.alias.id",
                                     "tot": "jsonata"
                                 }
                             ],
                             "action": "",
                             "property": "",
                             "from": "",
                             "to": "",
                             "reg": false,
                             "x": 390,
                             "y": 1200,
                             "wires": [
                                 [
                                     "8f216fcf8b8e7ac9",
                                     "1b8c6ab33d293cac"
                                 ]
                             ]
                         },
                         {
                             "id": "0356d0709e59121b",
                             "type": "comment",
                             "z": "347707a21df4b745",
                             "name": "set alias_obj \\n and base topic",
                             "info": "",
                             "x": 100,
                             "y": 1200,
                             "wires": []
                         },
                         {
                             "id": "a7ff286eeb7f78c2",
                             "type": "comment",
                             "z": "347707a21df4b745",
                             "name": "get alias obj with \\n alias and enum",
                             "info": "",
                             "x": 100,
                             "y": 1120,
                             "wires": []
                         },
                         {
                             "id": "b1a54bf0257b02aa",
                             "type": "comment",
                             "z": "347707a21df4b745",
                             "name": "set alias_status to \\n state",
                             "info": "",
                             "x": 110,
                             "y": 1060,
                             "wires": []
                         },
                         {
                             "id": "1b8c6ab33d293cac",
                             "type": "iobgetobject",
                             "z": "347707a21df4b745",
                             "name": "",
                             "objectId": "",
                             "outputProperty": "payload",
                             "outputMode": "single",
                             "objectType": "",
                             "useWildcard": false,
                             "includeEnums": true,
                             "enumTypes": "all",
                             "server": "156c0c01949ae8c4",
                             "x": 380,
                             "y": 1280,
                             "wires": [
                                 [
                                     "109f927759f1cd95"
                                 ]
                             ]
                         },
                         {
                             "id": "109f927759f1cd95",
                             "type": "debug",
                             "z": "347707a21df4b745",
                             "name": "debug 81",
                             "active": true,
                             "tosidebar": true,
                             "console": false,
                             "tostatus": false,
                             "complete": "true",
                             "targetType": "full",
                             "statusVal": "",
                             "statusType": "auto",
                             "x": 700,
                             "y": 1280,
                             "wires": []
                         },
                         {
                             "id": "156c0c01949ae8c4",
                             "type": "iob-config",
                             "name": "Test-ioB",
                             "iobhost": "iobroker",
                             "iobport": "8081",
                             "user": "",
                             "password": "",
                             "usessl": false
                         }
                      ]
                      

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

                        @rewenode

                        Exportiere bitte noch die verarbeiteten Datenpunkte aus MQTT.* und alias.* aus dem Objektbaum als JSON und stelle sie hier rein.

                        Ahh, Fehler gefunden. Der letzte Node bekommt durch die Verkettung als ObjectType "any" (als String) mitgegeben, den es so nicht gibt. Ich schleife ja die Suchparameter mit. Als Quickfix diese Eigenschaft im letzen Change-Node einfach löschen.

                        d3ec120f-285c-4192-af1c-e1cc77ba146c-grafik.png

                        Ich schau mal, dass ich den Eingabe-Parameter "any" und "null" gleichsetze.

                        Das ist wie die Geschichte mit der "any"-Key ... 🙂

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

                          @marc-berg Hoffe, ich habs richtig exportiert.
                          mqtt.0.stTasmota-8.json alias.0.Klima.office.Temperatur.json

                          Marc Berg 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:

                            Hoffe, ich habs richtig exportiert.

                            ja, sorry. Habe meinen letzten Post editiert.

                            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:

                              Als Quickfix diese Eigenschaft im letzen Change-Node einfach löschen.

                              Ja passt so👍 Und keine Eile, das läuft ja noch nicht produktiv.

                              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:

                                Sieht fast so aus, als hätte es mit dem msg-object zu tun, was ja komplett durchgeschleift wird.

                                Die aufgeräumten Objekt-Eigenschaften sind in der v0.12. verfügbar. Bald in der Palette oder jetzt auf Github.

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

                                  @rewenode

                                  Da das Abfragen der Objekteigenschaften und der Aliase doch eng zusammenhängt, habe ich es gleich in den GetObject Node mit eingebaut.

                                  a944fd28-001b-4be6-b6b8-268276674dcf-grafik.png

                                  Damit müsstest du nicht mehr den Umweg über fünf Nodes nehmen.

                                  R 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 das Abfragen der Objekteigenschaften und der Aliase doch eng zusammenhängt, habe ich es gleich in den GetObject Node mit eingebaut.

                                    Das ist wirklich klasse und eine echte Erleichterung👍 Danke

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

                                      @marc-berg Kurze Zwischenfrage, habe gerade mal flüchtig die 12.0-4 getestet. Vlt. war ich da zu voreilig.

                                      Ich frage ein Alias Object ab und bekomme neben dem aliasObject die aliasEnums UND das targetObject. Soweit perfekt!
                                      Allerdings wird das targetObject ohne die targetEnums geliefert? Oder mach ich da was falsch?

                                      2025-07-08_09-49-48.png

                                      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:

                                        Oder mach ich da was falsch?

                                        Nein, du machst nichts falsch. Eine Frage der Philosophie ist wahrscheinlich, ob man alias und target (in das dann wohl immer identische?) Enum legt.

                                        Ich könnte jetzt die Enums von alias und target zusammenfassen und deduplizieren, besser ist es aber, wenn ich die Enums sauber dem jeweiligen Objekt zuordne.

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

                                          @rewenode

                                          v0.12.0-5

                                          Jetzt haben alle target objects in aliasInfo.aliasTarget.target (bzw. targets.read/targets.write) die gleichen enum assignments wie das ursprüngliche Objekt, wenn sie in entsprechenden enums eingetragen sind.
                                          Die enum assignments erscheinen jetzt sowohl beim base-Objekt als auch bei allen alias target objects korrekt.

                                          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 könnte jetzt die Enums von alias und target zusammenfassen und deduplizieren, besser ist es aber, wenn ich die Enums sauber dem jeweiligen Objekt zuordne.

                                            Die Enums von alias und target sind i.d.R unterschiedlich, jedenfalls bei mir.
                                            Der Alias ändert sich nicht, ist einem festen Ort zugewiesen.
                                            Das Target device kann irgendwas sein und hat je nachdem individuelle Enums (Batterie/Hardware etc). Hatte früher mal aus diesem Grunde den Ort am Target festgemacht. Das ist aber unpraktisch, weil dann auch der Ort am target geändert werden muss, wenn das Teil woanders eingesetzt wird.
                                            Ob die Enums beim getObj bei einem Alias die Enums zusammenfasst sind ist eigentlich egal, Hauptsache, es werden sowohl die target und die alias Enums zurückgegeben. Zusammengefaßt wäre einfacher bei der Weiterverarbeitung, weil das alias-object ja in der Regel so betrachtet wird, als wäre es ein tatsächliches device.
                                            Getrennt ist aber auch ok.
                                            Hoffe, ich habe das nicht zu verworren ausgedrückt.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            856
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            communication node-red
                                            5
                                            84
                                            1607
                                            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