Ankündigung

Einklappen
Keine Ankündigung bisher.

Reihenfolge abarbeitung knx_write

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

    [wiregate] Reihenfolge abarbeitung knx_write

    Hallo zusammen,
    ich bin gerade dabei mir ein Plugin zu schreiben um Leuchtengruppen zu definieren und teilweise Gruppen bzw. einzelne Leuchten schalten zu können.

    In diesem Kontext tritt folgende Frage auf: Werden knx_writes und knx_reads eigentlich serialisiert verarbeitet? Mein Code sieht wie folgt aus:

    Code:
    foreach $ga(@schalt_ga){
            plugin_log($plugname, "SchaltGA".$ga ); 
            knx_write($ga, $data, 1);
            my $rueck_ga = get_rueck_ga_from_schalt_ga( $xml, $ga );
            plugin_log($plugname, "Schalten RückGA".$rueck_ga." ".$data );
            knx_write($rueck_ga, $data, 1);
            @gruppen_rueck_ga_tmp = get_gruppen_rueck_ga_from_rueck_ga( $rueck_ga, $xml );
            push( @gruppen_rueck_ga, @gruppen_rueck_ga_tmp );
        }
    Im Plugin Logfile sieht die Reihenfolge der plugin_logs wie folgt aus:
    Code:
    2013-04-04 22:14:46.376,Test DMX,SchaltGA15/2/0
    2013-04-04 22:14:46.382,Test DMX,Schalten RückGA14/4/0 00
    2013-04-04 22:14:46.385,Test DMX,SchaltGA15/2/1
    2013-04-04 22:14:46.389,Test DMX,Schalten RückGA14/4/1 00
    2013-04-04 22:14:46.393,Test DMX,SchaltGA15/2/2
    2013-04-04 22:14:46.396,Test DMX,Schalten RückGA14/4/2 00
    Im eibd-log sehen die Writes wie folgt aus:

    Code:
    2013-04-04 22:14:46.428,A_GroupValue_Write,1.1.254,15/2/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
     2013-04-04 22:14:46.458,A_GroupValue_Write,1.1.254,14/4/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
     2013-04-04 22:14:46.494,A_GroupValue_Write,1.1.254,15/2/1,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
     2013-04-04 22:14:46.529,A_GroupValue_Write,1.1.254,14/4/1,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
     2013-04-04 22:14:46.566,A_GroupValue_Write,1.1.254,14/4/2,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
     2013-04-04 22:14:46.594,A_GroupValue_Write,1.1.254,15/2/2,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
    Hier werden 14/4/2 und 15/2/2 aus dem dritten Schleifendurchlauf vertauscht im Vergleich zum Plugin-Log. D.h. offensichtlich werden die writes nicht serialisiert. Warum?

    Nun lese ich später im Plugin eine zuvor geschriebene GA mit knx_read(GA,0) (aus dem Cache). Kann ich denn nun sicher gehen, dass ich den Wert, den ich zuvor geschrieben habe wieder erhalte?

    Danke,
    Stefan

    #2
    Sieh Dir das mal mit der ETS an.
    Würde mich interessieren ... wobei ich die Idee grundsätzlich nicht gut finde mit Gruppenadressen zu arbeiten die gerade erst geschrieben/gelesen wurden.
    Evtl. kannst Du ja auch das Alter im Cache auswerten oder mit lokalen Variablen ($plugin_info) arbeiten.
    Dazu müsste man aber mal genau wissen was Du vor hast.

    Grüße
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Ich schaue heute abend mal in die ETS.

      Zum Hintergrund des ganzen: Ich habe an einem Arcus-EDS DMX-GW LED-Leuchten per DMX angesteuert. Diese einzelnen Leuchten (teilweise auch RGBs) werden zu verschiedenen Gruppen zusammengefasst.

      Im Testaufbau soll es die Möglichkeite geben, die ganze Gruppe, oder einzelne Leuchten in der Gruppe zu schalten. Nun soll am Taster eine Rückmeldung aufs dessen LED angezeigt werden. Insbesondere soll auch die Rückmelde-LED des Gruppen-Tasters leuchten, wenn eine beliebige Leuchte der Gruppe eingeschaltet ist.

      Mein erstes Problem ist nun, dass das Arcus-EDS DMX-GW keine Rückmeldungen aussendet. Also bleibt mir nix anderes übrig, als das selbst zu bauen.

      Die Idee war nun, anhand eines Triggers zu ermitteln, welche DMX-Kanäle (SchaltGAs) geschaltet werden müssen. Anhand derer dann die Rückmelde-GAs ermittelt werden.

      Nun fehlt mir nur noch der Status der "Gruppen-Rückmeldunden". Hierfür sind ggf. auch weitere Rückmelde GAs relevant, die nicht im aktuellen Plugin-Durchlauf geschaltet wurden... Daher der knx_read aus dem Puffer.

      Was ich heute morgen jedenfalls schon gemacht habe war der Umbau für die gerade geschalteten GAs auf lokale Variablen. Für die anderen würde ich aber weiterhin aus dem Puffer lesen.

      Das sind meiner Meinung nach allerdings zwei voneinander getrennte Fragestellungen.
      1. Werden knx_reads/ knx_writes serialisiert? Das schau ich mir heute Abend / morgen früh mal in der ETS an.
      2. Verwendung von lokalen Variablen vs. eibd-Puffer.

      Gruß
      Stefan

      Kommentar


        #4
        Ich bin gestern leider nicht mehr dazu gekommen. Hier nun der relevante Ausschnitt aus dem ETS Gruppen-Monitor als Anhang.

        Hier siehts gleich aus wie auch im eibd-log auf dem Wiregate. Ideen?
        Angehängte Dateien

        Kommentar


          #5
          Auch wenn dieser Thread aus 2013 stammt, möchte ich diesen nochmals aufwärmen.

          Aktuell verwende ich Wiregate v1.2. In manchen Plugins, die ich verwende, kommt es auf die Reihenfolge der gesendeten Telegramme an (z.B. knx_write zum Entsperren eines Aktors und daraufhin erneutes knx_write um einen neuen Schaltbefehl auf den Aktor zu senden).

          Bislang habe ich knx_write einfach der Reihe nach in Plugins abgearbeitet und dies hatte auch soweit funktioniert. In letzter Zeit ist mir jedoch aufgefallen, dass es hier zu Problemen kommt und tatsächlich die Reihenfolge der knx_write nicht seriell erfolgt (wie bereits von sth bemerkt). Komischerweise fällt dies nun bei Plugins auf, die seit mindestens einem Jahr stabil laufen und nie auffällig geworden sind.

          Durch Suchen konnte ich leider keine weiteren Infos zur Abarbeitung der knx_write Befehle finden (außer diesem Thread hier). Ist das "chaotische" Senden der Telegramme ein gewolltes Feature oder einen Bug? Gibt es eine Möglichkeit die knx_write Reihenfolge zu beeinflussen?

          Kommentar


            #6
            Hmm... bei mir hat sich das damals "fürs Erste" erledigt gehabt, weil dann der Bau losging und ich bislang keine Zeit hatte das weiter zu vertiefen, bzw. die Prioritäten anders gesetzt wurden als, wie meine Frau es bezeichnet mit "Spielereien".

            Daher wäre ich weiterhin an einer Antwort interessiert.

            Kommentar


              #7
              Michael, wir arbeiten gerade wegen diverser Kleinigkeiten an einem minor-Update.

              Bitte mach doch ein Ticket zu Deinen Beobachtungen bei uns auf und kläre mit Gabrielle - wie schon in der Vergangenheit - die entsprechenden Details.

              Ich kann jetzt nicht sagen, ob es durch die Art und Weise der Einbindung durch die Plugins erfolgt oder durch den eibd (der übrigens auch durch das jetzige oder das folgende Minor-Update upgedatet wird).

              lg

              Stefan

              Kommentar


                #8
                Zitat von StefanW Beitrag anzeigen
                Bitte mach doch ein Ticket zu Deinen Beobachtungen bei uns auf...
                Habe ich nun getan. Das Problem lässt sich bei mir auch sehr gezielt provozieren. Bin auf die Rückmeldung vom Support gespannt.

                Kommentar

                Lädt...
                X