Ankündigung

Einklappen
Keine Ankündigung bisher.

Paralleles verarbeiten von Befehlen?

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

    Paralleles verarbeiten von Befehlen?

    Hallo,

    ich hatte etliche Jahre den eibd in der Version 0.0.5 im Einsatz, zusammen mit einem Weizerl BAOS 770.

    Nun habe ich mir mal meinen Linux Server neu installiert und auch die Version 0.14.46 vom knxd installiert. Kommunikation habe ich grundsätzlich, aber wenn ich über den Cron mehrere Befehle gleichzeitig sende, dann werden einige davon verschluckt.

    Ich lasse z.B. 5 Jalousien gleichzeitig ansteuern, das hat früher problemlos geklappt aber nun werden meistens nur 2 der 5 angesteuert.

    Die Optionen mit dem alten eibd:

    DAEMON_ARGS="-t 1023 -S -D -R -T -i -d/var/log/eibd.log --pid-file=/var/run/eibd.pid --no-tunnel-client-queuing ipt:192.168.99.181"

    Und nun:

    KNXD_OPTS="-e 0.0.1 -E 0.0.2:8 --GroupCache=24 --send-delay=500 -u /tmp/eib -b ipt:192.168.77.50"

    Ich habe schon einiges mit den Optionen getestet, mit und ohne Cache, Send-Delay auf 30 oder 500ms. Ebenso mit und ohne Tunneling etc.

    Hat jemand einen Tipp für mich woran das liegen könnte? (IP Adresse ist nun anders, weil eigenes Haustechnik VLAN gebaut.)

    ​Viele Grüße
    Stefan

    #2
    Wie viele eibd Prozesse hast Du am Laufen?
    Im Ernst, ein Prozess kann Befehle nur nacheinander ausführen, auch auf dem KNX-Bus kann zu einer Zeit nur ein Telegramm gesendet werden.
    5 Jalousien exakt gleichzeitig ansteuern wird nur mit einer Szene funktionieren.
    Die Situation verbessern sollte ein Verringern des send-delay, weil der eibd mehr Zeit bekommt.
    Eine einfache Lösung ist das serielle Senden der Cron Befehle.

    Kommentar


      #3
      Zitat von knxPaul Beitrag anzeigen
      wird nur mit einer Szene funktionieren
      Nö, mit einer GA reicht!

      Kommentar


        #4
        Naja, mich wundert halt nur, dass es 10 Jahre lang ohne Probleme funktioniert hat und nun Probleme macht...

        Ich will die Jalousien ja auch einzeln steuern können, sind halt nur 5 Fenster die zur selben Zeit angesteuert werden. O.k. klar, kann da die Befehlt mit einer Sekunde Versatz senden, aber das wäre ja nur ein Workaround...

        Ich hätte nun gedacht, der knxd nimmt alle Kommandos entgegen und führt diese nacheinander aus, aber scheinbar verhält es sich hier nun anders als früher...

        Kommentar


          #5
          Zitat von Raudi Beitrag anzeigen
          Ich will die Jalousien ja auch einzeln steuern können
          das ist kein Ausschlusskriterium, weil ein KO auf mehrere GAs hören kann: Je Jalousie Aktor eine GA für einzelnes und eine GA für das gemeinsame Fahren zu verbinden ist einfach.

          Kommentar


            #6
            Möchte ich da mal eine Jalousie raus haben brauche ich nur im Cron eine Zeile auskommentieren, so müsste ich die Programierung ändern, das möchte ich eigentlich vermeiden.

            Fakt:

            Der "eibd" hatte keine Probleme damit gleichzeitig mehrere Befehle anzunehmen und diese dann nacheinander auf den Bus zu senden.

            Der "knxd" kann nicht auf mehrere Befehle gleichzeitig reagieren, er ignoriert diese oder was auch immer.

            Muss ich mir heute Abend noch mal genauer anschauen... Aber es hätte ja sein können, dass es da einen Parameter oder eine Kombination aus Parametern gibt die dieses Verhalten optimiert.

            Kommentar


              #7
              Nein, der knxd ignoriert nix. Da ist irgendwas Anderes faul.

              Kannst du uns verraten, wie und mit was du die Befehle absetzst? cronjob und knxtool? WelcheVisuAuchImmer?

              Wieso ist die Zieladresse deines "ipt:" plötzlich eine andere?

              Kannst du "tcpdump" oder "wireshark" mitlaufen lassen, um zu prüfen, ob der knxd die fünf Pakete schickt und evtl der Empfänger sie verschluckt?
              DistKV, Home Assistant, 1wire, KNX, Python, Asterisk, SMD-Lötkolben

              Kommentar


                #8
                …weil ein KO auf mehrere GAs hören kann​…
                auf wieviele eigentlich? Gibts da nen “standard”, ne offizielle Spezifikation?

                Kommentar


                  #9
                  Meist ist der Speicher im Gerät der limitierende Faktor. Gerade bei älteren Geräten konnte es sein, das bei 256 Verknüpfungen Schluß war.

                  Kommentar


                    #10
                    was kommt denn da für ne Fehlermeldung bzw. was passiert wenn in der ETS zu viele GAs programmiert werden würden?

                    sorry fürs OT

                    Kommentar


                      #11
                      Das man keine weitere Verknüpfung anlegen kann, weil das Limit von xx erreicht ist. Zumindest so in der Art.

                      Kommentar


                        #12
                        So, ich habe mal den Loglevel hochgedreht und ich sehe im Log alle 5 Gruppenadressen:

                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 4 [694:systemd_/TGr 294.483] OpenGroup 2/1/6 WO
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 0 [691:systemd_/CConn 294.483] Send(002): 00 22
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 7 [692:systemd_@1.2.73/Group 294.483] OpenGroup complete
                        ​Oct 17 15:42:01 srv44 knxd[1249540]: Layer 4 [698:systemd_/TGr 294.484] OpenGroup 2/1/14 WO
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 0 [695:systemd_/CConn 294.484] Send(002): 00 22
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 7 [696:systemd_@1.2.66/Group 294.484] OpenGroup complete
                        ​Oct 17 15:42:01 srv44 knxd[1249540]: Layer 4 [703:systemd_/TGr 294.489] OpenGroup 2/1/8 WO
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 0 [699:systemd_/CConn 294.489] Send(002): 00 22
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 7 [701:systemd_@1.2.67/Group 294.489] OpenGroup complete
                        ​Oct 17 15:42:01 srv44 knxd[1249540]: Layer 4 [706:systemd_/TGr 294.489] OpenGroup 2/1/12 WO
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 0 [700:systemd_/CConn 294.489] Send(002): 00 22
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 7 [704:systemd_@1.2.68/Group 294.489] OpenGroup complete
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 4 [710:systemd_/TGr 294.493] OpenGroup 2/1/1 WO
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 0 [707:systemd_/CConn 294.493] Send(002): 00 22
                        Oct 17 15:42:01 srv44 knxd[1249540]: Layer 7 [708:systemd_@1.2.69/Group 294.493] OpenGroup complete

                        Das waren diese Kommandos über den Cron:

                        /usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/1 0
                        /usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/6 0
                        /usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/8 0
                        /usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/12 0
                        /usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/14 0

                        Letztendlich wurden aber nur die Aktionen für die Gruppenadressen 2/1/​6 und 2/1/8 ausgeführt, bei den anderen ist nichts passiert.

                        Also der "knxd" empfängt alle 5 Anforderungen und sendet diese, dann gehen diese aber irgendwo verloren... Ich habe dann mal die Anzahl der Clients beim -E auf :1 gestellt, ich dachte mir, er hat nur eine Adresse dann alle nacheinander, aber dann hat nur eine Jalousie reagiert.

                        Werde noch mal weiter testen... Das komplette log kann ich gerne zusenden...

                        Kommentar


                          #13
                          IP Adresse ist anders, weil ich den neuen Server zusammen mit allen anderen Haustechnik Komponenten in ein eigenes VLAN gepackt habe, damit da z.B. die Kinder da nicht ran kommen. 😉

                          Der Linux Server hat die 192.168.77.44 und das Weizerl BAOS Teil die 192.168.77.50, also auch nix dazwischen.

                          Kommentar


                            #14
                            Ich habe noch einiges getestet und auch noch die Option "-B single" versucht, aber das Verhalten bleibt immer identisch.

                            Einen tcpdump habe ich auch mal gemacht, aber wo finde ich in dem TCP Paket die Gruppenadresse?

                            Aber es gehen 5x 21 Byte und 5x 10 Byte Pakete zum BAOS und es kommen 5x 21 Byte und 5x 10 Byte Pakete zurück.

                            Es sieht so aus, als wenn der "eibd" damals entweder langsamer war und alles nacheinander abgearbeitet hat und der "knxd" nun auch einiges parallelisiert und gleichzeitig macht. Kann das sein?

                            Wie kann ich dieses "alte" Verhalten wieder bekommen?

                            Es sieht so aus, als wenn der BAOS der jenige ist, der da die Pakete verschwinden lässt.

                            Kommentar


                              #15
                              Habe erstmal einen Workaround geschaffen und im Cron das so eingetragen:

                              sleep 1;/usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/1 0
                              sleep 2;/usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/6 0
                              sleep 3;/usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/8 0
                              sleep 4;/usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/12 0
                              sleep 5;/usr/lib/knxd/groupswrite ip:127.0.0.1 2/1/14 0

                              So funktioniert das erstmal, aber wenn da dann irgendwas zur gleichen Zeit noch ein Status abfragt oder sendet, dann habe ich bestimmt wieder ein Problem...

                              Ich überlege schon, ob ich da nicht den uralt eibd wieder installiere, der BAOS 770 ist ja auch schon von etwas älter, das Applikations-Programm ist von 2008, könnte ja auch sein, dass das Teil nicht mehr mit aktuellen Tools mag. Oder evtl. mal dieses Teil gegen was neueres austauschen...

                              Kommentar

                              Lädt...
                              X