Ankündigung

Einklappen
Keine Ankündigung bisher.

Telegramme ACKen?

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Telegramme ACKen?

    Hi
    ich habe folgendes Szenario:
    der Gira HS berechnet mir Stromverbrauchswerte - die das Wiregate in eine schöne RRD grafik speichern soll (da liegen alle anderen RRDs, ich will keine Gira Archiv)

    Dafür sendet der HS die Werte auf den BUS - und im Wiregate läuft ein plugin das die Werte in eine RRD schreibt.
    Im Busmonitor habe ich nun gesehen das alle Telegramme repeated werden... weil sie niemand ACKt.

    Gibt es eine möglichkeit
    a) die Telegramme zu ACKen
    b) eine ähnlich einfache Möglichkeit wie senden auf ein KO und Wiregate knx_read("1/2/3",86400,5) - aber statt über den Bus das Netzwerk zu verwenden.

    Danke
    Gruß
    Thorsten

    #2
    Das alte ACK-Problem Das ist so alt wie "virtuelle" GA's in HS oder WG..

    Also es ist - in möglichst kurzer Form - so:
    Wer ACKed?
    - Linienkoppler (inkludiert IP-Router)
    - Ein adressiertes KNX-Gerät auf derselben Linie (z.B. Aktor<->Taster)
    - WG mit TP-UART (weil nur damit möglich und es defakto ein IPR und damit LK ist -> geht mit den anderen Anbindungsarten ausser TP-UART jedoch physikalisch/technisch einfach nicht!)

    -> Also irgendwer muss irgendwo das (i)ACK auf die Linie bringen, sonst gibts Telegrammwiederholungen.
    Das ist IMHO etwas Missverständlich: ein (i)ACK bestätigt *nicht* unbedingt den Empfang am Zielgerät sondern ggfs. auch nur, das ein Telegramm weitergeleitet wurde..

    Per KNX-Telegramm ist aber sicherlich der einfachste und angedachte Weg. Wobei es natürlich auch per UDP direkt ginge, sollten sich genug Beispiel-Plugins finden, die auf UDP horchen..

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Sorry das ich mit so altem Kram nerv
      Aber ich habe mir erhofft das es eine einfache/dokumentierte Lösung gibt und wenig selbst versucht zu analysieren.

      Einen TP-Uart ("alt", Seriell) habe ich am WG (HS spricht über WG/Eibd mit netz).
      Aber ich denke das WG ACK nicht - da es ja der Absender ist... (ich spreche KNX über IP vom HS zum WG - und wundere mich das ich Wiederholungen im Bus habe... argh)

      Linienkoppler habe ich als Verstärker - bringt mir auch nichts :-( Außerdem haben die Telegramme ja praktisch nichts auf dem "richtigen" Bus zu suchen...

      Also mach ich mich mal auf die Suche nach Beispiels-Plugins. Vor allem will ich mir ja 3 Jahre RRD-Telergramme erhalten - und nicht neue anfangen...

      Gruß
      Thorsten

      Kommentar


        #4
        Dann sollte das WG jedoch ACKen - auch "eigene" Telegramme!*

        Ausser das wurde absichtlich abgeschaltet, das geht aber nur durch manuellen root-Eingriff via SSH (beim eibd *kein* Parameter "--tpuarts-ack-all-group" bzw. EIBD_NOACK in /etc/default/eibd)

        *) das ist nach KNX-Standard nur in manchen Betriebsarten - nämlich als LK so 100% richtig, löst aber eben genau dieses Problem.. Das ich schon mit dem HS hatte, lange bevor es das WG gab..

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #5
          Hm - ich habs nicht abgeschaltet.
          Derzeit zeigt mir "ps aux" das an:
          /usr/bin/eibd -e 1.1.0 -c -S -D -i -T -R --tpuarts-disch-reset --tpuarts-ack-all-group -d -u --pid-file=/var/run/eibd.pid -c tpuarts:/dev/ttyS0

          Sollte doch passen? (da hab ich imho nie rumgefummelt, ist aber Tunneling und Routing-Server - aber auch das einzige KNX/IP-Interface)

          Egal - besser ist ja UDP. Also ich sende per HS ein UDP Paket an das WG per "EIB/IP-Telegramme senden". Dabei Kommunikationsobjekt als Binärdaten (oder Klardaten?)
          Im Plugin mache ich das etwa so?
          Code:
          ##################
          ### DEFINITION ###
          ##################
          
          my $socknum = 6;                # Eindeutige Nummer des Sockets +1
          
          # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
          $plugin_info{$plugname.'_cycle'} = 300;
          
          my $recv_ip = "192.168.0.200"; # Empfangsport (UDP, wie in Socket-Einstellungen)
          my $recv_port = "50100"; # Empfangsport (UDP, wie in Socket-Einstellungen)
          
          #.. usw.
          
          #######################
          ### ENDE DEFINITION ###
          #######################
          
          # Hauptverarbeitung
          # or ($fh and eof($socket[$socknum]))
          if (!$socket[$socknum]) { # socket erstellen
              if (defined $socket[$socknum]) { #debug
                  if ($socket[$socknum]->opened) { $socket[$socknum]->close(); }
                  undef $socket[$socknum];
              }  #debug
              $socksel->remove($socket[$socknum]);
              $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                        Proto => "udp",
                                        LocalAddr => $recv_ip
                                			)
                   or return ("open of $recv_ip : $recv_port failed: $!");
              $socksel->add($socket[$socknum]); # add socket to select
              $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
              return "opened UDP-Socket $socknum";
          } 
          elsif ($fh) { # Read from UDP-Socket
              my $buf;
              recv($fh,$buf,255,0);
              update_rrd("Momentanverbrauch Test","",$buf);
          }
          return;
          Danke für´s helfen :-)

          Gruß
          Thorsten

          Kommentar


            #6
            Dann muss es aber "ACK"en, also schon komisch
            Wo hast du diese Telegrammwiederholungen denn genau gesehen (also Busmonitor ETS [wie verbunden?],WG, HS?

            UDP: geht natürlich genauso, ist aber IMHO nicht bequemer oder besser.
            Denn das löst das Problem mit den Telegrammwiederholungen ja nicht und das wird immer wieder ärgern/Probleme machen - oder bestenfalls nur den Bus zumüllen.

            Makki
            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
            -> Bitte KEINE PNs!

            Kommentar


              #7
              Hi
              UDP ist in diesem Fall "besser" weil das sehr häufige Telegramme sind die nur zwischen HS und WG gebraucht werden - also den Bus wirklich nur unnötig zumüllen.
              Die Wiederholungen sehe ich in der ETS per Routing über das WG/Eibd auf den Bus zugreifen.
              (Gelbe Telegramme, Flags R)
              Komisch dabei: Zeitstempel ist zwischen 1. und wiederhotem Telegram komplett identisch - die Spalte "Rout" zeigt beim "normalen Telegramm" 4, beim wiederholten 6 an.
              Absender ist immer der HS.

              Gruß
              Thorsten

              Kommentar


                #8
                Ich lasse das bewusst "öffentlich" weil es so nicht sein kann/darf/soll und das auch jeder lesen sollte.
                Hab das eben nochmal in selbiger Kombination getestet (ist mein Haus eine Testumgebung? ich fürchte ja! Mit aktuell vier Telegrammen/sekunde die ich live an den LED's vor mir sehe: aber ne ganz gute ):
                Das darf in dieser Konstellation nicht sein, das da Telegrammwiederholungen auftreten.

                Also da ist was anderes im argen(?). Mit ner FT1.2 am HS ohne WG+TP-UART wäre das "normal" aber so = ?
                Bitte mehr Details über sonstige Teilnehmer (oder auch gerne ein WireShark-log, eMail ist ja bekannt), ich tippe da momentan aus dem Bauch eher auf ne FB o.ä. die das Multicast dumpf wiederholt, um das T-Offline-TV glücklich zu machen. So oder so ähnlich..

                Makki

                P.S.: Ums UDP geht mir dabei ja garnicht, das mag im Einzelfall natürlich geschickter (aber meist nicht einfacher) sein.
                Poste das komplette (HS+WG) zum Schluss, da findet sich vielleicht noch die ein oder andere Optimierung wenn man WG & HS kennt
                Ich würde z.B. wenn alle Werte "in einem Rutsch" rüberschicken, simple Sache im HS, im WG-Plugin eine Zeile mit "unpack/split" mit ";" "," o.ä.
                EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                -> Bitte KEINE PNs!

                Kommentar

                Lädt...
                X