Ankündigung

Einklappen
Keine Ankündigung bisher.

Node Red Fragen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #91
    Hi,

    ich stoße immer mal wieder auf die Herausforderung, dass ich den Status eines Input-Nodes zwar als Wert für einen AND-Node benötige, aber trotzdem damit kein Telegram auslösen will.

    Beispiel:

    Notification.JPG Hier wird zum einen eine Meldung gesendet, wenn ich die Abwesenheit aktiviere und noch Fenster offen sind. Im Nachgang wird eine Meldung gesendet, wenn die offenen Fenster geschlossen wurden.

    Allerdings wird auch eine Meldung "Fenster geschlossen" gesendet, wenn die Abwesenheit bei geschlossenen Fenstern aktiviert wird. Das möchte ich verhindern.

    Nach meinem Verständnis müsste ich nach dem unteren "AND"-Node unterscheiden können, von welchem Input-Node die Message getriggert wurde - und nur die Nachrichten durchlassen, die von dem Node "Fenster DG - Status" getriggert wurden. Da auch das Topic vom "AND"-Node neu gesetzt wird, kann ich es nicht als Unterscheidungskriterium verwenden. Ich bin aber vermutlich auf der falschen Fährte...

    Hat jemand von Euch eine Idee wie ich das lösen kann?

    Danke & Viele Grüße
    Jens

    Kommentar


      #92
      Zitat von Neelex Beitrag anzeigen
      Allerdings wird auch eine Meldung "Fenster geschlossen" gesendet, wenn die Abwesenheit bei geschlossenen Fenstern aktiviert wird. Das möchte ich verhindern.
      Genau das muss durch die Logik verhindert werden.
      Das geht z.B. über eine zeitliche Torschaltung, die die Nachricht "Fenster geschlossen" blockiert, wenn man "Abwesenheit" aktiviert

      abwesend.PNG

      ... ich habs allerdings nicht getestet.
      Chris (https://proknx.com)
      realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
      Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

      Kommentar


        #93
        Hallo Christian,

        auch so spät noch am Rechner gewesen? Vielen Dank!!!

        Habe es getestet. Bei Deiner Variante wird die Nachricht trotzdem geschickt, da zuerst das TRUE von "Allgemein - Abwesend" in den unteren AND-Knoten läuft (mit TRUE) und die Nachricht antriggert und erst 250ms später wird invertiert (FALSE) geschickt.

        Ich habe noch einiges ausprobiert heute - auch mit Deinem Ansatz. Je mehr ich getestet habe mit AND-Knoten, desto mehr war ich der Meinung dass das damit nicht funktionieren kann. Jedes Triggern eines invertierten bzw. anderen Status-Werts - um zu verhindern, dass der AND-Knoten TRUE wird - führt beim nachfolgenden Senden des korrekten Wertes wieder zu einer Message und damit zur Notification. Man muss wohl die Funktionen "Abwesenheits-Status speichern" und "Nachricht triggern" trennen.

        Heute morgen bin ich auf die Idee gekommen, dass man den aktuellen Abwesenheits-Status vielleicht in eine Flow-Variable schreiben (Status speichern) und dann statt AND-Knoten einen Function-Knoten für die Auswertung (Message triggern) verwenden könnte. Da ich mich mit Java überhaupt nicht auskenne, war das sehr spannend. Nach langem Anschauen von Beispielen und gefühlten tausend Versuchen und Änderungen scheint es zu funktionieren. Von Code-Seite her geht das bestimmt auch irgendwie eleganter...

        image_83716.jpg

        Knoten "Set status to flow variable":
        Code:
        status = flow.get("status") || "";
        var statustopic = msg.topic;
        var statuspayload = msg.payload;
        
        if (statustopic == "Abwesend" && statuspayload === true)
            flow.set("status", "TRUE");
         else
        
        if(statustopic == "Abwesend" && statuspayload === false)
            flow.set("status", "FALSE");
         else
        
         return message;

        Knoten "Fenster geschlossen DG":
        Code:
        status = flow.get("status") || "";
        var topicDG = msg.topic;
        var payloadDG = msg.payload;
        var payloadgeschlossen = "geschlossen";
        
        if(topicDG == "Fenster" && payloadDG === false && status == "TRUE")
            msg.payload = payloadgeschlossen;
        else
            msg.payload = "";
        return msg;
        Grüße
        Jens
        Zuletzt geändert von Neelex; 14.04.2019, 11:16.

        Kommentar


          #94
          Hallo Jens,
          sorry, man sollte nie etwas ungetestet veröffentlichen.
          Du hast vollkommen recht, so wie von mir angedacht gehts nicht.
          Super, wie Du das mit JavaScript gelöst hast.

          Ich möchte hier noch einen Lösungsweg aufzeigen, ohne scripten zu müssen. Soll kein Besserwissen sein...
          Immer wenn Zustände von mehreren Variablen erfasst werden und dann über unterschiedliche Bedingungen weiterverarbeitet werden sollen, kann das mit reiner boolschen Logik schwierig werden.
          Eine super Hilfe ist hier die "finite state machine", die ich ich kurz an Deinem Beispiel vorstellen möchte.

          Die Zustände und die Weiterschaltbedingungen können dazu im Klartext festgelegt werden. Das ganze schaut in der Konfiguration so aus:
          configStateMachine.PNG
          Der Flow könnte dann wie folgt aussehen:

          state-machine.PNG


          Die drei Weiterschaltbedingungen sind Eingangsseitig der state machine angelegt. Am Ausgang testet man dann den Zustand über das entsprechende Topic, und könnte den Text in Deinem Fall auch gleich raussenden.

          Diesmal hab ich's auch getestet, und es funktioniert

          Hier noch der Code zum Übernehmen aus der Zwischenablage:
          Code:
          [{"id":"b348209d.ac5fa","type":"tab","label":"Flow 2"},{"id":"8efc9d36.c4482","type":"state-machine","z":"b348209d.ac5fa","name":"","triggerProperty":"topic","triggerPropertyType":"msg","stateProperty":"topic","statePropertyType":"msg","outputStateChangeOnly":false,"throwException":false,"states":["start","Melden Fenster offen","Melden Fenster geschlossen"],"transitions":[{"name":"Abwesend aktiviert + Fenster offen","from":"*","to":"Melden Fenster offen"},{"name":"Abwesend aktiviert + Fenster geschlossen","from":"Melden Fenster offen","to":"Melden Fenster geschlossen"},{"name":"Abwesend wird aktiviert","from":"*","to":"start"}],"x":1076,"y":180,"wires":[["196dbd3a.a54053"]]},{"id":"fbf70e21.5e8e2","type":"realknx-in","z":"b348209d.ac5fa","name":"","controller":"b1d2fbe.d184108","itemname":"Test - Abwesend","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":140,"y":160,"wires":[["86c7f601.efb648","d6615501.9edb48","998cc053.3eb13"]]},{"id":"1204b37f.4a7afd","type":"realknx-in","z":"b348209d.ac5fa","name":"","controller":"b1d2fbe.d184108","itemname":"Test - Fenster offen","passthru":false,"booleanoutput":true,"outputatstartup":true,"x":130,"y":220,"wires":[["d6615501.9edb48","13d7eb93.c55e84"]]},{"id":"ef154cbe.c06d2","type":"change","z":"b348209d.ac5fa","name":"Abwesend wird aktiviert","rules":[{"t":"set","p":"topic","pt":"msg","to":"Abwesend wird aktiviert","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":650,"y":100,"wires":[["8efc9d36.c4482"]]},{"id":"86c7f601.efb648","type":"switch","z":"b348209d.ac5fa","name":"IS TRUE?","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":458,"y":100,"wires":[["ef154cbe.c06d2"]]},{"id":"d6615501.9edb48","type":"BooleanLogic","z":"b348209d.ac5fa","name":"","operation":"AND","inputCount":2,"topic":"result","x":400,"y":180,"wires":[["9075b283.e5e9c"]]},{"id":"587210a1.f026e","type":"change","z":"b348209d.ac5fa","name":"Abwesend aktiviert + Fenster offen","rules":[{"t":"set","p":"topic","pt":"msg","to":"Abwesend aktiviert + Fenster offen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":780,"y":180,"wires":[["8efc9d36.c4482"]]},{"id":"998cc053.3eb13","type":"BooleanLogic","z":"b348209d.ac5fa","name":"","operation":"AND","inputCount":2,"topic":"result","x":520,"y":280,"wires":[["56645366.b3cafc"]]},{"id":"13d7eb93.c55e84","type":"Invert","z":"b348209d.ac5fa","name":"Invert","x":350,"y":280,"wires":[["998cc053.3eb13"]]},{"id":"fe8cfe3b.96ad1","type":"change","z":"b348209d.ac5fa","name":"Abwesend aktiviert + Fenster geschlossen","rules":[{"t":"set","p":"topic","pt":"msg","to":"Abwesend aktiviert + Fenster geschlossen","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":900,"y":280,"wires":[["8efc9d36.c4482"]]},{"id":"196dbd3a.a54053","type":"debug","z":"b348209d.ac5fa","name":"","active":true,"console":"false","complete":"false","x":1230,"y":280,"wires":[]},{"id":"9075b283.e5e9c","type":"switch","z":"b348209d.ac5fa","name":"IS TRUE?","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":558,"y":180,"wires":[["587210a1.f026e"]]},{"id":"56645366.b3cafc","type":"switch","z":"b348209d.ac5fa","name":"IS TRUE?","property":"payload","propertyType":"msg","rules":[{"t":"true"}],"checkall":"true","outputs":1,"x":660,"y":280,"wires":[["fe8cfe3b.96ad1"]]},{"id":"b8864948.4ca2d8","type":"comment","z":"b348209d.ac5fa","name":"init","info":"","x":310,"y":80,"wires":[]},{"id":"b1d2fbe.d184108","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]
          Viele Grüsse
          Christian
          Chris (https://proknx.com)
          realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
          Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

          Kommentar


            #95
            Hallo Christian,

            wow, vielen Dank! Mit der State Machine ist das natürlich deutlich schneller und nachvollziehbarer umzusetzen, werde ich so verwenden! Da sieht man eben wer der Experte ist .Die State Machine scheint wirklich ein zentraler Knoten zu sein, wenn man etwas komplexere Logik-Aufgaben lösen möchte.

            Kein Problem übrigens, dass das andere nicht funktioniert hat. Du musst uns nicht für jedes individuelle Problem (getestete) Flows zur Verfügung stellst, ich sehe das als großes Entgegenkommen von Deiner Seite! Außerdem hat mich das dazu gebracht mich ein bisschen mit Java Coding zu beschäftigen - schadet auch nicht. Grundsätzlich muss schon selbst probieren und findet manchmal dann auch Lösungen. Deine Lösungen sind aber immer logischer und besser nachvollziehbarer

            Viele Grüße
            Jens

            Kommentar


              #96
              Salü miteinander

              Bei meiner Szenensteuerung ist mir leider nun im Sommer noch ein Bug aufgefallen.Wenn ich morgen die Taste drücke und es draussen schon über 500lx hell ist, schaltet die Steuerung nur die "Alles Aus" Funktion ohne erst die Jalousien rauf zu fahren. Hat jemand eine Idee, wie ich diese Funktion umbauen könnte, dass er wenn es hell ist erst die Jalousien rauf fährt und dann erst die "Alles Aus" Funktion setzt?

              Morgenszene.png

              Liebe Grüsse
              Ueli

              Kommentar


                #97
                Ich habe mich bisher gefragt, wozu man in Node Red Rechnen sollte. Nun habe ich den Fall. Ich bekomme von meinen Poolmanager über ein Weinzierl Gateway nur Werte, die in der Kommastelle nicht stimmen. Exemplarisch habe ich nun die Pooltemperatur in Node Red mit 10 multipliziert.

                Das Ergebnis wird in Node Red angezeigt, jedoch eine "0" oder nichts auf den Bus gesendet.
                Dieses scheinbar harmlose Problem bewegt mich schon seit Tagen. Man denkt immer, das ist sicher ein so einfaches Thema, damit will sich niemand langweilen. Jetzt kribbeln aber meine Fußnägel und ich will es Wissen.
                Ich habe erst mit dem Beispiel von Christian aus der Bibliothek experimentiert, jedoch bekomme ich eine feste Variable nicht an "context.global.Y1" übergeben. Das wäre sicher Teil 1 einer Lösung. Eine andere Variante, die ich zumindest im Node Red abgebildet bekomme ist unten angehängt.
                Es wäre schön, wenn hier noch einmal auf die Formatierung der Werte zur Übergabe an den Bus eingegangen werden würde, respektive wir ein Webinar fortführen.

                Anbei mein Flow:

                DPT = 9.001 Temperatur in C (2 Byte)

                Bildschirmfoto 2019-05-21 um 09.14.06.png











                Code:
                [
                    {
                        "id": "c8636131.ecf158",
                        "type": "debug",
                        "z": "2a26509b.73d31",
                        "name": "Pooltemperatur 2",
                        "active": true,
                        "console": "false",
                        "complete": "payload",
                        "x": 939,
                        "y": 1459,
                        "wires": []
                    },
                    {
                        "id": "f776f560.6c0ec8",
                        "type": "function",
                        "z": "2a26509b.73d31",
                        "name": "Pool_Temp mit 10 multipliziert",
                        "func": "var preis = 10;\n\n//ausgabe   =  in Wert von Pool_Temp  mal  variable   auf 1 Stellen nachkomma\nmsg.payload = ((msg.payload)  *   preis)    .toFixed(1);\n\nreturn msg;",
                        "outputs": 1,
                        "noerr": 0,
                        "x": 394.9999084472656,
                        "y": 1486.3331298828125,
                        "wires": [
                            [
                                "12e234d0.47ddeb"
                            ]
                        ]
                    },
                    {
                        "id": "c9502b35.898b",
                        "type": "comment",
                        "z": "2a26509b.73d31",
                        "name": "Pooltemperatur * 10",
                        "info": "",
                        "x": 157.99974060058594,
                        "y": 1395.333058834076,
                        "wires": []
                    },
                    {
                        "id": "a0494b55.a1e4",
                        "type": "realknx-in",
                        "z": "2a26509b.73d31",
                        "name": "Pool_Temp",
                        "controller": "1e04429e.eb7e1d",
                        "itemname": "VESTIBUL - Pool_Temp1",
                        "passthru": false,
                        "booleanoutput": false,
                        "outputatstartup": true,
                        "x": 136,
                        "y": 1462,
                        "wires": [
                            [
                                "f776f560.6c0ec8",
                                "cd3ab9eb.991d18"
                            ]
                        ]
                    },
                    {
                        "id": "362d92e6.06b216",
                        "type": "realknx-out",
                        "z": "2a26509b.73d31",
                        "name": "Wert an Pool_Temp übergeben",
                        "controller": "1e04429e.eb7e1d",
                        "itemname": "AUSSEN - Pool_Temp2",
                        "topic": "",
                        "payload": "msg.payload",
                        "booleaninput": true,
                        "x": 981,
                        "y": 1513,
                        "wires": []
                    },
                    {
                        "id": "cd3ab9eb.991d18",
                        "type": "debug",
                        "z": "2a26509b.73d31",
                        "name": "Pooltemperatur 1",
                        "active": true,
                        "console": "false",
                        "complete": "payload",
                        "x": 936,
                        "y": 1414,
                        "wires": []
                    },
                    {
                        "id": "12e234d0.47ddeb",
                        "type": "change",
                        "z": "2a26509b.73d31",
                        "name": "String in number",
                        "rules": [
                            {
                                "t": "set",
                                "p": "payload",
                                "pt": "msg",
                                "to": "$number(payload)\t",
                                "tot": "jsonata"
                            }
                        ],
                        "action": "",
                        "property": "",
                        "from": "",
                        "to": "",
                        "reg": false,
                        "x": 664.5,
                        "y": 1485,
                        "wires": [
                            [
                                "362d92e6.06b216",
                                "c8636131.ecf158"
                            ]
                        ]
                    },
                    {
                        "id": "1e04429e.eb7e1d",
                        "type": "realknx-controller",
                        "z": "",
                        "name": "realknx-ctrl",
                        "host": "localhost",
                        "port": "3000"
                    }
                ]
                P.S. Ich weiß es ist zu kalt zum Baden. Ich wollte nicht das Poolwasser erwärmen, sondern nur den Anzeigewert um die Kommastelle berichtigen.

                Gruß Marco
                Zuletzt geändert von MPolo; 21.05.2019, 22:53.

                Kommentar


                  #98
                  Zitat von MPolo Beitrag anzeigen
                  Anbei mein Flow:
                  Hi Marco, kann den Flow nicht importieren. Kannst Du ihn bitte nochmal posten, vielleicht als Code kennzeichen (geht über #)
                  Danke!
                  Chris (https://proknx.com)
                  realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
                  Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

                  Kommentar


                    #99
                    Zitat von 4rem Beitrag anzeigen
                    dass er wenn es hell ist erst die Jalousien rauf fährt und dann erst die "Alles Aus" Funktion setzt
                    Hallo Ueli,
                    geht es dir beim Szenenaufruf um die Verzögerung, dass die Jalousien erst oben sein müssen, bevor das Licht ausgeschaltet wird, oder darum, dass die Jalousien überhaupt fahren?
                    Letzteres könntest Du ganz einfach realisieren, indem die Jalousien auch auf die Szenennummer "Alles Aus" reagieren.
                    Chris (https://proknx.com)
                    realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
                    Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

                    Kommentar


                      Zitat von MPolo Beitrag anzeigen
                      Das Ergebnis wird in Node Red angezeigt, jedoch eine "0" oder nichts auf den Bus gesendet.
                      Hallo Marco,
                      hatte nicht mitbekommen, dass Du die Änderung des Codes im Thread oben vorgenommen hattest.

                      Im Prinzip hast Du zu kompliziert gedacht. Der Ausgangsknoten erwartet den Wert als payload. Im Feld "payload" im Ausgangsknoten deshalb nichts eintragen. Der Ausgabewert Deiner Funktion ist auch schon ein Wert und kein String, eine Formatskonvertierung ist nicht nötig.



                      pooltemp.PNG


                      Hier mal der Code:
                      Code:
                      [{"id":"dbe0812.4181a8","type":"tab","label":"Flow 3"},{"id":"1f371d44.392aa3","type":"debug","z":"dbe0812.4181a8","name":"Pooltemperatur 2","active":true,"console":"false","complete":"payload","x":730,"y":140,"wires":[]},{"id":"7b23256a.a5897c","type":"function","z":"dbe0812.4181a8","name":"Pool_Temp mit 10 multipliziert","func":"var preis = 10;\n\n//ausgabe   =  in Wert von Pool_Temp  mal  variable   auf 1 Stellen nachkomma\nmsg.payload = ((msg.payload)  *   preis)    .toFixed(1);\n\nreturn msg;","outputs":1,"noerr":0,"x":405.9999084472656,"y":167.3331298828125,"wires":[["1f371d44.392aa3","a6f98eb3.3044d"]]},{"id":"c02d4748.b26d98","type":"comment","z":"dbe0812.4181a8","name":"Pooltemperatur * 10","info":"","x":168.99974060058594,"y":76.33305883407593,"wires":[]},{"id":"3fbf290a.226e06","type":"realknx-in","z":"dbe0812.4181a8","name":"Pool_Temp","controller":"be02398f.07b8e8","itemname":"VESTIBUL - Pool_Temp1","passthru":false,"booleanoutput":false,"outputatstartup":true,"x":147,"y":143,"wires":[["7b23256a.a5897c","118bdf12.88dc61"]]},{"id":"a6f98eb3.3044d","type":"realknx-out","z":"dbe0812.4181a8","name":"Wert an Pool_Temp übergeben","controller":"be02398f.07b8e8","itemname":"AUSSEN - Pool_Temp2","topic":"","payload":"","booleaninput":true,"skipfirst":true,"x":772,"y":194,"wires":[]},{"id":"118bdf12.88dc61","type":"debug","z":"dbe0812.4181a8","name":"Pooltemperatur 1","active":true,"console":"false","complete":"payload","x":727,"y":95,"wires":[]},{"id":"be02398f.07b8e8","type":"realknx-controller","z":"","name":"realknx-ctrl","host":"localhost","port":"3000"}]
                      Zuletzt geändert von multimedia; 26.05.2019, 07:10.
                      Chris (https://proknx.com)
                      realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
                      Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

                      Kommentar


                        Hi Chris,
                        wenn also am Ausgangsknoten ein Wert ankommt ist es zunächst egal, ob er Format String oder Number ist.
                        Was mache ich nur falsch, dass ich den Wert partu nicht auf den Bus bekomme? Die GA ist für Eingangswert wie für den Ausgangswert im ProServ jeweils als Status mit 2 Byte angelegt. Den Eingangswert kann ich im Monitor sehen, der errechnete Ausgangswert liefert jedoch immer die "0".
                        Deshalb habe ich mit der Formatierung angefangen. Beide Werte sind im "Debug" Fenster zu sehen.
                        This is magic.

                        Gruß Marco

                        Kommentar


                          Welchen Funktionstyp hast du verwendet, der auf den Bus schicken soll? Vielleicht liegt der Fehler auch bei uns. Wir verwenden immer den Thermostat (mit bit oder byte Modus). Istwert wird von NodeRed gelesen, Sollwert geschrieben...
                          Chris (https://proknx.com)
                          realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
                          Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

                          Kommentar


                            Funktion: Status - 2 Byte Gleitkommawert im ProServ
                            DPT = 9.001 Temperatur in C (2 Byte)

                            Der pH Wert und Cl Wert wird übermittelt direkt vom Poolmanager auf den Bus, da stimmt die Kommastelle und muss nichts umgerechnet werden. Alle Einstellungen sind für pH, Cl und Temp gleich. Die Anzeige pH, Cl und Beckentemperatur mit fehlerhafter Kommastelle funktioniert. Nur der errechnete Wert zeigt im "debug" den richtigen Wert, jedoch kommt nur die "0" auf den Bus.
                            Deshalb tippe ich auf NodeRed.
                            Angehängte Dateien
                            Zuletzt geändert von MPolo; 26.05.2019, 17:14.

                            Kommentar


                              Hallo Marco,
                              Der Datenpunkt Status 2-Byte kann konsequenter Weise in NodeRed nicht geschrieben werden, weil es eben ein Status ist...
                              Abhilfe ist, einen Thermostat mit bit Betriebsmodus zu konfigurieren. Der Istwert wird im Flow als Eingangswert gelesen, der Sollwert wird geschrieben als Ausgangswert. Das ganze kann angewählt werden als "nicht im User Interface anzuzeigen", dann störts nicht in der iKnix Anzeige. Den Status 2-Byte kannst Du dann wie gehabt mit der arithmetisch behandelten GA des Sollwerts verknüpfen.
                              Sorry, ich werde das mal durchsprechen, denn machbar wär's natürlich auch über das KO "Status" zu schreiben.
                              Schönen Abend!
                              Christian
                              Chris (https://proknx.com)
                              realKNX: Neben Visualisierung jetzt auch Sprachsteuerung ohne Cloud https://proknx.com/realknx-de
                              Ausserdem: Automatisierungsideen mit NodeRED: (Logik, Sprachausgabe, Fremdprotokolle bis hin zur Alarmanlage)

                              Kommentar


                                Hallo Chris,
                                ich habe es nun endlich hinbekommen. Das Problem bestand für mich darin, zu entscheiden, welchem KO ich das Leserecht vergebe. Ich spreche eine GA zweimal an.
                                Der Ausgangswert der Berechnung im Node Red wirt an RTR OUT übergeben. Den gleichen Wert muss ich aber auch als Status abbilden können. Da ich die RTR Funktion als "unsichtbar" definiert habe musste ich daneben den Status mit der gleichen GA anlegen. Es durfte nur die GA die am RTR OUT hängt "Lesend" (K,L,Ü) sein und die des Status "schreibend" (K, S, Ü) sein.
                                Um dies herauszufinden habe ich ungefähr 1 Million mal den proServ gebootet, was sicher unnötig war. Ich habe wieder etwas gelernt und das ist auch gut so.

                                Ein neues Problem sind die Qualitäten der Ergebnisse. Im Node Red wird korrekt mit 100 multipliziert und auch richtig angezeigt. Auf dem Bus kommt jedoch eine kleine Abweichung an. z.B. wird ein Redox Wert von 7,01 (02 BD) als Eingangswert übergeben. Daraus macht die Multiplikation 701, jedoch kommt auf dem Bus 705,28 (34 4E) an. DPT 9.000 2Byte Gleitkomma.
                                Gibt es hierzu eine Erklärung???????

                                Danke für Dein Input.

                                Marco
                                Zuletzt geändert von MPolo; 31.05.2019, 10:23.

                                Kommentar

                                Lädt...
                                X