Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zugriff auf andere ioBroker Objekte im Flow?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Zugriff auf andere ioBroker Objekte im Flow?

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

      Ich würde gerne innerhalb eines Flows, der z.B. durch das Außenthermometer getriggert wird, auf die Werte von anderen Homematic Sensoren innerhalb eines Function Nodes zugreifen - bin aber nicht sicher ob - und wie - es gehen könnte.

      Die einzige Lösung, die mir in den Sinn gekommen ist: Den Topic "*" abonnieren und einfach alles in ein context.global.state Objekt in node-red zu schreiben. Gibt's noch einen besseren Weg?

      1 Reply Last reply Reply Quote 0
      • ruhr70
        ruhr70 last edited by

        Die Frage hatte ich auch einmal gestellt und sie wurde negativ beantwortet (nicht möglich), mit der Erklärung warum:

        http://forum.iobroker.org/viewtopic.php … =852#p6303

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

          Danke, das dachte ich mir schon. Dann will ich hier zumindest meinen Workaround veröffentlichen.

          485_bildschirmfoto_2015-08-06_um_06.38.05.png

          Ich nehme alle Nachrichten von einem bestimmten Zweig aus dem IOBroker und schreibe die in eine globale Variable in node-red:

          context.global.state=context.global.state || {};
          var topics = msg.topic.split("/");
          var obj=context.global.state[topics[2]] || {};
          obj[topics[4]]=msg.payload;
          context.global.state[topics[2]]=obj;
          msg.payload=context.global.state;
          return msg;
          
          

          Damit baut sich in node-red eine Kopie des Status auf, der in jedem anderen Knoten ausgelesen werden kann.

          Hier der gesamte Flow:

          [{"id":"4cd83049.b327d","type":"function","name":"HM Status","func":"context.global.state=context.global.state || {};\nvar topics = msg.topic.split(\"/\");\nvar obj=context.global.state[topics[2]] || {};\nobj[topics[4]]=msg.payload;\ncontext.global.state[topics[2]]=obj;\nmsg.payload=context.global.state;\nreturn msg;","outputs":1,"noerr":0,"x":307,"y":43,"z":"88669efa.77996","wires":[["45440a29.babbf4"]]},{"id":"45440a29.babbf4","type":"debug","name":"","active":true,"console":"false","complete":"false","x":529,"y":43,"z":"88669efa.77996","wires":[]},{"id":"3f5d8b2c.c0a274","type":"http in","name":"","url":"/state","method":"get","swaggerDoc":"","x":94,"y":155,"z":"88669efa.77996","wires":[["bef86295.4107a"]]},{"id":"cbe3f0f4.341c1","type":"http response","name":"","x":450,"y":155,"z":"88669efa.77996","wires":[]},{"id":"bef86295.4107a","type":"function","name":"","func":"msg.payload=context.global.state || {};\nreturn msg;","outputs":1,"noerr":0,"x":269,"y":155,"z":"88669efa.77996","wires":[["cbe3f0f4.341c1"]]},{"id":"4e385fd6.b1c7a","type":"ioBroker in","name":"","topic":"hm-rpc.0.*","payloadType":"object","x":100,"y":43,"z":"88669efa.77996","wires":[["4cd83049.b327d"]]}]
          
          

          Im Flow gibt es auch einen http Knoten, um sich den Zustand im Browser anzusehen: http://raspi2:1880/state.

          Beispiel Ausgabe im Browser:

          {
            "JEQ015XXXX": {
              "BRIGHTNESS": {
                "val": 49,
                "ack": true,
                "ts": 1438836131,
                "from": "system.adapter.hm-rpc.0",
                "lc": 1438836131
              },
              "ERROR": {
                "val": 0,
                "ack": true,
                "ts": 1438836131,
                "from": "system.adapter.hm-rpc.0",
                "lc": 1437798650
              }
            },
            "LEQ053XXXX": {
              "BOOT": {
                "val": true,
                "ack": true,
                "ts": 1438836140,
                "from": "system.adapter.hm-rpc.0",
                "lc": 1437798621
              },
              "ENERGY_COUNTER": {
                "val": 4.8,
                "ack": true,
                "ts": 1438836140,
                "from": "system.adapter.hm-rpc.0",
                "lc": 1438799077
              },
              "POWER": {
                "val": 0,
                "ack": true,
                "ts": 1438836140,
                "from": "system.adapter.hm-rpc.0",
                "lc": 1438799086
              },
              ...
          }
          
          
          1 Reply Last reply Reply Quote 0
          • ruhr70
            ruhr70 last edited by

            Danke für die Info! Da hast Du in der Tat eine Lösung gefunden 🙂

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

            Support us

            ioBroker
            Community Adapters
            Donate

            886
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

            2
            4
            2024
            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