Ankündigung

Einklappen
Keine Ankündigung bisher.

EibPC: Lese-Anforderungen vom Bus möglich?

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

    [EibParser] EibPC: Lese-Anforderungen vom Bus möglich?

    Hallo,

    besteht eigentlich auch die Möglichkeit, dass der EibPC auf Lese-Anforderungen vom Bus antwortet? Wenn zum Beispiel auf der GA 1/0/0 von einem Busteilnehmer eine Lese-Anforderung auf den Bus gesendet wird, dass dann der EibPC entsprechend darauf antwortet (also so, als ob das L-Flag gesetzt wäre)?

    Schöne Grüsse,
    Klaus

    #2
    meines Wissen nein.

    Dazu müsste der EibPC erst mal unterscheiden können, ob es sich um ein "Lese", "Antwort" oder "normales" Telegramm handelt. Ich hatt das schon mal als Wunsch geäußert, dass z. B. die event() eine Rückgabewert hat, anhand dessen man so was unterscheiden kann.

    Dann könnte man so was machen:

    Code:
     
    if event(1/0/0)="Lesen" then write(1/0/0; "Antwort")
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Zitat von klaus Beitrag anzeigen
      Wenn zum Beispiel auf der GA 1/0/0 von einem Busteilnehmer eine Lese-Anforderung auf den Bus gesendet wird, dass dann der EibPC entsprechend darauf antwortet (also so, als ob das L-Flag gesetzt wäre)?
      Eine Leseanforderung auf eine GA erzeugt auch einen Impuls in der event()-Funktion. Allerdings muss man aufpassen, da ja ein write auf die GA auch ein Event auslöst
      [highlight=epc]
      // Impulsverlängerung
      Event=AUS
      if event('1/0/0'b01) then Event=EIN endif
      if delay(event('1/0/0'b01),100u64) then Event=AUS endif
      if Event then write('1/0/0'b01,'1/0/0'b01) endif
      [/highlight]
      Ist noch nicht ausgereift. aber vom Ansatz her wohl eine Lösung


      Es steht eine eventRead() auf der Featureliste, ist aber noch nicht umgesetzt.
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        [highlight=epc]
        // Impulsverlängerung
        Event=AUS
        if event('1/0/0'b01) then Event=EIN endif
        if delay(event('1/0/0'b01),100u64) then Event=AUS endif
        if Event then write('1/0/0'b01,'1/0/0'b01) endif
        [/highlight]
        Ist noch nicht ausgereift. aber vom Ansatz her wohl eine Lösung
        Kannst du die Lösungsidee noch kommentieren? Unterschieden wird ja nur zwischen eigenen und fremden Telegrammen für ein gewisses Zeitfenster, generell wird aber auf jedes erste Telegramm im Zeitfenster, egal ob Leseanforderung oder normales Telegramm, geantwortet.
        BR
        Marc

        Kommentar


          #5
          [highlight=epc]
          // Impulsverlängerung: Abfangen eigener Telegramme
          EventGA=AUS
          WriteGA=AUS
          if event('1/0/0'b01) and !WriteGA then Event=EIN endif
          if delay(event('1/0/0'b01),100u64) then Event=AUS;WriteGA=AUS endif
          if Event then write('1/0/0'b01,'1/0/0'b01) endif

          // Im Programm wird "irgendwo" die GA "normal" geschrieben,
          // z.B. zeitgesteuert
          if htime(12,00,00) then write('1/0/0'b01,EIN);WriteGA=EIN endif
          if htime(13,30,00) then write('1/0/0'b01,AUS);WriteGA=EIN endif
          [/highlight]
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Die eleganteste Lösung wäre, wenn man unterscheiden könnte, ob die Lese- oder Schreibanforderung vom EibPC gesendet wurde, ohne dass man dazu noch Hilfsvariablen "WriteGA" definiert.
            Sinngemäss:

            if NotOwnEvent(GA) then bla

            Das Bustelegramm enthält ja auch die Quell-Adresse. Der EibPC, bzw. die Funktion Event, müsste das also auch auswerten können: "wenn Quelle gleich EibPC, dann mach mal nix". Beim Protokollieren des Busverkehrs wird ja jetzt schon auch die Quelladresse mitgespeichert.
            Gruss Pio

            Kommentar


              #7
              Es wird zwar nicht an der Quell-Adresse erkennbar, denn hierzu müsste sie der eibPC ja erst einmal kennen (naja, ein kurzer Test würde reichen um es festzustellen).
              Aber der eibPC legt die Nachricht ja auf den Bus und empfängt sie quasi gleichzeitig als internen Event (ich bezweifel, dass z.B. bei KNXnet/IP die Nachricht tatsächlich wieder empfangen wird).

              Bei einer Lese-Anforderung würde mich der Absender auch nicht interessieren, Hauptsache man kann mit einem entsprechenden Telegramm antworten.
              BR
              Marc

              Kommentar


                #8
                Zitat von saft6luck Beitrag anzeigen
                Es wird zwar nicht an der Quell-Adresse erkennbar, ....

                Ich denke, der EibPC kennt seine eigene Busaddresse schon. Über das EibStudio könnte man die meinetwegen auch noch manuell eingeben.
                Gruss Pio

                Kommentar


                  #9
                  Zitat von pio Beitrag anzeigen
                  Ich denke, der EibPC kennt seine eigene Busaddresse schon. Über das EibStudio könnte man die meinetwegen auch noch manuell eingeben.
                  Nein, die Adresse wird laut Standard von der Busunit vergeben. Der EibPC schickt die Pakete an die Schnittstelle, die dann ihre eigene von der ETS vergebene Adresse einfügt.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    und über diese Adresse könnte theoretisch "gleichzeitig" auch ein anderes Gerät schreiben. Das hilft nicht weiter.
                    Jedes Telegramm hat ein eindeutiges Flag "lesen", "Antworten" etc. Der EibPC stellt dieses Flag im Telegrammfenster ja auch korrekt dar, kennt den Inhahlt also. Nur gibt es keine Befehle mit denen man das auswerten kann. Das ist es, was fehlt!
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #11
                      Zitat von Uwe! Beitrag anzeigen
                      Nur gibt es keine Befehle mit denen man das auswerten kann. Das ist es, was fehlt!
                      Ja, aber es ist ja noch nicht aller Tage Abend...
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        #12
                        zum Glück!
                        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                        Kommentar


                          #13
                          Zitat von enertegus Beitrag anzeigen
                          Nein, die Adresse wird laut Standard von der Busunit vergeben. Der EibPC schickt die Pakete an die Schnittstelle, die dann ihre eigene von der ETS vergebene Adresse einfügt.
                          Hab ich da irgendwas nicht begriffen?

                          Also, ich hab der Busschnittstelle, an der mein EibPC hängt, eine eindeutige und einmalige Adresse vergeben. Die kann ich ja wohl irgendwo eintragen, denn ich kenne sie.

                          @Uwe!

                          2 gleiche Adressen am Bus machen sich nicht gut.

                          Vielleicht reden wir ja aneinander vorbei. Mein EibPC zeigt z.B. folgende Telegramme an:

                          % 2010-11-17 23:42:49 | Sender: 1.1.40 | GA: "Grenzwert 2 Regen AUS-6/1/7" | Wert: EIN | Typ: Binärwert | Schreiben
                          % 2010-11-17 23:42:53 | Sender: 1.1.65 | GA: "OG Feuchte Ist Zimmer 4 (Eltern Schlafen) MV-3/6/52" | Wert: 57.120000000000005 | Typ: 16-Bit-Fliesskommazahl | Schreiben
                          % 2010-11-17 23:42:57 | Sender: 1.1.55 | GA: "EG Feuchte Ist Eingang MV-3/5/56" | Wert: 53.04 | Typ: 16-Bit-Fliesskommazahl | Schreiben
                          % 2010-11-17 23:43:05 | Sender: EibPC | GA: "vom EibPC Command-12/0/0" | Wert: 1 | Typ: positive Ganzzahl | Schreiben
                          % 2010-11-17 23:43:14 | Sender: 1.1.40 | GA: "Messwert Temperatur Aussen-6/1/100" | Wert: 2.7 | Typ: 16-Bit-Fliesskommazahl | Schreiben

                          Und fürher sah das Zeug mal so aus:

                          12 08:42:27.214 vom Bus L 1.1.40 2/4/1 Priorität 1 Windwarnung 6 1 bit Write $00
                          13 08:42:27.605 vom Bus L 1.1.2 EibPC 12/0/0 vom EibPC Command 6 4 byte Zähler ohne Vorzeichen Write 1 Impulse
                          14 08:42:27.698 vom Bus L 1.1.55 MicroVis C2 EG 3/5/56 EG Feuchte Ist Eingang MV 6 2 byte Write 15 60 | 55,04


                          Na, welche Adresse hat wohl die EibPC-Schnittstelle ???

                          Aber vielleicht ist ja die Problematik auch nicht klar:

                          Was passiert, wenn ich folgendes mache:

                          read(TestGA)
                          if event(TestGA) then bla endif

                          --> irgendwann, wenn die Antwort auf die Read-Anfrage kommt, wird Event aktiv und bla ausgeführt.
                          Das will ich aber nicht! Ich will bla nur ausführen, wenn z.B. der Taster gedrückt wird und auf TestGA sendet.

                          also:

                          read(TestGA)
                          if event(TestGA) and !("adresse des anfragenden Teilnehmers"== EibPC) then bla endif


                          Bei der Konstruktion ist es noch klarer:
                          write(TestGA)
                          if event(TestGA) and !("adresse des schreibenden Teilnehmers"== EibPC) then bla endif
                          Gruss Pio

                          Kommentar


                            #14
                            Zitat von pio Beitrag anzeigen
                            Hab ich da irgendwas nicht begriffen?
                            read(TestGA)
                            if event(TestGA) and !("adresse des anfragenden Teilnehmers"== EibPC) then bla endif
                            Bei der Konstruktion ist es noch klarer:
                            write(TestGA)
                            if event(TestGA) and !("adresse des schreibenden Teilnehmers"== EibPC) then bla endif
                            Das schreit nach Featurewunsch (ist sicher nicht unmöglich). Aber die Features für die nächste Runde sind ja schon in der Röhre, d.h. das kann noch dauern...
                            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                            Enertex Produkte kaufen

                            Kommentar


                              #15
                              Zitat von pio Beitrag anzeigen
                              Hab ich da irgendwas nicht begriffen?

                              2 gleiche Adressen am Bus machen sich nicht gut.

                              Vielleicht reden wir ja aneinander vorbei.

                              Na, welche Adresse hat wohl die EibPC-Schnittstelle ???
                              2 gleiche Adressen mögen sich evtl. nicht gut machen, aber bei den neuen IP-Schnittstellen hängen bis zu vier Geräte gleichzeitig dran. (wobei ich zugeben muss, dass ich so eine noch nicht im Einsatz habe, und nicht ausschließen kann, dass sie tatsächlich auch 4 PA bekommt. Glaube ich aber nicht)
                              Und per Tunneling können auch bei "Einfach-IP-Schnittstellen" zwei Geräte die gleiche Schnittstelle nutzen.
                              Aus EIB-Sicht ist das auch ok, weil da gibt es nur die Schnittstelle und die hat eine eindeutige Adresse. Das es mehrere gibt, die sich dieser Schnittstelle bedienen, sieht der Bus nciht und muss ihn auch nicht interessieren.


                              Zitat von pio Beitrag anzeigen
                              Aber vielleicht ist ja die Problematik auch nicht klar:

                              read(TestGA)
                              if event(TestGA) and !("adresse des anfragenden Teilnehmers"== EibPC) then bla endif
                              Mit dem EibPC sicher realisierbar (hat Michael ja auch schon angedeutet), entspricht aber eigentlich nicht der EIB-Logik! Kein anderes EIB-Gerät kann unterscheiden WER gesendet hat! Es wird immer nur unterschieden über WELCHE GA gesendet wird! Wenn es also einen Unterschied machen soll, ob der Taster oder der EibPC das Licht einschaltet, dann wäre das eigentlich ein Fall für zwei getrennte GA!

                              Wobei ich Dir Recht gebe, dass es natürlich einen gewissen Charme hat auch die PA abfragen zu können. Mit dem EibPC, wie gesagt, sicher machbar. Das ist dann aber wirklich noch mal ein anderer Wunsch als meiner mit der Unterscheidung Read/Write/Answer
                              ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                              Kommentar

                              Lädt...
                              X