Ankündigung

Einklappen
Keine Ankündigung bisher.

Garagentor

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

    [WireGate-Plugin] Garagentor

    Da ich zur Zeit meine linknx aufräume hab ich heute mein Garagentor (hörmann ohne UAP1, d.h 2 kontakte über schaltaktor kurz geschlossen und das Tor fährt auf -> stop -> zu ->auf usw, zustände werden über Reed-Kontakte gemeldet) versucht in Perl umzusetzen.
    Hab es schon mehrmal probiert und es läuft.
    Ich denke dass ich alle eventualitäten mit fehlender Rückmeldung etc. mit eingeplant hab. Falls einem Experten was auffällt was falsch ist bzw. was man schöner lösen könnte, bitte ich um eine kurze Rückmeldung.

    Gruß

    Code:
    ##########################################################
    
    #################################################################
    # do not change anything below, all config stays above
    #################################################################
    ## GA´s
    my $Garage_zu ='14/0/1';
    my $Garage_zu_rueck = '14/0/4';
    my $Garage_auf = '14/0/0';
    my $Garage_auf_rueck = '14/0/3';
    my $Garage_schalten = '14/0/6';
    
    
    # subscribe plugin and call it only when necessary, script will be activated if telegrams to the deffined GA are send.
    $plugin_subscribe{$Garage_zu}{$plugname} = 1;
    $plugin_subscribe{$Garage_auf}{$plugname} = 1;
    $plugin_subscribe{$Garage_zu_rueck}{$plugname} = 1;
    $plugin_subscribe{$Garage_auf_rueck}{$plugname} = 1;
    $plugin_info{$plugname.'_cycle'} = 0;
        
    ## tor zu
         if (($msg{'dst'} eq ($Garage_zu)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
         {
          ## Status der GA´s holen
         my $status = knx_read($Garage_zu_rueck,0,1);
       
              if (($msg{'value'} == 01) && ($status == 00)) {
             knx_write($Garage_schalten,1,1);
              return "zu";
              }
              if (($msg{'value'} == 01) && ($status == 01)) {
             knx_write($Garage_zu,0,1);
              return "zu";
              }
        
       else {
              return;
         }}
    # zu reset
       if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))  
        {
        my $garage_soll = knx_read($Garage_zu,0,1);
        
         if (($msg{'value'} == 01) && ($garage_soll == 01)) {
         knx_write($Garage_zu ,0,1);
        }
        if (($msg{'value'} == 01) && ($garage_soll == 00)) {
         knx_write($Garage_schalten ,1,1);
        }
        if (($msg{'value'} == 01) && ($garage_soll == 01)) {
         knx_write($Garage_auf,0,1);
        }
        }
    
    ## auf reset 
        if (($msg{'dst'} eq ($Garage_auf_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))  
        {
        my $garage_soll = knx_read($Garage_auf,0,1);
        
         if (($msg{'value'} == 01) && ($garage_soll == 01)) {
         knx_write($Garage_auf ,0,1);
        }
        if (($msg{'value'} == 01) && ($garage_soll == 00)) {
         knx_write($Garage_schalten ,1,1);
        }}
        
    ## tor auf
    if (($msg{'dst'} eq ($Garage_auf)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
         {
          ## Status der GA´s holen
         my $status = knx_read($Garage_auf_rueck,0,1);
         
         
              if (($msg{'value'} == 01) && ($status == 00)) {
             knx_write($Garage_schalten,1,1);
              return "zu";
              }
             
          else {
              return;
         }
         }

    #2
    @vlamers: hast du eigentlich einen sourceforge-account ?
    Wenn ja: bitte melden, wenn nein bitte machen

    Weil sowas gehört ja ins SVN aber ich muss das nicht wirklich zusammensuchen

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

    Kommentar


      #3
      Ja hab ich. der selbe Account Name wie hier im Forum.
      Merci

      Gruß Volker

      Kommentar


        #4
        Ok, erledigt, bisschen einlesen;
        (ganz-kurz-anleitung):

        Code:
        cd /tmp
        svn co https://openautomation.svn.sourceforge.net/svnroot/openautomation/wiregate/plugin/generic plugin 
        cp /etc/wiregate/plugin/generic/MEINPLUGIN plugin/
        svn add plugin/MEINPLUGIN
        svn ci -m "My first plugin commited, some more text"
        # was man commited vorher prüfen:
        svn diff
        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar


          #5
          Ich habe im Code eine Stelle gesehen, die mir nicht ganz klar ist...

          Code:
          # zu reset
              if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
                 {
               my $garage_soll = knx_read($Garage_zu,0,1);
                     if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                knx_write($Garage_zu ,0,1);
               }
               if (($msg{'value'} == 01) && ($garage_soll == 00)) {
                knx_write($Garage_schalten ,1,1);
               }
               if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                knx_write($Garage_auf,0,1);
               }
               }
          Hier hast du 2x die gleiche ifabfrage mit unterschidlichen GA's? Das bedeutet dass beide if-Abfragen miteinander ausgeführt oder ignoriert werden. Ich miene folgende Passage:

          Code:
               if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                knx_write($Garage_zu,0,1);
               }
          und
          Code:
               if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                 knx_write($Garage_auf,0,1);
                }
          Das verstehe ich nicht!? Könnte man da nciht beide knx_write in EINE ifabfrage paken? z.B. so?:

          Code:
               if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                knx_write($Garage_zu,0,1);
                  knx_write($Garage_auf,0,1);
                 }
          Oder sehe ich das falsch?

          PS: Bei #auf reset das gleiche.
          Gruss Patrik alias swiss

          Kommentar


            #6
            Jo da ging es anfangs darum nach zu voll ziehen was es wann macht.
            Ich hab das dann gelassen, da die Ausführungszeit verschwindend gering war.

            ich werde es morgen aufräumen.

            Danke

            Gruß



            Sent from my LG-P920 using Tapatalk

            Kommentar


              #7
              Hallo,

              hab mir den Code nochmal angsehen, aber:

              - ich hab das doppelt drin das ist soweit richtig, aber ich hab ja "$Garage_soll" in den beiden "if" abfragen unterschiedlich definiert. Einmal für "zu-fahren" einmal für "auf-fahren" wenn ich dass zusammenfasse kann ich das nicht mehr unterscheiden....

              Wenn ich jetzt an einer falschen Stelle im Code war bitte nochmal bescheid sagen, dann änder ich das gerne.

              Gruß

              Kommentar


                #8
                Hallo Volker

                Ich meinte innerhalb der Steuerung "#zu reset"

                Da wird nach der ersten IF-Abfrage der sollzustand eingelesen:

                Code:
                # zu reset
                     if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
                        {
                      my $garage_soll = knx_read($Garage_zu,0,1);
                .....
                Soweit io. Hier wird die Variable 1 mal eingelesen für die nachfolgenden 3 IF-Abfragen. Ich meinte dass da 2 IF-Abfragen reichen da du 2 identische überprüfungen machst und sich der Wert von $garage_soll nicht in der zwischenzeit geändert haben kann.

                Dieser Abschnitt würde dann so aussehen:

                Code:
                # zu reset
                     if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
                     {
                           my $garage_soll = knx_read($Garage_zu,0,1);
                
                           if (($msg{'value'} == 01) && ($garage_soll == 01)) {
                                 knx_write($Garage_zu ,0,1);
                                 knx_write($Garage_auf,0,1);
                           }
                           if (($msg{'value'} == 01) && ($garage_soll == 00)) {
                                 knx_write($Garage_schalten ,1,1);
                           }
                      }
                Gruss Patrik alias swiss

                Kommentar


                  #9
                  Oh jetzt ist es mir klar. Direkt aneinander vorbei geredet
                  Ich hab mich schon gewundert wo du 3 if´s hernimmst weil ich in meinem Plugin am WG nachgeguckt hab. Sry mein fehler!
                  Das was ich heut morgen hochgeladen hab (ins svn) hat nur 2 if abfragen. Der 1te Post ist nicht die endversion gewesen.

                  Ich hol das gleich nach:

                  Code:
                  ##########################################################
                  
                  #################################################################
                  # do not change anything below, all config stays above
                  #################################################################
                  ## GA´s
                  my $Garage_zu ='14/0/1';
                  my $Garage_zu_rueck = '14/0/4';
                  my $Garage_auf = '14/0/0';
                  my $Garage_auf_rueck = '14/0/3';
                  my $Garage_schalten = '14/0/6';
                  
                  
                  # subscribe plugin and call it only when necessary, script will be activated if telegrams to the deffined GA are send.
                  $plugin_subscribe{$Garage_zu}{$plugname} = 1;
                  $plugin_subscribe{$Garage_auf}{$plugname} = 1;
                  $plugin_subscribe{$Garage_zu_rueck}{$plugname} = 1;
                  $plugin_subscribe{$Garage_auf_rueck}{$plugname} = 1;
                  $plugin_info{$plugname.'_cycle'} = 0;
                  
                  
                  
                   
                   
                   
                  ## tor zu
                       if (($msg{'dst'} eq ($Garage_zu)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
                       {
                        ## Status der GA´s holen
                       my $status = knx_read($Garage_zu_rueck,0,1);
                     
                            if (($msg{'value'} == 01) && ($status == 00)) {
                           knx_write($Garage_schalten,1,1);
                            return "zu";
                            }
                            if (($msg{'value'} == 01) && ($status == 01)) {
                           knx_write($Garage_zu,0,1);
                            return "zu";
                            }
                      
                     else {
                            return;
                       }}
                  # zu reset
                     if (($msg{'dst'} eq ($Garage_zu_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))  
                      {
                      my $garage_soll = knx_read($Garage_zu,0,1);
                      
                       if (($msg{'data'} == 01) && ($garage_soll == 01)) {
                       knx_write($Garage_zu ,0,1);
                      }
                      if (($msg{'data'} == 01) && ($garage_soll == 00)) {
                       knx_write($Garage_schalten ,1,1);
                      }
                      
                      }
                  
                  ## auf reset 
                      if (($msg{'dst'} eq ($Garage_auf_rueck)) && ($msg{'apci'} eq 'A_GroupValue_Write'))  
                      {
                      my $garage_soll = knx_read($Garage_auf,0,1);
                      
                       if (($msg{'data'} == 01) && ($garage_soll == 01)) {
                       knx_write($Garage_auf ,0,1);
                      }
                      if (($msg{'data'} == 01) && ($garage_soll == 00)) {
                       knx_write($Garage_schalten ,1,1);}
                       
                      }
                      
                  ## tor auf
                  if (($msg{'dst'} eq ($Garage_auf)) && ($msg{'apci'} eq 'A_GroupValue_Write'))
                       {
                        ## Status der GA´s holen
                       my $status = knx_read($Garage_auf_rueck,0,1);
                       
                       
                            if (($msg{'value'} == 01) && ($status == 00)) {
                           knx_write($Garage_schalten,1,1);
                            return "auf";
                            }
                            
                             if (($msg{'value'} == 01) && ($status == 01)) {
                           knx_write($Garage_auf,0,1);
                            return "auf";
                            }
                           
                        else {
                            return;
                       }
                       }
                  das wäre die aktuelle Variante

                  Gruß und Danke!

                  Edit:

                  Der Aktor ist auf Treppenhausfunktion 1sekunde eingestellt.

                  Kommentar


                    #10
                    Hallo Volker

                    Keine ursache Ist ja auch nur Kosmetik. Allerdings verstehe ich nun etwas nicht. Entweder hat das Plugin im eingangspost oder das aktuelle Plugin einen Fehler!?

                    Vorher hast du für z.B. #auf reset beide GA's beschrieben....

                    Code:
                    knx_write($Garage_auf ,0,1)
                    und

                    Code:
                    knx_write($Garage_zu ,0,1)
                    Nun beschreibst du in der IF-Abfrage nur noch

                    Code:
                         if (($msg{'data'} == 01) && ($garage_soll == 01)) {
                          knx_write($Garage_auf ,0,1);
                         }
                    Funktioniert das Plugin bei dir noch? Wäre schade wenn sich nun ein Fehler eingeschlichen hätte.

                    PS: Für die Veröffentlichung deiner Plugins solltest du ganz oben einen Konfigurationsteil einrichten. In deinen Plugins steht zuoberst, dass man ab hier nichts verändern soll und alle wichtigen Variabeln für die GA's sind darunter

                    Ich z.B. habe das immer so gelöst:

                    Code:
                    # Plugin um komfortabel Befehle über den IRTrans auszulösen
                    # Version 0.2 BETA 06.09.2011
                    # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
                    # License: GPL (v2)
                    # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
                    
                    
                    ####################
                    ###Einstellungen:###
                    ####################
                    my @Befehle;
                    
                    my $ip_irtrans = '192.168.1.15'; #IP des IRTrans
                    
                    #Pro Befehl der über den IRTrans ausgelöst werden soll einfach diese Konfigurationszeile kopieren und anpassen.
                    push @Befehle, { name => "Fernseher_Ein/Aus", datenbank => 'philips', befehl => 'power', GAausloeser => "6/2/129" };
                    
                    push @Befehle, { name => "Roomba putzen", datenbank => 'romba581', befehl => 'clean', GAausloeser => "6/3/100" };
                    
                    
                    
                    ######################
                    ##ENDE Einstellungen##
                    ######################
                    
                    ............
                    Damit ist
                    1. klar welche Version man hat,
                    2. Ist jedem klar, was er ändern darf und was nicht

                    Ist aber auch wieder Kosmetik und hat mit der eigentlichen Funktion wehnig zu tun.
                    Gruss Patrik alias swiss

                    Kommentar


                      #11
                      Das war überflüssig... imho
                      ich hab gerade alle knöpfe wie wild gedrückt. Es geht

                      Gruß

                      Kommentar


                        #12
                        Na dan bin ich froh. Ist wirklich ein schönes Plugin geworden

                        Aber das mit dem Konfigurationsteil würde ich dir trotzdem noch empfehlen.
                        Gruss Patrik alias swiss

                        Kommentar


                          #13
                          OK hab ich geändert, muss ich vorhin überlesen haben.

                          Danke!

                          Gruß

                          Kommentar


                            #14
                            Hallo,

                            danke für dieses Plugin!

                            Ich überlege gerade, wie ich mein Garagentor ansteuere.
                            Die Lösung mit Hörman UAP1 und Elsner A2B2 ist naheliegend und bietet alles, was man sich wünscht. Allerdings bin ich damit auch 150€ für die Buskomponenten sowie 300€ für den Antrieb los.

                            Nehme ich einen "Baumarkt-Antrieb" und dazu den A2B2 oder einen anderen Aktor mit 2 Ein und Ausgängen, so sollte ich bei 250€ liegen.

                            Aber was fehlt mir dann? Lohnt der Mehrpreis von ca 200€?

                            Gruß,
                            Hendrik

                            Kommentar


                              #15
                              AW: Garagentor

                              Ich bin sehr zufrieden mit meinem Hörmann.
                              Ich hab die USU Tasterschnittstelle und einen freie Aktor Kanäle genommen.
                              Denke das sich der Mehrpreis nach ein paar Jahren schon rechnet vor allem in der Qualität der verwendeten Komponenten. Bzw auch im gebotenen Service der Firma.

                              Vom Funktionsumfang werden sie vermutlich alle gleich sein?!


                              Gesendet von meinem GT-N7100 mit Tapatalk 2

                              Kommentar

                              Lädt...
                              X