Ankündigung

Einklappen
Keine Ankündigung bisher.

Gruppenadresse mit Node Red KNX Ultimate zu bestimmten Zeitpunkt auslesen

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

    Gruppenadresse mit Node Red KNX Ultimate zu bestimmten Zeitpunkt auslesen

    Hallo Experten,

    ich benutze Node Red um für die Übergangszeit mein altes Bussystem PHC mit KNX zu koppeln. Nun bekomme ich von PHC nur die Nachricht das ein Taster gedrückt wurde, also immer 1. Nun möchte ich damit aber ein Licht auf KNX umschalten. Das bedeutet, dass ich zuerst die Gruppenadresse auslesen muss und basierend auf dem aktuellen Zustand dann eben ein oder ausschalte.

    Also logisch relativ einfach, wenn eine Nachricht von PHC kommt, lese den aktuellen Status des Ausgang. Ist er ausgeschaltet, schalte ein, sonst aus.

    Das kann doch eigentlich nicht so schwer sein, aber ich bekommen den 'KNX Device' Knoten der KNX Ultimate nicht so konfiguriert, dass er mir lediglich den Status ausliest und an den Flow weitergibt.


    #2
    Das Auslesen ist immer so eine Geschichte, du brauchst den Wert, musst aber noch auf die Antwort warten.
    Wieso hörst du nicht einfach auf die Gruppenadresse die sich interessiert, und speicherst den Status? Dann hast du ihn immer sofort wenn du ihn brauchst.

    Also:
    - KNXUltimate Node mit der entsprechenden Gruppeadresse, gesetzt auf INPUT, React to GroupValue write + response
    - Bei Send a GrpValue read once on connection/reconnect - auf: Read from KNX Bus. Damit verlierst du nix wenn nodered nicht gelaufen ist.

    Und das verbindest du mit einer Funktion und in der tust:
    - global.set('irgendwas_sprechendes', msg.payload);

    Dann, wenn du's brauchst, tust du:

    - var x = global.get('irgendwas_sprechendes');

    und kannst damit machen was du willst (also in deinem Fall vielleicht ein "return {payload: !global.get('irgendwas_sprechendes')}" in der entsprechenden Funktion).

    Sonst, wenn du wirklich live lesen möchtest, schickst du eine Nachricht mit

    - return {readstatus: true, destination: '1/2/3'};

    an KNXUltimate, und das wird zu einem Read-Request am Bus. Ich würd' aber obiges machen.

    (Es gibt sicher auch elegante KNX-only Lösungen, aber so machst du's in nodered mit KNXUltimate)
    Zuletzt geändert von sewi; 09.03.2025, 19:13.

    Kommentar


      #3
      Hallo Sewi,

      Dein Vorschlag hört sich sehr gut an, das werde ich morgen direkt probieren. Ich habe es inzwischen zwar über einen Umweg hinbekommen, der ist aber sehr unpraktikabel und auch nur begrenzt verfügbar, was mit dem Rückbau des alten PHC System zutun hat.

      KNX-only bring mir eh nichts, da ich node red für das Lesen und verarbeiten der PHC Bus Nachrichten benötige.

      Kommentar


        #4
        Hab ich mir schon gedacht.
        Gehen tut das auf jeden Fall, ich verwende das dutzendfach im nodered (also die Variante mit mithören und speichern).

        Das explizite Lesen geht auch, aber das verwende ich nur, weil der Zennio Multiaktor nach einem Neustart die Dateneingänge bei seinen Logiken auf undefiniert hat, wenn der neustartet sendet er auf eine bestimmte GA - das hör ich im nodered mit, und mach ein Read auf alle GA die der Multiaktor braucht. Sicher nicht optimal, aber hey, es geht.

        Kommentar


          #5
          Bei den ueblichen Schaltaktoren sind Schaltzustand-Empfangen und Status-Senden zwei verschiedene Objekte. Hast Du zwei verschiedene Gruppen dafuer vorgesehen?

          Was sagt der ETS Gruppenmonitor dazu:
          - kommt die Anfrage vom KNX Ultimate Node auf dem KNX Bus an?
          - falls ja, antwortet der Aktor wie erwartet?

          Kommentar


            #6
            Zitat von bbb34 Beitrag anzeigen
            Bei den ueblichen Schaltaktoren sind Schaltzustand-Empfangen und Status-Senden zwei verschiedene Objekte. Hast Du zwei verschiedene Gruppen dafuer vorgesehen?

            Was sagt der ETS Gruppenmonitor dazu:
            - kommt die Anfrage vom KNX Ultimate Node auf dem KNX Bus an?
            - falls ja, antwortet der Aktor wie erwartet?
            Mein Problem ist ja nicht die KNX Ultimate node, ich kann schon die Daten von KNX lesen und schreiben. Die Frage war ja wie ich in node red zu einem bestimmten Zeitpunkt eine GA auslesen und den Wert für die Weiterverarbeitung im Flow verwenden kann.

            Der von sewi vorgeschlagene Ansatz klingt nach einer ganz guten Lösung, hab es nur noch nicht ausprobiert.

            Kommentar


              #7
              Zitat von bbb34 Beitrag anzeigen
              Hast Du zwei verschiedene Gruppen dafuer vorgesehen?​
              Was sagt der ETS Gruppenmonitor dazu:
              - kommt die Anfrage vom KNX Ultimate Node auf dem KNX Bus an?
              - falls ja, antwortet der Aktor wie erwartet?
              Eine Antwort wäre hilfreich.

              Kommentar


                #8
                Klar gibt es eine RM Adresse, die habe ich auch versucht auszulesen. Ich habe mir das Read example von KNX Ultimate runtergeladen und noch ein debug node dahinter gehängt.

                image.png

                Und ich sehe die requests auch in der ETS, aber der debug node liefert einfach nichts.

                Kommentar


                  #9
                  Bitte entschuldige meine unqualifizierte Stoerung.

                  Kommentar


                    #10
                    Schade, ich hatte gedacht Du kannst mir sagen wie ich den KNX Ultimate Knoten einstellen muss dass er mir das Ergebnis vom Read im Debug Knoten liefert 😎

                    Kommentar


                      #11
                      Dein Node-Red Flow ist vermutlich fehlerhaft, siehe das von dir verlinkte Beispiel, es fehlt "Catch the response from the device".

                      Kommentar


                        #12
                        Das hatte ich auch gesehen, aber nicht verstanden weil da ja das inject fehlt. Aber jetzt hab ich es kapiert, man braucht beides.

                        image.png

                        Mit dem Read wird es initiiert un​d das Ergebnis liefert der untere Knoten

                        image.png

                        Das ist natürlich auch eine gute Lösung für mein Problem. Danke für den Tipp.​

                        Kommentar


                          #13
                          Hm, ich weiß nicht warum das im Beispiel so getrennt ist, aber ich kann das auch direkt mit einer "Node-Kette" machen:
                          image.png

                          image.png

                          Code:
                          [
                              {
                                  "id": "5d51899f35392e39",
                                  "type": "knxUltimate",
                                  "z": "835bc0b0.91317",
                                  "server": "3490cbfd.0b01f4",
                                  "topic": "5/6/4",
                                  "setTopicType": "str",
                                  "outputtopic": "",
                                  "dpt": "9.001",
                                  "initialread": "0",
                                  "notifyreadrequest": false,
                                  "notifyresponse": true,
                                  "notifywrite": false,
                                  "notifyreadrequestalsorespondtobus": false,
                                  "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0",
                                  "listenallga": false,
                                  "name": "Sens Netzwerkschrank Temperatur",
                                  "outputtype": "read",
                                  "outputRBE": "false",
                                  "inputRBE": "false",
                                  "passthrough": "no",
                                  "x": 780,
                                  "y": 2160,
                                  "wires": [
                                      [
                                          "33745af1314de95a"
                                      ]
                                  ]
                              },
                              {
                                  "id": "33745af1314de95a",
                                  "type": "debug",
                                  "z": "835bc0b0.91317",
                                  "name": "debug 19",
                                  "active": true,
                                  "tosidebar": true,
                                  "console": false,
                                  "tostatus": false,
                                  "complete": "true",
                                  "targetType": "full",
                                  "statusVal": "",
                                  "statusType": "auto",
                                  "x": 1040,
                                  "y": 2160,
                                  "wires": []
                              },
                              {
                                  "id": "0061094c9759d624",
                                  "type": "inject",
                                  "z": "835bc0b0.91317",
                                  "name": "",
                                  "props": [
                                      {
                                          "p": "payload"
                                      },
                                      {
                                          "p": "topic",
                                          "vt": "str"
                                      }
                                  ],
                                  "repeat": "",
                                  "crontab": "",
                                  "once": false,
                                  "onceDelay": 0.1,
                                  "topic": "",
                                  "payload": "",
                                  "payloadType": "date",
                                  "x": 520,
                                  "y": 2160,
                                  "wires": [
                                      [
                                          "5d51899f35392e39"
                                      ]
                                  ]
                              }
                          ]​
                          Chris

                          Kommentar


                            #14
                            PS: Immer beachten, egal welche Variante: Der empfangende Node kann nicht unterscheiden, ob die GroupValueResponse von einem selbst ausgelösten GroupValueRead kommt oder irgendwie anders im Busverkehr passierte. Macht zwar je nach Anwendung keinen Unterschied, sollte man aber im Hinterkopf behalten. Und wenn es wichtig ist muss man den Flow noch so erweitern, dass man eine Antwort vom KNX-Node nur beachtet, wenn sie innerhalb eines passenden Timeouts nach dem gesendeten Read-Request kommt.
                            Chris

                            Kommentar


                              #15
                              Zitat von Alloc Beitrag anzeigen
                              mmer beachten, egal welche Variante: Der empfangende Node kann nicht unterscheiden, ob die GroupValueResponse von einem selbst ausgelösten GroupValueRead kommt oder irgendwie anders im Busverkehr passierte.
                              Ich habe das vorhin ausprobiert, in der von mir beschriebenen Variante reagiert der Catch Knoten nur, wenn ich den Read initiiere. Drücken ich auf den Lichtschalter um das Licht anzuschalten, reagiert der Catch Knoten nicht und der debug bleibt stumm!

                              Kommentar

                              Lädt...
                              X