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. wait until-ähnliche Node / Arbeit mit "Context"

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    wait until-ähnliche Node / Arbeit mit "Context"

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

      Hallo zusammen,

      meine Frau und ich sind neu in ein zu Hause gezogen, wo wirklich alles am KNX Bus hängt. Nun, nach dem Auspacken der Kartons, geht es für mich an das Umsetzen verschiedener "smarter Abläufe". Dazu habe ich mich in die Thematik Node-Red eingelesen, scheine intellektuell jedoch bisher nicht über die absoluten Basisdinge hinauszukommen 😄

      Ehe ich also mich an komplexe Wetter+Temperatur-Abhängige Jalousiensteuerung wage, habe ich mit einfachen Themen begonnen, welche ich aber bisher nicht bewältigt bekomme. Ich hoffe daher auf die nötigen Gedankenanstöße (gerne mit Quellen zum Nachlesen), um das gelöst zu bekommen. Ich möchte mit den ersten beiden Problemen beginnen:

      1. Problem: Das Ende von Großgeräten ausgeben.
        Ich habe mir zwei Flows angelegt, um das Ende von Waschmaschine und Spülmaschine über Telegram ausgeben zu lassen. Dazu hängt jedes Großgerät an einem Aktor mit Stromzähler, welche den Verbrauch pro Sekunde in mA ausgibt.
        Dieser Verbrauch wird über die GA abgerufen und geprüft. Niedrige mA Verbräuche sagen "Idle oder Fertig".
        Jetzt ist es bei den Geräten aber so, dass sie auch während des Programms, oder gleich zu Beginn in der Aufheitzphase niedrige Verbräuche sekunden-/minutenweise haben und mir aktuell Telegram pro Waschgang gefühlt 20 mal sagt "Die Spülmaschine ist fertig".

      flow-großgeräte.jpg

      Bei meiner Recherche bin ich auf eine Node aus dem Homematic-Bereich gestoßen, die sich wait-until nennt. Diese nimmt den msg.payload, hält ihn eine Zeit x fest und wenn nach der Zeit x immer noch keine neuer msg.payload eingegangen ist, schickt er die msg weiter. Dies würde das Problem sehr gut lösen, nützt mir aber nichts, weil kein Homematic.
      Nun hab ich die Situation etwas entschärft, in dem ich eine Delay-Node eingefügt habe, die nur alle 10 Minuten eine Nachricht durchlässt, macht am Ende aber immer noch 3-5mal "Die Waschmaschine ist fertig" und man rennt teilweise umsonst -> nicht sehr smart 😄

      Wie kann ich eine "wait-until"-Node sinnvoll nachbauen, auch ohne Homematic?

      1. Problem: Verarbeitung von Fensterkontakten zu einem Status.
        Ich habe pro Fenster 2 Fensterkontakte, welche über einen Binäreingang auf dem Bus je nach Fensterstellung (zu, kipp, offen) true und false schicken. Diese beiden Kontakte kann ich wieder über zwei GA abrufen und so in Node-Red bekommen. Da ein Payload ja nie auf den anderen wartet, wie ich bei vielen Experimenten und Nachlesen rausfinden musste, habe ich die beiden ausgelesenen Kontakte mittels Change-Node in den Context geschrieben. Nun führe ich beide Change-Nodes in einer Funktion zusammen, welche eine Wenn-Dann-Prüfung ausführt. Hinten soll dann als Payload der jeweilige Status rauskommen.

      flow_fensterkontakt.jpg

      In der Change-Node steht:
      Setze msg.payload auf/nach flow.kontakt1 (bzw. kontakt2)
      In der Funktion-Node steht:

      var kontakt1 = flow.get("kontakt1")
      var kontakt2 = flow.get("kontakt2")
      
      if (kontakt1  ==  false && kontakt2 == false)
          msg.payload = "Fenster gekippt";
      else if (kontakt1 == true && kontakt2 == true)
          msg.payload = "Fenster zu";
      else if (kontakt1 == true && kontakt2 == false)
          msg.payload = "Fenster offen";
      else
          msg.payload = "Hier stimmt was nicht";
      
      return msg;
      

      Es ist am Ende aber egal, wie oft ich das Fenster öffne, schließe oder kippe, es kommt immer "Hier stimmt was nicht".

      Weiß jemand, was ich falsch mache?

      Herzlichen Dank
      Almeda

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

        @almeda Manchmal frage man sich schon manchmal, ob die Suchfunktion eine neue Erfindung ist. Langsam kann ich manche Poster verstehen, weil man selbst gerne helfen will, aber auch nicht jedes Mal das gleiche Schreiben will.

        Hier mal ein ähnlich gelagerter Fall bzgl. Deiner Großgeräte.
        Muss man nicht so lösen, aber hier kann man mit der Aggregator Node und der RBE Node einiges machen.

        https://forum.iobroker.net/topic/44925/node-red-wama-status

        @almeda sagte in wait until-ähnliche Node / Arbeit mit "Context":

        Bei meiner Recherche bin ich auf eine Node aus dem Homematic-Bereich gestoßen, die sich wait-until nennt. Diese nimmt den msg.payload, hält ihn eine Zeit x fest und wenn nach der Zeit x immer noch keine neuer msg.payload eingegangen ist, schickt er die msg weiter. Dies würde das Problem sehr gut lösen, nützt mir aber nichts, weil kein Homematic.

        So eine Node - mit sogar noch viel breiterem Funktionsspektrum - ist im Standardumfang von NodeRed vorhanden und nennt sich trigger Node.
        Hier muss man nichts nachbauen - das gibts alles schon.
        abe0b86c-afac-47d8-bfdf-bbcf0f80ee76-image.png

        Zu Deinem 2. Problem sollte fast funktionieren.

        Nur wenn Du schon in NodeRed in Javascript programmieren willst dann solltest wissen, dass man Vergleiche auch mit Typen also mit "===" machen sollte. (https://www.w3schools.com/js/js_operators.asp) Zudem bin ich mir nicht sicher, ob Du in Deiner Adapterkonfiguration diese dumme Stringkonvertierung ausgeschaltet hast. Dann vergleichst Du wahrscheinlich Bools mit Strings und brauchst Dich nicht wundern, dass Deine Vergleiche ins Leere laufen. Prüfe einfach mal im Kontektmenü, wie denn der Inhalt Deiner Variablen ausschaut und dann wirst Du schnell die Ursache finden, warum Deine Vergleiche nicht aufgehen. Jedenfalls ist das etwas, was ich jedem gleich am Anfang empfehle, sofort die Stringkonvertierung aufzuheben, sonst macht das später nur umso mehr Arbeit.

        In Deinem Fall würde ich auch beide Kontakte zu einem Objekt in einer Flowvariable zusammenfassen, wobei Du einfach viel verloren gibst, wenn Du wieder das tolle an Node Red nämlich Deine Visualisierung Deiner Logik in Programmkontext einer Function Node versteckst. Was willst Du denn mit dem Ergebnis anfangen? Du musst dann die payload wieder analysieren, um Deine Flows je nach Zustand unterschiedlich zu behandeln. (Ist payload = Fenster offen, Fenster geschlossen, Fenster gekippt) Dann kannst Du doch gleich die Flows entsprechend im Vorfeld analysieren.

        In meinen Augen ist auch ein Fehler in Deiner Logik (selbst wenn Du die richtigen Typen miteinander vergleichen willst).
        Ich gehe mal davon aus, dass Du 2 Kontaktsenstoren am Fenster hast, um den Gekippt-Zustand ebenfalls erfasst. Wenn also beide Kontakte offen (false) sind, ist in meinen Augen das Fenster nicht gekippt sondern offen. Aber gut, das würdest Du alles selbst noch rausfinden.

        Dann ist das Fenster aber offen, wenn beide Kontakte offen sind und geschlossen, wenn beiden Kontakte zu sind (also true in Deinem Fall) - gekippt ist dann aber der einzige wo nur der obere Kontakt offen ist.

        Das heißt von der Logik her: Der untere Kontakt sagt Dir immer, ob das Fenster offen ist, während der obere Kontakt nur in dem Fall überprüft werden muss, wenn der untere Kontakt geschlossen ist.

        Meinst Du nicht, dass so was viel anschaulicher und NodeRed eher gerecht wird, als Deine Abfragen über eine Function Node?

        ca831fd3-06b6-4ead-9668-50f98c2cf681-image.png

        1 Reply Last reply Reply Quote 0
        • A
          Almeda last edited by Almeda

          @mickym vielen Dank für deine geduldige und ausführliche Antwort.

          Zunächst zu deiner Kritik: Ich habe die Suchfunktion tatsächlich mehrmals bemüht, bevor ich mein Thema erstellte, nur eben nicht das passende gefunden. Daher auch meine anfänglich Frage gerne nach einem Verweis zu entsprechender Literatur, wo ich mir die benötigten Dinge anlesen kann.

          Ich habe jetzt schon einige Themen gelesen und bewundere tatsächlich sehr, mit welcher Leichtigkeit du Node-Red zu beherrschen scheinst. Und wenn ich deine Lösungsansätze dann so lese, denke ich jedes Mal "Mhm gute Idee und eigentlich total simple". Aber selbst komme ich noch nicht auf diese Lösungswege und versuche anscheinend immer zu viel auf einmal zu wollen.

          Zum 2. Problem:
          Du hast total recht, ich habe 2 Kontakte und das Problem mit der Statusänderung bei jeweils nur einem Kontakt war mir zwar schon aufgefallen (ich hatte nämlich schon mal eine halb funktionierende Lösung mit einer Join-Node), aber ich wollte das Problem angehen, wenn ich zumindest bei "geschlossen" und "offen" wenigstens schon mal ein korrektes Ergebnis erzielt hatte.
          Ziel ist am Ende, den Status grafisch in einer Visualisierung anzuzeigen und für weitere Dinge wie "Es regnet gleich, ein Fenster ist noch offen/gekippt" zu verwenden.

          Danke erstmal für die gegebenen Gedankenanstöße, ich versuch das nun mal entsprechend umzusetzen. Sollte ich noch irgendwo hängen bleiben, frage ich noch einmal nach.

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

            @almeda sagte in wait until-ähnliche Node / Arbeit mit "Context":

            @mickym vielen Dank für deine geduldige und ausführliche Antwort.

            Zunächst zu deiner Kritik: Ich habe die Suchfunktion tatsächlich mehrmals bemüht, bevor ich mein Thema erstellte, nur eben nicht das passende gefunden. Daher auch meine anfänglich Frage gerne nach einem Verweis zu entsprechender Literatur, wo ich mir die benötigten Dinge anlesen kann.

            Also ich hoffe es ist in jedem Fall angekommen, dass ich gerne helfe und meistens gibt es auch nicht nur EINE Lösung, sondern mehrere Lösungen und jeder muss für sich die beste Lösung herausfinden. Warum ich vielleicht auf die Suchfunktion hingewiesen hatte, weil ich das Thema erst kürzlich hatte. In letzter Konsequenz muss man auch logisch überlegen, ob über die Trigger Node oder die Blockly Lösung diese wirklich zielführend ist. Wichtig ist ja, dass man sich über die Konsequenzen einer Lösung im Klaren ist. Wenn ich also herausfinde, dass im Normalverlauf eines Programms des Stromverbrauchs einer Wasch- oder Spülmaschine herausfinde, dass einen niedrigen Stromverbrauch für eine Zeitraum x anhält, dann wird sich ein Ende auch erst herausfinden lassen, wenn der Zeitraum x + abgelaufen ist. Meine Spülmaschine braucht nur wenn ich sie einschalte und nur die Lämpchen leuchten bereits 3 Watt, schaltet sich aber nach Ende komplett ab - das hier kann ich sehr exakt auf 0 Watt abprüfen. Bei anderen Maschinen gibt es wegen Knitterschutz etc. andere Probleme. Aber es ist ja auch gut, mal diese Probleme von der Logik her anzugehen.

            Ich habe jetzt schon einige Themen gelesen und bewundere tatsächlich sehr, mit welcher Leichtigkeit du Node-Red zu beherrschen scheinst. Und wenn ich deine Lösungsansätze dann so lese, denke ich jedes Mal "Mhm gute Idee und eigentlich total simple".

            Danke schön. 🙂 Ich muss aber auch sagen bzw. Dir Mut machen, dass Du das auch hinbekommst, je mehr Du Dich mit diesem tollen Produkt beschäftigst und vor allem bereit bist über die eigene Logik nachzudenken. Ich mache dass nun seit knapp 2 Jahren und meine ersten Flows sind aus heutiger Sicht auch eine Katastrophe. Oft bin ich nur zu faul, das in Angriff zu nehmen, da es funktioniert. Du wirst auch erleben, dass Du bei bestehenden Themen einen bestimmten Leidensdruck benötigt, um die Dinge in Angriff zu nehmen. Meine Lichtsteuerung ist ein gutes Beispiel. Die ist soweit perfektioniert, dass sowohl bewegungs- als auch Lichtabhängig geschaltet wird und auch von Tageszeit. Aber es gab Situationen, wo ich an einem düsteren Regentag mich geärgert habe, dass das Licht sich immer automatisch ausgeschaltet hatte. Ich wusste genau warum - aber es hat einen gewissen Leidensdruck benötigt bis ich mich darum gekümmert habe.

            Aber selbst komme ich noch nicht auf diese Lösungswege und versuche anscheinend immer zu viel auf einmal zu wollen.

            Am Anfang zu viel auf einmal zu wollen ist auch ganz natürlich. Du wirst aber sehen, wie sehr es Dein logisches Denken im allgemeinen verbessert, wenn man die Dinge in seine Einzelteile zerlegt, aber das Große und Ganze nicht aus den Augen verliert. Deswegen kann man als Außenstehender immer dann am Besten helfen, wenn man weiß wo die Reise hingehen soll und nicht nur Teilprobleme gemeldet wird, wie ersetze ich Teilstrings usw. . Du wirst in manchen Threads auch feststellen, dass ich mich selbst verbessere in dem mir dann immer leichtere Lösungen einfallen. Das heißt auch das ist ganz normal, wenn sich die eigenen Lösungen im Verlauf vereinfachen und verbessern.

            Zum 2. Problem:
            Du hast total recht, ich habe 2 Kontakte und das Problem mit der Statusänderung bei jeweils nur einem Kontakt war mir zwar schon aufgefallen (ich hatte nämlich schon mal eine halb funktionierende Lösung mit einer Join-Node), aber ich wollte das Problem angehen, wenn ich zumindest bei "geschlossen" und "offen" wenigstens schon mal ein korrektes Ergebnis erzielt hatte.

            Danke erstmal für die gegebenen Gedankenanstöße, ich versuch das nun mal entsprechend umzusetzen. Sollte ich noch irgendwo hängen bleiben, frage ich noch einmal nach.

            Wenn Du die Fähigkeiten von NodeRed kennenlernen willst, versuche wirklich am Anfang bewusst function Nodes zu meiden, wo Du es nur kannst. Es gibt Situationen , wo man sie braucht oder wo der Flow zu ausufernd wird, und damit der Übersichtlichkeit leidet - aber wie gesagt am Anfang versuche die function Nodes zu vermeiden wo Du kannst. Du kannst einen Flow in eine function Node packen, aber Dir geht der Sinn dieser Flows verloren.

            Hier habe ich mal die gleiche Logik mit und ohne function Node implementiert:

            Ich habe festgestellt, dass es immer weniger wurden, je länger ich das Produkt genutzt habe.

            Hier habe ich mal ein paar in meinen Augen gute Quellen und die tollen Videos von Steve zusammengefasst.

            Ansonsten stehe ich Dir gerne mit Antworten zu Deinen Fragen zur Verfügung, wenn ich helfen kann bzw. auch weiß - manches gerade im Systemumfeld ist dann auch eher was für andere Spezialisten hier an Board. Alles kann ich auch nicht lösen - insbesondere aus der Ferne ist das oft schwierig.

            A 1 Reply Last reply Reply Quote 1
            • A
              Almeda @mickym last edited by

              @mickym
              Danke für deine erneute ausführliche Antwort. Leider komme ich nicht weiter, was sicherlich an meinem Anfängerstatus liegt.
              Zunächst: "IoBroker-Werte in String konvertieren" war tatsächlich ein, habe ich nun ausgestellt.

              Bezüglich Fensterkontakte:
              Ich habe die Logikidee von dir nun einmal ohne Funktion umgesetzt. Funktioniert leider weiterhin nicht.
              Bildschirmfoto 2021-06-13 um 15.17.41.png
              Die Injections-Nodes für True/False sind nur die Platzhalter für die KNX-In-Node, um nicht ständig das Fenster auf- und zumachen zu müssen. (Meine Frau wird wahnsinnig, so oft hab ich die schon gekippt 😄 )

              Flow hab ich hier mal angehängt:


              [
              {
              "id": "7a2dffc.fdc6e",
              "type": "inject",
              "z": "6f9f549b.a8d954",
              "name": "4/5/8 true",
              "props": [
              {
              "p": "payload"
              },
              {
              "p": "topic",
              "vt": "str"
              }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "true",
              "payloadType": "bool",
              "x": 120,
              "y": 240,
              "wires": [
              [
              "7df3562b.79a518"
              ]
              ]
              },
              {
              "id": "b7920a0.7f9db78",
              "type": "inject",
              "z": "6f9f549b.a8d954",
              "name": "4/5/8 false",
              "props": [
              {
              "p": "payload"
              },
              {
              "p": "topic",
              "vt": "str"
              }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "",
              "payload": "false",
              "payloadType": "bool",
              "x": 120,
              "y": 280,
              "wires": [
              [
              "7df3562b.79a518"
              ]
              ]
              },
              {
              "id": "fa563626.76b5b",
              "type": "inject",
              "z": "6f9f549b.a8d954",
              "name": "4/5/9 true",
              "props": [
              {
              "p": "payload"
              },
              {
              "p": "topic",
              "vt": "str"
              }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "459",
              "payload": "true",
              "payloadType": "bool",
              "x": 540,
              "y": 40,
              "wires": [
              [
              "431863c2.c94f6c"
              ]
              ]
              },
              {
              "id": "b82d0bcd.0d473",
              "type": "inject",
              "z": "6f9f549b.a8d954",
              "name": "4/5/9 false",
              "props": [
              {
              "p": "payload"
              },
              {
              "p": "topic",
              "vt": "str"
              }
              ],
              "repeat": "",
              "crontab": "",
              "once": false,
              "onceDelay": 0.1,
              "topic": "459",
              "payload": "false",
              "payloadType": "bool",
              "x": 540,
              "y": 80,
              "wires": [
              [
              "431863c2.c94f6c"
              ]
              ]
              },
              {
              "id": "624d5e93.e9b32",
              "type": "debug",
              "z": "6f9f549b.a8d954",
              "name": "",
              "active": true,
              "tosidebar": true,
              "console": false,
              "tostatus": false,
              "complete": "payload",
              "targetType": "msg",
              "statusVal": "",
              "statusType": "auto",
              "x": 1170,
              "y": 160,
              "wires": []
              },
              {
              "id": "7df3562b.79a518",
              "type": "switch",
              "z": "6f9f549b.a8d954",
              "name": "Prüfen was 458 ist",
              "property": "payload",
              "propertyType": "msg",
              "rules": [
              {
              "t": "true"
              },
              {
              "t": "false"
              }
              ],
              "checkall": "true",
              "repair": false,
              "outputs": 2,
              "x": 450,
              "y": 180,
              "wires": [
              [
              "287750f1.52af2"
              ],
              [
              "80f17ece.6a3ce"
              ]
              ]
              },
              {
              "id": "c96e558c.b0bd1",
              "type": "knxEasy-in",
              "z": "6f9f549b.a8d954",
              "server": "5bcb30fd.32ee2",
              "topic": "4/5/8",
              "dpt": "1.001",
              "initialread": false,
              "notifyreadrequest": false,
              "notifyresponse": false,
              "notifywrite": true,
              "name": "6 WG-Fensterkontakt-re. (sw+bl)",
              "x": 160,
              "y": 180,
              "wires": [
              []
              ]
              },
              {
              "id": "70a686a.a7b1578",
              "type": "knxEasy-in",
              "z": "6f9f549b.a8d954",
              "server": "5bcb30fd.32ee2",
              "topic": "4/5/9",
              "dpt": "1.001",
              "initialread": false,
              "notifyreadrequest": false,
              "notifyresponse": false,
              "notifywrite": true,
              "name": "6 WG-Fensterkontakt-re. (we+we)",
              "x": 280,
              "y": 40,
              "wires": [
              []
              ]
              },
              {
              "id": "431863c2.c94f6c",
              "type": "change",
              "z": "6f9f549b.a8d954",
              "name": "459 in flow schreiben",
              "rules": [
              {
              "t": "set",
              "p": "459",
              "pt": "flow",
              "to": "true",
              "tot": "bool"
              }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 900,
              "y": 60,
              "wires": [
              []
              ]
              },
              {
              "id": "287750f1.52af2",
              "type": "switch",
              "z": "6f9f549b.a8d954",
              "name": "True-Vergleich",
              "property": "payload",
              "propertyType": "msg",
              "rules": [
              {
              "t": "eq",
              "v": "459",
              "vt": "flow"
              },
              {
              "t": "neq",
              "v": "459",
              "vt": "flow"
              }
              ],
              "checkall": "true",
              "repair": false,
              "outputs": 2,
              "x": 730,
              "y": 140,
              "wires": [
              [
              "7916af6d.a58e68"
              ],
              [
              "b337b983.7e97f"
              ]
              ]
              },
              {
              "id": "80f17ece.6a3ce",
              "type": "switch",
              "z": "6f9f549b.a8d954",
              "name": "False-Vergleich",
              "property": "payload",
              "propertyType": "msg",
              "rules": [
              {
              "t": "eq",
              "v": "459",
              "vt": "flow"
              }
              ],
              "checkall": "true",
              "repair": false,
              "outputs": 1,
              "x": 740,
              "y": 220,
              "wires": [
              [
              "b6fc4120.670fe8"
              ]
              ]
              },
              {
              "id": "7916af6d.a58e68",
              "type": "change",
              "z": "6f9f549b.a8d954",
              "name": "Fenster zu",
              "rules": [
              {
              "t": "set",
              "p": "payload",
              "pt": "msg",
              "to": "Das Fenster ist zu!",
              "tot": "str"
              }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 910,
              "y": 120,
              "wires": [
              [
              "624d5e93.e9b32"
              ]
              ]
              },
              {
              "id": "b337b983.7e97f",
              "type": "change",
              "z": "6f9f549b.a8d954",
              "name": "Fenster offen",
              "rules": [
              {
              "t": "set",
              "p": "payload",
              "pt": "msg",
              "to": "Das Fenster ist offen!",
              "tot": "str"
              }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 910,
              "y": 160,
              "wires": [
              [
              "624d5e93.e9b32"
              ]
              ]
              },
              {
              "id": "b6fc4120.670fe8",
              "type": "change",
              "z": "6f9f549b.a8d954",
              "name": "Fenster gekippt",
              "rules": [
              {
              "t": "set",
              "p": "payload",
              "pt": "msg",
              "to": "Das Fenster ist gekippt!",
              "tot": "str"
              }
              ],
              "action": "",
              "property": "",
              "from": "",
              "to": "",
              "reg": false,
              "x": 920,
              "y": 220,
              "wires": [
              [
              "624d5e93.e9b32"
              ]
              ]
              }
              ]

              Bin gespannt, was du sagst...

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

                @almeda Also zuerst einmal bitte ich Dich neben den Spoiler die Code Tags </> zu nutzen, das macht das Kopieren wesentlich einfacher.

                Zweites ist das eine gute Idee - das mit Inject Nodes zu simulieren - bei Exportieren brauche ich auch die KNX Nodes nicht, da ich ja auch nur mit Inject Nodes simulieren kan.

                Drittens kann Dein Flow nicht funktionieren, da

                Du in deiner ChangeNode oben immer true reinschreibst - egal was Du versuchst mit Deiner Inject Node zu schreiben. Schau Dir den Inhalt der Flow Variablen also immer im Kontextmenü an.
                Ich nehme mal an, dass die Bezichnung 459 von KNX herkommt.

                Um also den Inhalt Deiner Flow Variablen auf true oder false zu setzen - musst Du oben naturlich die Flow Variable auf die payload setzen, die Du über die Inject Nodes initiierst - also :

                cecabb95-128a-45f6-908d-15fe53eee0a3-image.png

                Das Topic ist hier völlig irrelevant - das benutzt Du gar nicht und kannst es ggf. aus den InjectNodes löschen.

                In den Kontextdaten siehst Du dann ja (refresh - nach jedem Drücken der Inject Node) ob sich die Variable auch ändert:

                04fa5484-a359-4c26-9d15-1ced547dc883-image.png

                Die Trigger für den Status sind irrelevant da kann drin stehen was will. Für Dein Beispiel langt also eine Inject Node. Dass ggf. dann mehrere Trigger zum Anstoßen des Flows nimmst ist was anderes.

                Mir fehlt ausserdem in der Flow-Variable der 2. Kontakt. Gehe ich mal davon aus, dass der Kontakt 458 unten ist und 459 oben, dann kannst Du 2 Flow Variablen setzen oder 1 Objekt. Können wir gerne später machen - dann benennt man die Flowvariable wie das Fenster und nutzt 458 für unten und 459 für oben.

                Aber wenn Du nur mit dem unten als Trigger arbeiten willst wie in Deinem Flow dann passt zwar der 1. Switch - aber was Du mit den 2. machst ist mir schleierhaft.

                Um den Status Deiner Flow Variablen zu überprüfen interessiert Dich weder die payload und die payload wird nie 459 oder ungleich 459 sein, so wie Du es definiert hast.

                9b68fe3b-83ef-4f33-9cd0-f44c930fdaec-image.png

                In dem Fall ist ja durch den 1. Switch bekannt, dass die payload immer true ist!!! Und nun willst Du den Status der flow variablen abfragen:

                Also muss der 2. Switch wie folgt aussehen:

                fdacf747-729e-4a45-ad7c-1239bed807a9-image.png

                Im 2. Fall prüfst Du nur ab, dass nur true durchgelassen wird. Wenn beide Kontakte false wären, würde Dir das Fenster auf den Kopf fallen. 😉 Kannst ja als Katastrophenszenario noch einbauen. Geh jetzt mal eine Runde in den Biergarten - also kommt momentan höchstens Text als Antwort. 😉

                541e17d3-908c-4ba4-9db8-7ab717c94596-image.png

                Hier zum Import bitte das nächste Mal auch in CodeTags:

                [
                   {
                       "id": "7a2dffc.fdc6e",
                       "type": "inject",
                       "z": "b07cfcbf.ee431",
                       "name": "4/5/8 true",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 360,
                       "y": 420,
                       "wires": [
                           [
                               "7df3562b.79a518"
                           ]
                       ]
                   },
                   {
                       "id": "b7920a0.7f9db78",
                       "type": "inject",
                       "z": "b07cfcbf.ee431",
                       "name": "4/5/8 false",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "false",
                       "payloadType": "bool",
                       "x": 360,
                       "y": 500,
                       "wires": [
                           [
                               "7df3562b.79a518"
                           ]
                       ]
                   },
                   {
                       "id": "fa563626.76b5b",
                       "type": "inject",
                       "z": "b07cfcbf.ee431",
                       "name": "4/5/9 true",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "459",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 720,
                       "y": 220,
                       "wires": [
                           [
                               "431863c2.c94f6c"
                           ]
                       ]
                   },
                   {
                       "id": "b82d0bcd.0d473",
                       "type": "inject",
                       "z": "b07cfcbf.ee431",
                       "name": "4/5/9 false",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "459",
                       "payload": "false",
                       "payloadType": "bool",
                       "x": 720,
                       "y": 260,
                       "wires": [
                           [
                               "431863c2.c94f6c"
                           ]
                       ]
                   },
                   {
                       "id": "624d5e93.e9b32",
                       "type": "debug",
                       "z": "b07cfcbf.ee431",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1350,
                       "y": 500,
                       "wires": []
                   },
                   {
                       "id": "7df3562b.79a518",
                       "type": "switch",
                       "z": "b07cfcbf.ee431",
                       "name": "Prüfen was 458 ist",
                       "property": "payload",
                       "propertyType": "msg",
                       "rules": [
                           {
                               "t": "true"
                           },
                           {
                               "t": "false"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 650,
                       "y": 460,
                       "wires": [
                           [
                               "287750f1.52af2"
                           ],
                           [
                               "f7710588.501458"
                           ]
                       ]
                   },
                   {
                       "id": "431863c2.c94f6c",
                       "type": "change",
                       "z": "b07cfcbf.ee431",
                       "name": "459 in flow schreiben",
                       "rules": [
                           {
                               "t": "set",
                               "p": "459",
                               "pt": "flow",
                               "to": "payload",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1080,
                       "y": 240,
                       "wires": [
                           [
                               "412512bc.41112c"
                           ]
                       ]
                   },
                   {
                       "id": "287750f1.52af2",
                       "type": "switch",
                       "z": "b07cfcbf.ee431",
                       "name": "True-Vergleich",
                       "property": "459",
                       "propertyType": "flow",
                       "rules": [
                           {
                               "t": "true"
                           },
                           {
                               "t": "false"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 900,
                       "y": 420,
                       "wires": [
                           [
                               "7916af6d.a58e68"
                           ],
                           [
                               "b337b983.7e97f"
                           ]
                       ]
                   },
                   {
                       "id": "7916af6d.a58e68",
                       "type": "change",
                       "z": "b07cfcbf.ee431",
                       "name": "Fenster zu",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist zu!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1110,
                       "y": 400,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "b337b983.7e97f",
                       "type": "change",
                       "z": "b07cfcbf.ee431",
                       "name": "Fenster offen",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist offen!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1110,
                       "y": 440,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "b6fc4120.670fe8",
                       "type": "change",
                       "z": "b07cfcbf.ee431",
                       "name": "Fenster gekippt",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist gekippt!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 1120,
                       "y": 500,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "f7710588.501458",
                       "type": "switch",
                       "z": "b07cfcbf.ee431",
                       "name": "True-Vergleich",
                       "property": "459",
                       "propertyType": "flow",
                       "rules": [
                           {
                               "t": "true"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 1,
                       "x": 900,
                       "y": 500,
                       "wires": [
                           [
                               "b6fc4120.670fe8"
                           ]
                       ]
                   },
                   {
                       "id": "412512bc.41112c",
                       "type": "debug",
                       "z": "b07cfcbf.ee431",
                       "name": "Kontakt oben",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1330,
                       "y": 240,
                       "wires": []
                   }
                ]
                

                Wie gesagt - ich würde beide Kontakte in Flows schreiben und beide Kontakte triggern lassen.

                Im Moment triggert nur Dein unterer Kontakt. Wenn Du also von geschlossen auf gekippt stellst, wird der Flow nicht angetriggert.

                Deshalb hier die endgültige Lösung - bevor ich mich auf den Weg mache:

                632296f9-1c5a-41de-97be-5e4205b942f9-image.png

                e6be62ca-08e5-488c-bfbf-3387baeca78b-image.png

                [
                   {
                       "id": "7a2dffc.fdc6e",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/8 triggert",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 230,
                       "y": 400,
                       "wires": [
                           [
                               "7df3562b.79a518"
                           ]
                       ]
                   },
                   {
                       "id": "b7920a0.7f9db78",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/9 triggert",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 230,
                       "y": 460,
                       "wires": [
                           [
                               "7df3562b.79a518"
                           ]
                       ]
                   },
                   {
                       "id": "fa563626.76b5b",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/9 true",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 580,
                       "y": 200,
                       "wires": [
                           [
                               "431863c2.c94f6c"
                           ]
                       ]
                   },
                   {
                       "id": "b82d0bcd.0d473",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/9 false",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "false",
                       "payloadType": "bool",
                       "x": 580,
                       "y": 240,
                       "wires": [
                           [
                               "431863c2.c94f6c"
                           ]
                       ]
                   },
                   {
                       "id": "624d5e93.e9b32",
                       "type": "debug",
                       "z": "fb6f7d17.54c04",
                       "name": "",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1210,
                       "y": 480,
                       "wires": []
                   },
                   {
                       "id": "7df3562b.79a518",
                       "type": "switch",
                       "z": "fb6f7d17.54c04",
                       "name": "Prüfen was 458 ist",
                       "property": "458",
                       "propertyType": "flow",
                       "rules": [
                           {
                               "t": "true"
                           },
                           {
                               "t": "false"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 510,
                       "y": 440,
                       "wires": [
                           [
                               "287750f1.52af2"
                           ],
                           [
                               "f7710588.501458"
                           ]
                       ]
                   },
                   {
                       "id": "431863c2.c94f6c",
                       "type": "change",
                       "z": "fb6f7d17.54c04",
                       "name": "459 in flow schreiben",
                       "rules": [
                           {
                               "t": "set",
                               "p": "459",
                               "pt": "flow",
                               "to": "payload",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 940,
                       "y": 220,
                       "wires": [
                           [
                               "412512bc.41112c"
                           ]
                       ]
                   },
                   {
                       "id": "287750f1.52af2",
                       "type": "switch",
                       "z": "fb6f7d17.54c04",
                       "name": "True-Vergleich",
                       "property": "459",
                       "propertyType": "flow",
                       "rules": [
                           {
                               "t": "true"
                           },
                           {
                               "t": "false"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 2,
                       "x": 760,
                       "y": 400,
                       "wires": [
                           [
                               "7916af6d.a58e68"
                           ],
                           [
                               "b337b983.7e97f"
                           ]
                       ]
                   },
                   {
                       "id": "7916af6d.a58e68",
                       "type": "change",
                       "z": "fb6f7d17.54c04",
                       "name": "Fenster zu",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist zu!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 970,
                       "y": 380,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "b337b983.7e97f",
                       "type": "change",
                       "z": "fb6f7d17.54c04",
                       "name": "Fenster offen",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist offen!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 970,
                       "y": 420,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "b6fc4120.670fe8",
                       "type": "change",
                       "z": "fb6f7d17.54c04",
                       "name": "Fenster gekippt",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "Das Fenster ist gekippt!",
                               "tot": "str"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 980,
                       "y": 480,
                       "wires": [
                           [
                               "624d5e93.e9b32"
                           ]
                       ]
                   },
                   {
                       "id": "f7710588.501458",
                       "type": "switch",
                       "z": "fb6f7d17.54c04",
                       "name": "True-Vergleich",
                       "property": "459",
                       "propertyType": "flow",
                       "rules": [
                           {
                               "t": "true"
                           }
                       ],
                       "checkall": "true",
                       "repair": false,
                       "outputs": 1,
                       "x": 760,
                       "y": 480,
                       "wires": [
                           [
                               "b6fc4120.670fe8"
                           ]
                       ]
                   },
                   {
                       "id": "412512bc.41112c",
                       "type": "debug",
                       "z": "fb6f7d17.54c04",
                       "name": "Kontakt oben",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1190,
                       "y": 220,
                       "wires": []
                   },
                   {
                       "id": "bcd2147d.dd1108",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/8 true",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "true",
                       "payloadType": "bool",
                       "x": 580,
                       "y": 80,
                       "wires": [
                           [
                               "d4b9d944.72e3f8"
                           ]
                       ]
                   },
                   {
                       "id": "ca4838ac.b4dfa8",
                       "type": "inject",
                       "z": "fb6f7d17.54c04",
                       "name": "4/5/8 false",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "false",
                       "payloadType": "bool",
                       "x": 580,
                       "y": 120,
                       "wires": [
                           [
                               "d4b9d944.72e3f8"
                           ]
                       ]
                   },
                   {
                       "id": "d4b9d944.72e3f8",
                       "type": "change",
                       "z": "fb6f7d17.54c04",
                       "name": "458 in flow schreiben",
                       "rules": [
                           {
                               "t": "set",
                               "p": "458",
                               "pt": "flow",
                               "to": "payload",
                               "tot": "msg"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 940,
                       "y": 100,
                       "wires": [
                           [
                               "e914e1ef.e109b"
                           ]
                       ]
                   },
                   {
                       "id": "e914e1ef.e109b",
                       "type": "debug",
                       "z": "fb6f7d17.54c04",
                       "name": "Kontakt unten",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 1200,
                       "y": 100,
                       "wires": []
                   }
                ]
                

                Und wenn Du das Ganze in Schön machen willst, speicherst Du es als ein Fensterobjekt mit Kontakt oben und unten.
                Also Flow.WohnzimmerRechts.unten und Flow.WohnzimmerRechts.oben. Außer Deine knx Adressen sind Dir schon so im Fleisch und Blut 🩸
                Im Prinzip ist es sogar umgekehrt. Eigentlich brauchst für die Statusermittlung nur den oberen Kontakt als Trigger. Dann kann man sich das mit den 2 Variablen auch sparen. Allerdings musst Du den unteren Status immer zuerst abfragen. Ich bin leider auch nicht sofort optimal logisch

                A 1 Reply Last reply Reply Quote 0
                • A
                  Almeda @mickym last edited by Almeda

                  @mickym said in wait until-ähnliche Node / Arbeit mit "Context":

                  @almeda Also zuerst einmal bitte ich Dich neben den Spoiler die Code Tags </> zu nutzen, das macht das Kopieren wesentlich einfacher.

                  Alles klar, wird in Zukunft gemacht..

                  Du in deiner ChangeNode oben immer true reinschreibst - egal was Du versuchst mit Deiner Inject Node zu schreiben. Schau Dir den Inhalt der Flow Variablen also immer im Kontextmenü an.

                  Ok ich hatte wohl nicht begriffen, wie flow-Variablen funktionieren, aber deine Erläuterung hat nun sehr dazu beigetragen, dass mein Verständnis gewachsen ist. Hab dein Flow erstmal nicht kopiert und importiert, sondern erstmal versucht, anhand deiner Erklärungen, die Probleme auszumerzen und das hat gut geklappt. thumps up

                  Ich nehme mal an, dass die Bezichnung 459 von KNX herkommt.

                  Korrekt, dass ist das sog. Kommunikationsobjekt des betreffenden Fensterkontakts.

                  Mir fehlt ausserdem in der Flow-Variable der 2. Kontakt. Gehe ich mal davon aus, dass der Kontakt 458 unten ist und 459 oben, dann kannst Du 2 Flow Variablen setzen oder 1 Objekt. Können wir gerne später machen - dann benennt man die Flowvariable wie das Fenster und nutzt 458 für unten und 459 für oben.

                  Also ob die Kontakte oben und unten verbaut sind, weiß ich nicht, da ich nur die aus dem Sturz kommenden Kabel angeschlossen habe, alles andere hat der Fensterbauer fix fertig eingebaut. Ich weiss nur folgende Konstellationen:
                  458 True 459 True = Fenster zu
                  458 False 459 False = Fenster kipp
                  458 True 459 False = Fenster offen

                  Tatsächlich fände ich eine Lösung als Objekt gut, da dies die Sache vllt. kompakter machen könnte. Ich meine ich habe einige Fenster und müsste jetzt für jedes einen solchen kompletten Flow, wie du ihn final mit beiden Kontakten als Träger reingestellt hast, anlegen. Überlege gerade ob es auch eine Möglichkeit gibt, das Kommunikationsobjekt aus der KNX-in-Node nicht in eine Variable zu übergeben, sodass sich dann das Objekt in einer Flow-Variablen automatisch anlegt. Dann müsste man den ersten Teil nur einmal schreiben?!?

                  aber was Du mit den 2. machst ist mir schleierhaft.

                  Hier habe ich versucht, das jeweilige True/False-Ergebnis (aus 458) aus der ersten Switch-Node mit dem Inhalt der Flow-Variable (aus 459) zu vergleichen. War vllt. ein Denkfehler. Ich sag ja, ich denke irgendwie noch viel zu kompliziert.

                  Wie gesagt - ich würde beide Kontakte in Flows schreiben und beide Kontakte triggern lassen.
                  Im Moment triggert nur Dein unterer Kontakt. Wenn Du also von geschlossen auf gekippt stellst, wird der Flow nicht angetriggert.

                  Absolut berechtigter Einwand, war auch so gedacht und muss ja eigentlich auch so sein, wenn man bedenkt, dass z. B. von zu auf offen, oder von offen auf kipp immer nur ein Fensterkontakt und dessen Status aktualisiert wird.

                  Und wenn Du das Ganze in Schön machen willst, speicherst Du es als ein Fensterobjekt mit Kontakt oben und unten.
                  Also Flow.WohnzimmerRechts.unten und Flow.WohnzimmerRechts.oben. Außer Deine knx Adressen sind Dir schon so im Fleisch und Blut 🩸
                  Im Prinzip ist es sogar umgekehrt. Eigentlich brauchst für die Statusermittlung nur den oberen Kontakt. Dann kann man sich das mit den 2 Variablen auch sparen. Allerdings musst Du den unteren Status immer zuerst abfragen. Ich bin leider auch nicht sofort optimal logisch

                  Also meine Kommunikationsadressen sind mir tatsächlich in Fleisch und Blut übergegangen, nachdem ich vor der externen Logik mit Node-Red schon einiges in den Logik-Engines der KNX Aktoren umgesetzt habe 😄
                  Wie oben schon gesagt, wie das mit den Objekten funktioniert, würde ich mir gerne noch mal in einem Beispiel hierzu ansehen.
                  Kühles Bierchen und vllt. später wenn du noch Zeit hast, würde ich mich hier über Erhellung noch freuen 🙂

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

                    @almeda ist das wirklich sicher, dass zweimal false gekippt ist. Das ist für mich total unlogisch

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Almeda @mickym last edited by

                      @mickym
                      Absolut sicher.
                      Hab es jetzt auch so eingestellt und eben mal am lebenden Objekt getestet, funktioniert so einwandfrei.

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

                        @almeda OK.

                        Dann noch mal eine grundsätzliche andere Methode, als über Flow Variablen. Diese sind eigentlich, wenn man nur einen 2. Parameter braucht etwas "overengineered".

                        Wenn Du das mit den Objekten verstehen willst - ist das ziemlich easy. Ein Objekt besteht aus mehreren Eigenschaften, die wiederum verschiedene Datentypen enthalten können oder weitere Objekte enthalten:

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

                        var car = {type:"Fiat", model:"500", color:"white"};
                        

                        In diesem Beispiel gibt es also ein Objekt car mit den Eigenschaften type, model und color.

                        Zwischen den einzelnen Nodes in NodeRed werden Nachrichtenobjekte verschickt bzw. das Objekt msg. Das enthält unter anderem meist eine Eigenschaft payload, das die Nutzdaten enthält und die Eigenschaft topic - die beschreibt um was es sich handelt. Wenn Du die Debug Nodes umstellst, dass sie Dir das ganze Nachrichtenobjekt zeigen dann siehst Du das auch.

                        Deswegen bietet die Inject Node diese beiden Eigenschaften als Standard an - das ist aber kein MUSS.

                        1a4972f4-c20f-4b75-83eb-229fd6452db4-image.png

                        Bei einer Standard Debug Node - wird in der Grundeinstellung nur die payload ausgegeben und das Topic in Rot.

                        3f178d5c-b204-40bc-bba2-f5386c79a09b-image.png

                        2136d763-b528-4fd7-a367-03b544ff8d80-image.png

                        Man sieht das msg.topic Fensterstatus und dass die Eigenschaft msg.payload ausgegben wird.

                        Lässt Du Dir aber das ganze msg- Objekt ausgeben.

                        bcccf62a-2121-4e98-982f-7362d56880d1-image.png

                        Damit wird dann das gesamte msg Objekt, wie in der Inject Node definiert - ausgegeben:

                        cc04d19b-8d7e-4214-a108-89cfbe7acf39-image.png

                        Um das Object car in die Inject Node aufzunehmen, definiere ich einfach eine weiter Eigenschaft car - das ein Objekt darstellt.

                        Das Objekt in der Inject-Node wird automatisch konvertiert, wenn man es als JSON String eingibt:

                        1b42ab1d-ea62-4ce5-8b42-92a2f403eca9-image.png

                        Inzwischen hat das Nachrichtenobjekt also neben der Eigenschaft, topic und payload noch eine Eigenschaft car, das wiederum 3 weitere Eigenschaften enthält.

                        15915d46-63fc-41e7-8731-dbf71a1851c9-image.png

                        Eine neue Eigenschaft kann ich auch direkt definieren. Nehmen wir an wir wollen der Eigenschaft car noch die Eigenschaft fuel mit dem Wert Diesel hinzufügen, so geht das einfach durch:

                        f60c0fc1-ab5e-45b1-8976-6ec608052299-image.png

                        88861772-c7f3-45f2-a51d-c7459298bc28-image.png

                        Braucht man nur 2 oder 3 Eigenschaften in einem Nachrichtenobjekt muss man diese nicht in einer Flow-Variablen sammeln sondern kann das auch direkt im Nachrichtenobjekt machen, zumindest wenn man iobroker Datenpunkte hat. Dann sammelt man diese einfach ein und hat sie dann auch ohne Flow-Variablen immer im Huckepack.

                        Zur Demo habe ich mal 2 Datenpunkte mit 458 und 459 angelegt:

                        b6363aba-4d69-45f2-afd6-09938643affb-image.png

                        Als Trigger werde ich die beiden Punkte triggern lassen und die payload in die Eigenschaft 458 und 459 verschieben.

                        Der Wert false ist in der payload des msg.Objektes wenn diese Datenpunkte getriggert werden. Im topic sieht man den Pfad (das ist leider nicht konsistent mal mit / mal mit .)

                        a6cf276d-7c28-4be8-8b65-acf1884241f1-image.png

                        Wir verschieben nun im jeweiligen Datenobjekt den Wert der payload in die Eigenschaft des msg.objektes in 458 bzw, 459

                        9b1a603e-d298-495c-9479-a1b7d2a4e2dd-image.png

                        15a7bf2a-de28-4f82-9a21-6b7e47c72e6f-image.png

                        Mit der iobroker GET Node holen wir uns nun in jedes Nachrichtenobjekt den jeweils fehlenden Teil herein.

                        In den Get-Nodes kann man direkt spezifizieren in welche Eigenschaft des Nachrichtenobjektes geschrieben werden soll - ist also nicht zwangsläufig die payload:

                        5f2ddfbe-31eb-4f70-a128-c109e9e3c9e1-image.png

                        Man sieht nun, dass in jedem Nachrichtenobjekt beide Eigenschaften enthalten sind:

                        47050041-56bc-47e7-966e-eb190bbda810-image.png

                        1d518e6b-e83f-4eea-b2ac-ca0ad4e3ac7c-image.png

                        Nachdem Du das ja mit den Objekten denke ich verstanden hast, kannst Du die Status in einer Flow Variablen für viele Fenster sammeln.

                        Ich fasse jetzt mal gekippt und offen als offen zusammen und geschlossen ist geschlossen.

                        Lassen wir mal einfach, ob das nun gleich zu lassen: geschlossen = true und offen = false;

                        Über 2 weiter Change Nodes setze ich in einer Flow Variablen mit dem Objekt die Eigenschaft Wohnzimmer auf den Status true oder false (je nachdem ob ein Fenster geöffnet ist oder nicht).

                        3c6b5e91-92e3-4b06-bfef-d61d470730e2-image.png

                        Du siehst im Kontext also die Variable Fenster ist nun ein Objekt:

                        5f8aa06c-082d-4da2-b809-4c9e6f571520-image.png

                        8dff2058-0fa5-4961-bf32-54f87cf89ded-image.png

                        Du wirst nun mehrere Flows haben - für jedes Fenster ich kopiere jetzt nicht die Flows sondern setze einfach mal ein Flowvariablen für verschiedene Fenster.

                        be5807e7-3b8d-4d7b-8301-5036ae54619b-image.png

                        Bei Bedarf hole ich die Flow Variable wieder in eine payload, um sie zu analysieren oder abzuspeichern:

                        1c410de5-d774-434b-9e00-6ae3de204663-image.png

                        ff3b6209-a93f-4971-8ea9-1c3393c5ddff-image.png

                        Nun kannst Du das ganze noch in einem JSON String wandeln, um es in einem ioBroker Datenpunkt zu speichern:

                        c302d2e9-82d4-4f73-b0f0-64939c22f892-image.png

                        Diesen String kannst Du dann in einem Datenpunkt speichern oder Du nutzt meinen Subflow um eine hiearchische Datenstruktur im iobroker anzulegen

                        Hier nochmal den gesamten Flow zum Spielen und Ausprobieren:

                        [
                           {
                               "id": "fb6f7d17.54c04",
                               "type": "tab",
                               "label": "Flow 2",
                               "disabled": false,
                               "info": ""
                           },
                           {
                               "id": "7a2dffc.fdc6e",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/8 triggert",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 230,
                               "y": 400,
                               "wires": [
                                   [
                                       "7df3562b.79a518"
                                   ]
                               ]
                           },
                           {
                               "id": "b7920a0.7f9db78",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/9 triggert",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 230,
                               "y": 460,
                               "wires": [
                                   [
                                       "7df3562b.79a518"
                                   ]
                               ]
                           },
                           {
                               "id": "fa563626.76b5b",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/9 true",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 580,
                               "y": 200,
                               "wires": [
                                   [
                                       "431863c2.c94f6c"
                                   ]
                               ]
                           },
                           {
                               "id": "b82d0bcd.0d473",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/9 false",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "false",
                               "payloadType": "bool",
                               "x": 580,
                               "y": 240,
                               "wires": [
                                   [
                                       "431863c2.c94f6c"
                                   ]
                               ]
                           },
                           {
                               "id": "624d5e93.e9b32",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1210,
                               "y": 480,
                               "wires": []
                           },
                           {
                               "id": "7df3562b.79a518",
                               "type": "switch",
                               "z": "fb6f7d17.54c04",
                               "name": "Prüfen was 458 ist",
                               "property": "458",
                               "propertyType": "flow",
                               "rules": [
                                   {
                                       "t": "true"
                                   },
                                   {
                                       "t": "false"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 510,
                               "y": 440,
                               "wires": [
                                   [
                                       "287750f1.52af2"
                                   ],
                                   [
                                       "f7710588.501458"
                                   ]
                               ]
                           },
                           {
                               "id": "431863c2.c94f6c",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "459 in flow schreiben",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "459",
                                       "pt": "flow",
                                       "to": "payload",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 940,
                               "y": 220,
                               "wires": [
                                   [
                                       "412512bc.41112c"
                                   ]
                               ]
                           },
                           {
                               "id": "287750f1.52af2",
                               "type": "switch",
                               "z": "fb6f7d17.54c04",
                               "name": "True-Vergleich",
                               "property": "459",
                               "propertyType": "flow",
                               "rules": [
                                   {
                                       "t": "true"
                                   },
                                   {
                                       "t": "false"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 760,
                               "y": 400,
                               "wires": [
                                   [
                                       "7916af6d.a58e68"
                                   ],
                                   [
                                       "b337b983.7e97f"
                                   ]
                               ]
                           },
                           {
                               "id": "7916af6d.a58e68",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster zu",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Das Fenster ist zu!",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 970,
                               "y": 380,
                               "wires": [
                                   [
                                       "624d5e93.e9b32"
                                   ]
                               ]
                           },
                           {
                               "id": "b337b983.7e97f",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster offen",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Das Fenster ist offen!",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 970,
                               "y": 420,
                               "wires": [
                                   [
                                       "624d5e93.e9b32"
                                   ]
                               ]
                           },
                           {
                               "id": "b6fc4120.670fe8",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster gekippt",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Das Fenster ist gekippt!",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 980,
                               "y": 480,
                               "wires": [
                                   [
                                       "624d5e93.e9b32"
                                   ]
                               ]
                           },
                           {
                               "id": "f7710588.501458",
                               "type": "switch",
                               "z": "fb6f7d17.54c04",
                               "name": "True-Vergleich",
                               "property": "459",
                               "propertyType": "flow",
                               "rules": [
                                   {
                                       "t": "true"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 1,
                               "x": 760,
                               "y": 480,
                               "wires": [
                                   [
                                       "b6fc4120.670fe8"
                                   ]
                               ]
                           },
                           {
                               "id": "412512bc.41112c",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "Kontakt oben",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1190,
                               "y": 220,
                               "wires": []
                           },
                           {
                               "id": "bcd2147d.dd1108",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/8 true",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 580,
                               "y": 80,
                               "wires": [
                                   [
                                       "d4b9d944.72e3f8"
                                   ]
                               ]
                           },
                           {
                               "id": "ca4838ac.b4dfa8",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "4/5/8 false",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "false",
                               "payloadType": "bool",
                               "x": 580,
                               "y": 120,
                               "wires": [
                                   [
                                       "d4b9d944.72e3f8"
                                   ]
                               ]
                           },
                           {
                               "id": "d4b9d944.72e3f8",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "458 in flow schreiben",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "458",
                                       "pt": "flow",
                                       "to": "payload",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 940,
                               "y": 100,
                               "wires": [
                                   [
                                       "e914e1ef.e109b"
                                   ]
                               ]
                           },
                           {
                               "id": "e914e1ef.e109b",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "Kontakt unten",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "payload",
                               "targetType": "msg",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1200,
                               "y": 100,
                               "wires": []
                           },
                           {
                               "id": "d003e839.ed8b78",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   },
                                   {
                                       "p": "topic",
                                       "vt": "str"
                                   },
                                   {
                                       "p": "car",
                                       "v": "{\"type\":\"Fiat\",\"model\":\"500\",\"color\":\"white\"}",
                                       "vt": "json"
                                   },
                                   {
                                       "p": "car.fuel",
                                       "v": "Diesel",
                                       "vt": "str"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "Fensterstatus",
                               "payload": "Das Fenster ist offen",
                               "payloadType": "str",
                               "x": 670,
                               "y": 640,
                               "wires": [
                                   [
                                       "ba432baf.d61d38"
                                   ]
                               ]
                           },
                           {
                               "id": "ba432baf.d61d38",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 900,
                               "y": 640,
                               "wires": []
                           },
                           {
                               "id": "9345653b.527498",
                               "type": "ioBroker in",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "topic": "0_userdata.0.Fenster.458",
                               "payloadType": "value",
                               "onlyack": "",
                               "func": "all",
                               "gap": "",
                               "fireOnStart": "false",
                               "x": 290,
                               "y": 840,
                               "wires": [
                                   [
                                       "1045297c.265d67",
                                       "81301105.99e3d"
                                   ]
                               ]
                           },
                           {
                               "id": "4c36c436.ad58fc",
                               "type": "ioBroker in",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "topic": "0_userdata.0.Fenster.459",
                               "payloadType": "value",
                               "onlyack": "",
                               "func": "all",
                               "gap": "",
                               "fireOnStart": "false",
                               "x": 290,
                               "y": 940,
                               "wires": [
                                   [
                                       "9ec64b74.3912f8",
                                       "43d181f1.65412"
                                   ]
                               ]
                           },
                           {
                               "id": "1045297c.265d67",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "458",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 510,
                               "y": 800,
                               "wires": []
                           },
                           {
                               "id": "9ec64b74.3912f8",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "459",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 510,
                               "y": 980,
                               "wires": []
                           },
                           {
                               "id": "81301105.99e3d",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "move",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "458",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 560,
                               "y": 840,
                               "wires": [
                                   [
                                       "c7856cc6.495f9",
                                       "3c55bea1.8c0852"
                                   ]
                               ]
                           },
                           {
                               "id": "43d181f1.65412",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "move",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "459",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 560,
                               "y": 940,
                               "wires": [
                                   [
                                       "b9635395.17912",
                                       "5e5b8a7a.bdff14"
                                   ]
                               ]
                           },
                           {
                               "id": "c7856cc6.495f9",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "458 ohne payload",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 810,
                               "y": 800,
                               "wires": []
                           },
                           {
                               "id": "b9635395.17912",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "459 ohne payload",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 810,
                               "y": 1000,
                               "wires": []
                           },
                           {
                               "id": "5e5b8a7a.bdff14",
                               "type": "ioBroker get",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "topic": "0_userdata.0.Fenster.458",
                               "attrname": "458",
                               "payloadType": "value",
                               "x": 830,
                               "y": 940,
                               "wires": [
                                   [
                                       "5e2b6389.ddda3c",
                                       "326b9131.af24de"
                                   ]
                               ]
                           },
                           {
                               "id": "3c55bea1.8c0852",
                               "type": "ioBroker get",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "topic": "0_userdata.0.Fenster.459",
                               "attrname": "459",
                               "payloadType": "value",
                               "x": 830,
                               "y": 840,
                               "wires": [
                                   [
                                       "d55edb8e.558568",
                                       "326b9131.af24de"
                                   ]
                               ]
                           },
                           {
                               "id": "d55edb8e.558568",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "458 + 459",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1040,
                               "y": 800,
                               "wires": []
                           },
                           {
                               "id": "5e2b6389.ddda3c",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "459 + 458",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1040,
                               "y": 1000,
                               "wires": []
                           },
                           {
                               "id": "326b9131.af24de",
                               "type": "switch",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster offen (459 =false)",
                               "property": "459",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "false"
                                   },
                                   {
                                       "t": "true"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 1120,
                               "y": 900,
                               "wires": [
                                   [
                                       "ab66f9d2.fc2ff8",
                                       "eab47e1f.4f5cf"
                                   ],
                                   [
                                       "601e9d2c.31a934",
                                       "e45c65e6.0b7388"
                                   ]
                               ]
                           },
                           {
                               "id": "601e9d2c.31a934",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster geschlossen",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Fenster geschlossen",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1640,
                               "y": 960,
                               "wires": [
                                   [
                                       "190b8419.3cd0bc"
                                   ]
                               ]
                           },
                           {
                               "id": "ab66f9d2.fc2ff8",
                               "type": "switch",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster gekippt (458 =false)",
                               "property": "458",
                               "propertyType": "msg",
                               "rules": [
                                   {
                                       "t": "false"
                                   },
                                   {
                                       "t": "true"
                                   }
                               ],
                               "checkall": "true",
                               "repair": false,
                               "outputs": 2,
                               "x": 1430,
                               "y": 880,
                               "wires": [
                                   [
                                       "ebc2d6ff.8896e8"
                                   ],
                                   [
                                       "4d88da36.6d8ad4"
                                   ]
                               ]
                           },
                           {
                               "id": "ebc2d6ff.8896e8",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster gekippt",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Fenster gekippt",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1660,
                               "y": 840,
                               "wires": [
                                   [
                                       "190b8419.3cd0bc"
                                   ]
                               ]
                           },
                           {
                               "id": "4d88da36.6d8ad4",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "Fenster offen",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Fenster offen",
                                       "tot": "str"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1670,
                               "y": 900,
                               "wires": [
                                   [
                                       "190b8419.3cd0bc"
                                   ]
                               ]
                           },
                           {
                               "id": "190b8419.3cd0bc",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "false",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1890,
                               "y": 900,
                               "wires": []
                           },
                           {
                               "id": "e45c65e6.0b7388",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "Fenster.Wohnzimmer",
                                       "pt": "flow",
                                       "to": "true",
                                       "tot": "bool"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1470,
                               "y": 1040,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "eab47e1f.4f5cf",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "Fenster.Wohnzimmer",
                                       "pt": "flow",
                                       "to": "false",
                                       "tot": "bool"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1450,
                               "y": 760,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "5bc713d3.c8466c",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 910,
                               "y": 1200,
                               "wires": [
                                   [
                                       "7306fef7.87a41"
                                   ]
                               ]
                           },
                           {
                               "id": "79f6a471.189b6c",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "false",
                               "payloadType": "bool",
                               "x": 910,
                               "y": 1240,
                               "wires": [
                                   [
                                       "b06884f9.f77368"
                                   ]
                               ]
                           },
                           {
                               "id": "7306fef7.87a41",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "Fenster.Küche",
                                       "pt": "flow",
                                       "to": "payload",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1150,
                               "y": 1200,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "b06884f9.f77368",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "Fenster.Kinderzimmer",
                                       "pt": "flow",
                                       "to": "payload",
                                       "tot": "msg"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1170,
                               "y": 1240,
                               "wires": [
                                   []
                               ]
                           },
                           {
                               "id": "e414de53.ba849",
                               "type": "inject",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "props": [
                                   {
                                       "p": "payload"
                                   }
                               ],
                               "repeat": "",
                               "crontab": "",
                               "once": false,
                               "onceDelay": 0.1,
                               "topic": "",
                               "payload": "true",
                               "payloadType": "bool",
                               "x": 830,
                               "y": 1360,
                               "wires": [
                                   [
                                       "32ba0cb.18826f4"
                                   ]
                               ]
                           },
                           {
                               "id": "32ba0cb.18826f4",
                               "type": "change",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "rules": [
                                   {
                                       "t": "set",
                                       "p": "payload",
                                       "pt": "msg",
                                       "to": "Fenster",
                                       "tot": "flow"
                                   }
                               ],
                               "action": "",
                               "property": "",
                               "from": "",
                               "to": "",
                               "reg": false,
                               "x": 1020,
                               "y": 1360,
                               "wires": [
                                   [
                                       "fd5f9786.d1d228",
                                       "cc710782.057d48"
                                   ]
                               ]
                           },
                           {
                               "id": "fd5f9786.d1d228",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "active": false,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "true",
                               "targetType": "full",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1230,
                               "y": 1400,
                               "wires": []
                           },
                           {
                               "id": "f8a83e4f.f679c",
                               "type": "debug",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "active": true,
                               "tosidebar": true,
                               "console": false,
                               "tostatus": false,
                               "complete": "false",
                               "statusVal": "",
                               "statusType": "auto",
                               "x": 1450,
                               "y": 1360,
                               "wires": []
                           },
                           {
                               "id": "cc710782.057d48",
                               "type": "json",
                               "z": "fb6f7d17.54c04",
                               "name": "",
                               "property": "payload",
                               "action": "",
                               "pretty": false,
                               "x": 1230,
                               "y": 1360,
                               "wires": [
                                   [
                                       "f8a83e4f.f679c"
                                   ]
                               ]
                           }
                        ]
                        

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

                          Als Ergänzung solltest Du aber immer überlegen worauf Du hinauswillst.

                          Anstelle den Status des Fenster mit offen oder geschlossen = true oder false zu beschreiben, könntest Du Dir auch einen Zahlencode überlegen.

                          0 = geschlossen
                          1 = gekippt
                          2 = offen

                          Wenn Du später einen Alarm programmieren möchtest kannst Du dann das Level einstellen - zum Beispiel 0 (für Urlaub) oder 1 (für kurzfristige Abwesenheit).

                          Dann speicherst Du den Status der Fenster mit diesem Code. Im Urlaub löst Du dann Alarm aus, wenn Status >0 also geöffnet oder gekippt, bei kurzfristiger Abwesenheit ist Alarm wenn Status > 1, dann wird nur Alarm bei geöffnetem Fenster gegeben.

                          Da musst halt im Vorfeld überlegen, was Du machen willst. Die Split Nodes können Dir die Objekte zerlegen und die JOIN Nodes alles wieder zusammenfassen. Dazwischen machst Du die Analysen, die Du willst.

                          ? 1 Reply Last reply Reply Quote 1
                          • ?
                            A Former User @mickym last edited by A Former User

                            @mickym Sorry offtopic aber eine gute Gelegenheit es mal anzusprechen. Ich habe schon viele deiner Erklärungen zum Thema node-red gelesen und einiges gelernt. Dafür erst einmal vielen Dank. Es scheint ja leider nicht sehr viele Nutzer zu geben die dieses Instrument einsetzen. Ich muss gestehen das mir zB Blockly leichter fällt und mich sehr viel schneller ans Ziel bringt. Dennoch fasziniert mich node-red und ich versuche zumindest ein Teil meiner Automatisierung damit umzusetzen. Du hast nicht zufällig "versteckt" auf irgendeiner Webpage ein Tutorial verfasst was einem das Thema, in deiner sehr guten erklärweise, rüber bringt 😉

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

                              @noah3112

                              Hatte ich schon mal gepostet - deshalb hier einfach noch mal rauskopiert: 😉

                              Hier gibts ein paar deutschsprachige Videos:
                              https://haus-automatisierung.com/nodered-tutorial-reihe/

                              Nur die Function Nodes würde ich nie nutzen, dass geht mit Change Nodes viel einfacher!!!

                              Die besten Tutorials sind in Englisch - aber ich finde den Typ eigentlich super - sodass man es auch als nicht nativ-Speaker versteht.

                              aber empfehlen würde ich Dir diese Seite:
                              http://www.steves-internet-guide.com/node-red-overview/

                              dann die ersten Videos von Steve unter
                              Using Node-Red Nodes

                              startet hier:

                              Beginners Guide to Node Red Inject and Debug Nodes

                              Ich finde, selbst wenn man nicht gut Englisch kann, kann mir hier durch Zuschauen viel von Steve lernen.
                              Ausserdem hast Du wenn Du eine Node in Deinen Flow ziehst - über die Node Hilfe eine Beschreibung, wie der Node funktioniert.

                              Schau mal ob Dir das hilft.

                              Ich selbst habe kein Tutorial verfasst. 😉 Ansonsten hier noch der Link zum Forum: https://nodered.org/

                              Und falls ich Dir anhand einer konkreten Aufgabenstellung helfen soll, dann melde Dich einfach über einen Thread - da konnte ich ja schon manches erklären.

                              Ich muss gestehen das mir zB Blockly leichter fällt und mich sehr viel schneller ans Ziel bringt.

                              Das kann ich ja gar nicht verstehen. Ist bei mir umgekehrt - aber vielleicht kann ich ja was dafür tun, dass sich an der Geschwindigkeit was ändert. 😉

                              Ach und am Besten Du nimmst ein bestehendes Blockly und versuchst das mal in NodeRed umzusetzen - dann siehst ja wie beides funktioniert und was ggf. einfacher ist. Das Prinzip ist nämlich immer das Gleiche - egal was Du nutzt:

                              Trigger => Verarbeitung => Steuerung bzw. Ausgabe

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              991
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              3
                              13
                              1094
                              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