Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Wie geht Status lesen mit eibd groupread etc.

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

    - √ - Wie geht Status lesen mit eibd groupread etc.

    ich habe eibd seit langerem unter sidux perfekt laufen und kann problemlos alles per bash schalten a la:
    groupswrite ip:localhost 2/0/0 1

    was ich allerdings noch nicht hinbekommen habe, ist den Status oder Lamellenwinkel bytes z.B. der Jalousienaktoren lesen. Natürlich verwende ich hierzu die mit der ETS3 definierten Adressen, die ich mit den ETS3 tools unter Windows auch lesen kann.

    Folgende tools hab ich probiert, bekomme aber statt Datenbyte maximal ein "Send request" in stdout
    groupread ip:localhost 2/3/0
    groupcacheenable ; groupcacheread ip:localhost 2/3/0

    Nachtrag-1: groupcacheread hab ich zwar hinbekommen, hier kann ich jedoch nur zurücklesen, was ich über groupswrite auf den BUS geschrieben habe, nicht jedoch die Statusbytes.

    Nachtrag-2: groupreadresponse ip:localhost 2/4/0 bringt in stdout sofort:
    Send request
    Read from 0.0.0
    wartet dann ca. 10 Sekunden ohne einen Wert zu liefern. Sieht irgendwie nach timeout aus.


    Leider habe ich keine Doku oder Beispiele gefunden, die diese Tools genauer erklart.
    Weiß jemand wie das geht ?

    P.S. der eibd ist mit den Optionen "-D -S -d -i" gestartet.


    Danke für jeden Tipp,
    Joachim

    #2
    mach mal in einem Terminalfenster:

    groupsocketlisten ip:localhost

    und in einem zweiter machst du:

    groupread ip:localhost 2/3/0

    Dann solltest du im ersten Terminalfenster sowohl das read_request als auch das read_response Telegramm sehen.

    Das groupreadresponse sollte aber auch funktionieren. Evtl. ist das Read-Flag deiner gelesenen GA nicht gesetzt, dann kommt natürlich auch keine Antwort. Wenn Du einen Schaltaktor liest, dass solltest du die Status-GA und nicht die Schalt-GA auslesen, denn i.d.R. ist nur bei der ersten dann Read-Flag gesetzt.

    Ich hab beide Vorgehensweise gerade bei mir noch mal ausprobiert. Funktionieren beide problemlos.

    Kommentar


      #3
      vielen Dank jonofe für den Vorschlag. Ich kann zwar prinzipiell im grouplisten terminal alles sehen, was ich im zweiten terminal über den eibd auf den BUS schreibe, allerdings kommen auf groupread commands keine Daten.

      Hier ein kleiner Auszug des grouplisten terminals mit ein paar Versuchen:
      Read from 0.0.0 to 2/3/0
      Read from 0.0.0 to 1/1/2
      Write from 0.0.0 to 1/0/2: 01
      Write from 0.0.0 to 1/0/2: 00
      Read from 0.0.0 to 1/1/2

      Klar habe ich hier für groupread die Status-GA der Aktoren benutzt.
      >Evtl. ist das Read-Flag deiner gelesenen GA nicht gesetzt,
      Muss das in der ETS Konfiguration irgendwo extra gesetzt werden ?
      Was mich ja immer noch wundert, ist daß ich die Status-GA über die ETS tools einwandfrei lesen kann. Nur über eibd und tools kommen einfach keine Daten.
      Gruß, Joachim

      Kommentar


        #4
        Siehst Du denn mit groupsocketlisten überhaupt irgendwas was vom Bus kommen ?

        Wenn das lesen mit ETS geht, ist das Leseflag richtig gesetzt und dann sollte es auch so wie beschrieben klappen.

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

        Kommentar


          #5
          Zitat von makki Beitrag anzeigen
          Siehst Du denn mit groupsocketlisten überhaupt irgendwas was vom Bus kommen ?
          Makki
          Sorry, das was ich in der letzten Post unter "grouplisten" dargestellt hatte war in in der Tat groupsocketlisten:

          root@vdr:# groupsocketlisten ip:localhost
          Read from 0.0.0 to 2/3/0
          Read from 0.0.0 to 1/1/2
          Write from 0.0.0 to 1/0/2: 01
          Write from 0.0.0 to 1/0/2: 00
          Read from 0.0.0 to 1/1/2

          Habe gerade mal upgedated:
          Richte eibd-client-sources ein (0.0.4) ...
          Richte eibd-clients ein (0.0.4) ...
          Richte eibd-server ein (0.0.4) ...
          root@vdr:~# /etc/init.d/eibd restart
          Restarting EIB deamon: eibd.

          Leider keine Veränderung:
          groupsocketlisten ip:localhost
          Read from 0.0.0 to 1/1/2
          Write from 0.0.0 to 1/0/2: 00
          Write from 0.0.0 to 1/0/2: 01
          Write from 0.0.0 to 1/0/2: 00

          Write werden korrekt mit DAten dargestellt, Read, jedoch ohne.

          Darin liegt das eigentliche Problem, es müsste eigentlich funktionieren, nur tut es offensichtlich nicht. HAt jemand Vorschläge, wie man das debuggen könnte ?

          Kommentar


            #6
            Da stehen nur Telegramme drin, die von eibd selbst kommen (0.0.0), nicht vom Bus (anderen Teilnehmern) daher die Frage. Ich tippe darauf dass der eibd garnichts vom Bus bekommt..
            Welche Schnittstelle ? Was sagt bcuaddrtab <url-der-Schnittstelle> ? Das wäre ein erster Ansatz, aonsten, je nach Art der Schnittstelle geht vielleicht nur Tx.

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

            Kommentar


              #7
              Zitat von makki Beitrag anzeigen
              Da stehen nur Telegramme drin, die von eibd selbst kommen (0.0.0), nicht vom Bus (anderen Teilnehmern) daher die Frage. Ich tippe darauf dass der eibd garnichts vom Bus bekommt..
              Welche Schnittstelle ? Was sagt bcuaddrtab <url-der-Schnittstelle> ? Das wäre ein erster Ansatz, aonsten, je nach Art der Schnittstelle geht vielleicht nur Tx.

              Makki
              bcuaddrtab usb:1:7:1:0
              Size: 1

              Mit busmonitor1 kann ich sehr wohl lesen, was auf dem BUS läuft.
              Hier ein Auszug, bei dem ich nicht über den eibd, sondern über Taster mit Busankoppler das Licht ein- und ausgeschaltet habe:

              Code:
              busmonitor1 ip:localhost
              LPDU: BC 11 06 08 00 E1 00 81 3C :L_Data low from 1.1.6 to 1/0/0 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write (small) 01 
              LPDU: CC :ACK
              LPDU: BC 11 03 09 00 E1 00 81 38 :L_Data low from 1.1.3 to 1/1/0 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write (small) 01 
              LPDU: CC :ACK
              LPDU: BC 11 06 08 00 E1 00 80 3D :L_Data low from 1.1.6 to 1/0/0 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write (small) 00 
              LPDU: CC :ACK
              LPDU: BC 11 03 09 00 E1 00 80 39 :L_Data low from 1.1.3 to 1/1/0 hops: 06 T_DATA_XXX_REQ A_GroupValue_Write (small) 00 
              LPDU: CC :ACK

              Kommentar


                #8
                Gut, ein einmaliges "bcuaddrtab -w 0 usb:1:7:1:0" wird das Problem dann vermutlich nachhaltig lösen
                Ausser es ist eine bestimmte ABB/BJ USB-Schnittstelle bei der das vor jedem Start von eibd notwendig ist. Falls es diese ist wäre ich an dem genauen Typ extrem interessiert ansonsten aber auch (lsusb -v), siehe hier

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

                Kommentar


                  #9
                  Zitat von makki Beitrag anzeigen
                  Gut, ein einmaliges "bcuaddrtab -w 0 usb:1:7:1:0" wird das Problem dann vermutlich nachhaltig lösen Makki
                  Leider nicht. Ich kann nach besagtem Befehl das erfolgreiche Setzen der
                  bcuaddrtab usb:1:7:1:0
                  Size: 0
                  bestätigen, das Problem blieb aber unverändert bestehen. Also weitehin keine Daten bei Read, aber bei write:
                  root@vdr:~# groupsocketlisten ip:localhost
                  Read from 0.0.0 to 1/2/0
                  Write from 0.0.0 to 1/0/2: 01
                  Write from 0.0.0 to 1/0/2: 01
                  Write from 0.0.0 to 1/0/2: 00
                  Read from 0.0.0 to 1/1/3
                  Read from 0.0.0 to 1/2/0
                  Read from 0.0.0 to 2/3/0

                  Daraufhin hab ich den eibd neu gestartet, mit dem Erfolg, dass nun ein groupswrite zwar ohne Fehlermeldung ausgeführt wird, aber sich nichts mehr schalten lässt !
                  Also "bcuaddrtab -w 1 usb:1:7:1:0" ausgeführt, eibd erneut gestartet und ich kann wenigstens wieder Schalten per groupswrite. Nur bin ich genauso ratlos wie vorher.
                  Das usb-IF ist übrigens:
                  root@vdr:~# findknxusb
                  Possible addresses for KNX USB devices:
                  device 1:7:1:0 (Hager Electro:KNX-USB Data Interface)

                  lsusb listet das lediglich als
                  Bus 001 Device 007: ID 135e:0025

                  Also bcuaddrtab auf 0 zu setzten war leider kein Erfolg.
                  Die Frage, die sich mir stellt:
                  warum kann busmonitor1 den BUS-Traffic mitschreiben, aber ein groupread kein Statusregister lesen ?
                  Leider hab ich nur ein knx-IF, sonst würde ich mit busmonitor mitsxchreiben, was ETS3 bus tools über den BUS schicken um an die Statusbytes zu kommen.

                  Kommentar


                    #10
                    Komisch.. eibd stoppen, "bcuaddrtab -w 0 <url>", mit "bcuaddrtab <url>" kontrollieren, eibd starten (und dazwischen das IF nicht an der ETS verwenden) sollte es eigentlich dann definitiv bringen.
                    Das mit dem Busmonitor kann ich nicht wirklich erklären, aber das ist eine andere Betriebsart (alles sehen aber nicht schrieben), es liegt IMHO ziemlich sicher an der Adresstabelle.
                    "lsusb -v", hat zwar damit nichts zu tun hilft mir aber trotzdem zur vervolsständigung einer Datenbank..

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

                    Kommentar


                      #11
                      Gelöst: Wie geht Status lesen mit eibd groupread etc.

                      Zitat von makki Beitrag anzeigen
                      Komisch.. eibd stoppen, "bcuaddrtab -w 0 <url>", mit "bcuaddrtab <url>" kontrollieren, eibd starten (und dazwischen das IF nicht an der ETS verwenden) sollte es eigentlich dann definitiv bringen.Makki
                      BINGO !!! Super Makki !!!
                      root@vdr:~# /etc/init.d/eibd stop
                      root@vdr:~# bcuaddrtab -w 0 usb:1:7:1:0
                      Size 0 written
                      root@vdr:~# /etc/init.d/eibd start
                      root@vdr:~#
                      root@vdr:~# groupsocketlisten ip:localhost
                      Read from 0.0.0 to 2/3/0
                      Response from 1.1.1 to 2/3/0: 02
                      Read from 0.0.0 to 1/2/0
                      Response from 1.1.3 to 1/2/0: 00 05 20 4A

                      Kaum macht man's richtig, schon funktionierts ;-}

                      Beim vorigen Versuch hatte ich den eibd nicht vor dem Setzten der bcuaddrtab auf 0 gestoppt, da ich nicht wusste, dass das ohne den läuft.

                      Hast Du mir noch einen link, wo ich nachlesen kann, was es mit der bcuaddrtab überhaupt auf sich hat ?
                      Und war das jetzt eine einmalige Sache, oder muss ich das nach jedem Rebooten oder eibd beenden erneut setzten ?

                      Jedenfalls vielen Dank für die Unterstützung aller !

                      Gruß, Joachim

                      Kommentar


                        #12
                        Naja, das mit der adresstabelle war eines der Dinge über die ich auch als erstes extrem gestolpert bin. Das Thema schlüssig zu erklären muss ich anderen überlassen, ich hab nur die Wirkung und Lösung kapiert
                        Link, nicht wirklich, In der bdusdk-Doku steht ein bisschen, ebenso im Wiki desselben
                        bcuaddrtab -w 0 sollte man (soweit ich das verstanden habe!) definitv nicht jedesmal/ständig aufgrufen weiles sich wohl um ein EEProm handelt und man es damit totschreibt.
                        Nach jedem Fremdeinsatz der Schnittstelle mit der ETS könnte es evtl. aber erneut nötig sein.
                        Genau z.B. das versuche ich in einem Init-Script, das es dann auch öffentlich geben wird, abzufangen und automatisch zu machen aber dafür brauche ich u.a. Daten, daher:
                        Bevor nun noch das "gelöst"-Hackerl gesetzt wird, hätte ich noch Interesse an den "lsusb -v"

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

                        Kommentar


                          #13
                          Zitat von makki Beitrag anzeigen
                          Bevor nun noch das "gelöst"-Hackerl gesetzt wird, hätte ich noch Interesse an den "lsusb -v" Makki
                          Klar doch, anbei in voller Länge.
                          Das mit dem Rücksetzten der bcuaddrtab kann man ja auch leicht in den Start des eibd in /etc/init.d/eibd einbauen und ein check vorschalten ob die Size != 0 ist.
                          Jetzt, da mein Problem gelöst ist ergeben sich vielfältige Möglichkeiten. So kann ich z.B die Betriebsstundenzähler aller Lampenaktoren lesen, und die Position aller Jalousien... Klasse !

                          Schönes WE und schöne Osterfeiertage,
                          Joachim
                          Angehängte Dateien

                          Kommentar


                            #14
                            Der Thread hat mir sehr geholfen - bin fast verzweifelt warum ich nicht vom Bus lesen konnte. Bei einer eine anderen Installation mit GIRA USB Schnittstelle kein Problem, hier war BJ USB Installiert.

                            Code:
                            device 3:3:1:0 (Busch-Jaeger Elektro GmbH:KNX-USB Interface (Flush mounted))
                            Code:
                            Device Descriptor:
                              bLength                18
                              bDescriptorType         1
                              bcdUSB               1.01
                              bDeviceClass            0 (Defined at Interface level)
                              bDeviceSubClass         0 
                              bDeviceProtocol         0 
                              bMaxPacketSize0         8
                              idVendor           0x145c 
                              idProduct          0x1330 
                              bcdDevice            1.01
                              iManufacturer           1 Busch-Jaeger Elektro GmbH
                              iProduct                2 KNX-USB Interface (Flush mounted)
                              iSerial                 0 
                              bNumConfigurations      1
                              Configuration Descriptor:
                                bLength                 9
                                bDescriptorType         2
                                wTotalLength           41
                                bNumInterfaces          1
                                bConfigurationValue     1
                                iConfiguration          0     bmAttributes         0x80
                                  (Bus Powered)
                                MaxPower               50mA
                                Interface Descriptor:
                                  bLength                 9
                                  bDescriptorType         4
                                  bInterfaceNumber        0
                                  bAlternateSetting       0
                                  bNumEndpoints           2
                                  bInterfaceClass         3 Human Interface Device
                                  bInterfaceSubClass      0 No Subclass
                                  bInterfaceProtocol      0 None
                                  iInterface              0 
                                    HID Device Descriptor:
                                      bLength                 9
                                      bDescriptorType        33
                                      bcdHID               1.01
                                      bCountryCode            0 Not supported
                                      bNumDescriptors         1
                                      bDescriptorType        34 Report
                                      wDescriptorLength      56
                                     Report Descriptors: 
                                       ** UNAVAILABLE **
                                  Endpoint Descriptor:
                                    bLength                 7
                                    bDescriptorType         5
                                    bEndpointAddress     0x81  EP 1 IN
                                    bmAttributes            3
                                      Transfer Type            Interrupt
                                      Synch Type               None
                                      Usage Type               Data
                                    wMaxPacketSize     0x0040  1x 64 bytes
                                    bInterval               2
                                  Endpoint Descriptor:
                                    bLength                 7
                                    bDescriptorType         5
                                    bEndpointAddress     0x02  EP 2 OUT
                                    bmAttributes            3
                                      Transfer Type            Interrupt
                                      Synch Type               None
                                      Usage Type               Data
                                    wMaxPacketSize     0x0040  1x 64 bytes
                                    bInterval               2
                            Device Status:     0x0000
                              (Bus Powered)
                            Muss ich bei dieser Schnittstelle jedes mal bcuaddrtab vorm start von eibd aufrufen?

                            Kommentar


                              #15
                              Zitat von airmax Beitrag anzeigen
                              Muss ich bei dieser Schnittstelle jedes mal bcuaddrtab vorm start von eibd aufrufen?
                              Wenn die Adresstabelle nach dem wiederanstecken nicht immernoch 0 ist oder nicht alle Telegramme ankommen: ja
                              Nach jedem restart aber eigentlich nicht, nur wenn die USB reinitialisiert wurde.. Aber nachdem das nicht feststellbar ist: Ja.

                              Mein Vorschlag: Mal den Hersteller fragen, warum das Ding defekt ist und sich das nicht merken kann
                              (klingt hart, ist aber die einzige Möglichkeit wie wir aus der leidigen Nummer mittelfristig rauskommen)

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

                              Kommentar

                              Lädt...
                              X