Ankündigung

Einklappen
Keine Ankündigung bisher.

Lösungsansatz GA 1 bit in 1 byte wandeln

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

    [wiregate] Lösungsansatz GA 1 bit in 1 byte wandeln

    Hallo,

    ich habe das Problem das meine Rolladen Aktoren für eine Positionsfahrt nur ein 1 Byte Szenen KO anbietet. Die Szenen sind vor defieniert > Rolladen auf 1/2 , 1/4 und 3/4.
    Ich möchte jetzt über meine Quadra die Rolladen auf eine Beschattungsposition fahren. Dort sind die Möglichkeiten für eine Beschattungsfahrt entweder 1Bit > 0/1 oder 8 bit > 0-100%.

    Der einfachste Lösungsansatz den ich mir jetzt überlegt hatte, wäre das 1Bit KO der Quadra über ein Plugin im Wiregate mit dem 1Byte KO im Rolladenaktor zu verbinden.
    Also eine GA mit dem 1 Bit KO Beschattungsposition in der Quadra verknüpfen. Und entsprechend eine GA mit dem 1 Byte Szenen KO im Rolladenaktor verbinden. Die Verknüpfung der beiden GA's halt dann über das WG Plugin.
    Stell mir das so vor.
    Plugin lieste über knx_read die GA von der Quadra. Ist diese 1 schreibt das Plugin über knx_write die Szenen GA für den Rolladenaktor.

    Jetzt lese ich mich schon den ganzen Morgen in das Thema WG Plugin ein. Aber irgendwie macht es da bei mir nicht klick !! Hab auch schon ein paar Plugins im WG laufen. Aber die halt nur entsprechend aus der Plugin Sammlung übenommen und angepasst.

    Kann mir da irgend jemand auf die Sprünge helfen, wie das zu lösen wäre. Denke ja das der Code nicht all zu groß ist. Nur fehlt mir halt das entsprechende Know-How.

    Gruß

    Marco

    #2
    Sollte im Prinzip einfach sein:
    Nicht knx_read sondern plugin_subscribe auf die 1bit GA's der Quadra (meine wartet noch auf das Heinzelmännchen das sie montiert)
    Das Grundprinzip sollte in diversen Plugins ersichtlich sein.
    Schwellwert oder Nacht-dimmen kommt den von der Funktion her am nächsten..

    Aber ganz ehrlich, Tipp vom Küken: bei sowas grundsätzlich schon recht vertracktem wie Jalousiesteuerung ist es erheblich einfacher, sich einen gescheiten Aktor zu kaufen der das selber kann

    Referenzfahrt, über oben/unten, all das Zeugs..

    Ich spreche aus Erfahrung, ich habe selbst 1J mit dem zwar günstigen (Bucht) aber dummen Aktor mit externer Logik an der Markise rumgefummelt - dem Positionierung usw. "beizubringen" - und mir dann letztendlich doch einen gescheiten gekauft, weil ich die Nase davon voll hatte.. und die Quadra, weil ich davon eben auch Nase voll, Beschattung via eigener Logik (hier: im Anfang HS) ist eine sisiphus-Aufgabe..

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

    Kommentar


      #3
      Das Grundprinzip sollte in diversen Plugins ersichtlich sein.
      Schwellwert oder Nacht-dimmen kommt den von der Funktion her am nächsten..
      ..genau mit den Plugins hatte ich mich auch beschäftigt. Das war auch der entscheinde Hinweis sich doch damit noch etwas intensiver zu beschäftigen.
      Habs dann jetzt mit plugin_subscribe hinbekommen.

      Die erste Überlegung war auch die Aktoren zu tauschen. Hab mir dann aber noch mal die Szenen-Funktion des Aktors angeschaut und kam zur der Überlegung das eine Positionsfahrt 1/4, 1/2 und 3/4 für das erste reichen könnten. Daher der Versuch das über ein Plugin zu lösen.
      Der Test-Rolladen funktioniert bisher recht gut.
      ....die Entscheidung ist daher vorerst mal verschoben aber noch nicht verworfen

      Kommentar


        #4
        Und wenns fertig ist: das posten nicht vergessen, hilft allen

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

        Kommentar


          #5
          Also bei mir tuts seit heute dieses "plugin" (im zusammenkopieren war ich noch nie schlecht)
          Code:
          # Beta-Version
          #
          # Plugin bit in byte
          # ga1 = GA
          # wert = Wert der auf die GA gesendet werden soll 
          # wet2 = Wert der bei 0 gesendet wird
          
          	
          	
          my $trigger_ga = '0/0/2';  # Aufruftrigger 
          $plugin_subscribe{$trigger_ga}{$plugname} = 1;
          
          
          my @GAs;
          push @GAs, { name => "Zwang", ga1 => "0/0/15", wert => 3 ,wert2 => 0};
          
          	
          
          
          	
          if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $trigger_ga && defined $msg{'value'} && $msg{'value'} == "1" ) {
          
                  foreach my $element (@GAs) {
                          knx_write($element->{ga1}, $element->{wert}, 2.001);    
                  }
          }
          
          if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $trigger_ga && defined $msg{'value'} && $msg{'value'} == "0" ) {
          
                  foreach my $element (@GAs) {
                          knx_write($element->{ga1}, $element->{wert2}, 2.001);    
                  }
          }
          return 0;

          Kommentar


            #6
            ...das ist das schöne an diesem Forum. Das es immer wieder jemand weiteres gibt der an der selben Lösung bastelt

            Also mein experimenteller Code sieht so aus. Funktioniert soweit. Jedoch verzichte ich auf eine Reaktion des Plugin bei "0". Da dann keine Szene nötig ist. Wäre natürlich problemlos zu ergänzen. GA's sind im WG angelegt. Daher kein DPT im Code.


            Code:
            my $beschattung_ga_sektor2 = "4/4/19"; # Gruppenadresse 1Bit Beschattung Ja/Nein
            my $beschattungsszene_ga_sektor2 = "1/1/1"; # Gruppenadresse 1Byte Szene 
            my $szenen_nr = 4;
            
            $plugin_info{$plugname.'_cycle'} = 86400;
            
            
            #Plugin an Gruppenadresse anmelden
            $plugin_subscribe{$beschattung_ga_sektor2}{$plugname} = 1;
            
            if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $beschattung_ga_sektor2 && defined $msg{'value'} && $msg{'value'} == "1") {
            knx_write($beschattungsszene_ga_sektor2,$szenen_nr);
            }    
                
            return 0;
            Also bei mir tuts seit heute dieses "plugin" (im zusammenkopieren war ich noch nie schlecht)
            ..ich zähle auch zu der "Copy-Paste" Fraktion. Aber möchte es dennoch gern verstehn was ich da zusammen bastel.

            Frage zum Code. Ist der Aufruf-Zyklus nötig. Oder reicht die Reaktion bei entsprechender GA ?


            Gruß Marco

            Kommentar


              #7
              Zitat von vento66 Beitrag anzeigen
              (im zusammenkopieren war ich noch nie schlecht)
              Hmm, so unter uns: das ist gut und richtig so! Denn der Sinn von OSS ist u.a. das man das Rad nicht für jede Fragestellung komplett neu erfinden muss, ich liebe Copy&Paste

              Zitat von Obiwan Beitrag anzeigen
              Frage zum Code. Ist der Aufruf-Zyklus nötig. Oder reicht die Reaktion bei entsprechender GA ?
              Nein/Ja: der zyklische Aufruf ist im Prinzip völliger nonsens. Nach dem "bauen" kann man den auf 0 setzen (nie)
              Seit geraumer Zeit wird jedes Plugin beim Start 1x aufgerufen um seine sockets zu öffnen oder subscribes zu machen, danach ist das im Prinzip überflüssig..
              Warum ich das trotzdem dringelassen habe: man merkt so evtl. Plugin-Fehler vor dem nächsten reboot. Und es kostet nun auch nicht die Welt..

              Makki

              -> Wenns fertig ist bitte Hinweis oder - besser - selber ins SVN schieben.. Ich finds immer schade wenn solche Sachen "verloren" gehen.. -> Es gibt für jede Sonderlocke immer mindestens 2 die sie brauchen können..
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar

              Lädt...
              X