Ankündigung

Einklappen
Keine Ankündigung bisher.

Einfach-Rollladenaktor "aufmotzen"

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

    [wiregate] Einfach-Rollladenaktor "aufmotzen"

    Die Rollladenaktoren, die bei mir verbaut sind, können doch immerhin die Rollläden rauf und runter fahren. Das war's dann aber auch schon ziemlich. Funktionen, die ich vermisse:
    • Rückmelden der Position (für Visu)
    • Oben verbleiben, wenn das Fenster bzw. die Tür offen ist
    • In Lüftungsposition fahren, wenn der Rollladen geschlossen ist und das Fenster geöffnet wird, und umgekehrt
    Als stolzer Neu-Besitzer eines Wiregate (bei der Gelegenheit mein Dank an die Beteiligten!) habe ich mich an einem Plug-in versucht. Verbesserungsvorschläge sind jederzeit willkommen.

    Gruß
    Martin

    Code:
    # Plugin zur Statusmeldung von "einfachen" Rollladen-Aktoren (Berker)
    # Aktor kennt keine Statusmeldung -> wird hier generiert
    # Zusätzlich Lüftungs- und Sicherheitsfunktion:
    # - Rollladen bleibt oben, wenn Fenster offen
    # - Rollladen fährt in Lüftungsposition, wenn unten und Fenster geht auf
    # - Rollladen fährt nach unten, wenn in Lüftungsposition und Fenster geht zu
     
    ### Definitionen 
    ### 
    ### Sendewerte
    my $hoch = 0;
    my $runter = 1;
    ### Statuswerte
    my $oben = 0;
    my $unten = 255;
    my $lueftung = 204;
    ### 
    my $laufzeit = 4; # Laufzeit nach oben für Lüften
    my $aktiv_lueftung = 0; # Plugin-Aufrufzeit, =2 wenn gerade Lüftungsposition angefahren wird
    # Jede Zeile ein Rollladen
    my @rollladen;
    # name wird derzeit nicht verwendet, hashname für permanentes Speichern
    # Langzeit-GA: 3 Stück, für einzelnen Rollladen, ganzes Zimmer und ganzes Haus
    # Kurzzeit-GA zum Stoppen
    # Positions-GA für die Rückmeldung Position
    # Fenster-GA: 1 = Fenster offen, 0 = Fenster zu
    push @rollladen, { name => "HWR Fenster", hashname => "HWRF", einzel_ga => "2/0/0", kurz_ga => "2/1/0", group_ga => "", global_ga => "0/3/0", position_ga => "2/3/0", fStatus_ga => "3/2/0" };
    push @rollladen, { name => "Küche links", hashname => "KueL", einzel_ga => "2/0/1", kurz_ga => "2/1/1", group_ga => "2/0/4", global_ga => "0/3/0", position_ga => "2/3/1", fStatus_ga => "10/0/3" };
    push @rollladen, { name => "Küche rechts", hashname => "KueR", einzel_ga => "2/0/2", kurz_ga => "2/1/2", group_ga => "2/0/4", global_ga => "0/3/0", position_ga => "2/3/2", fStatus_ga => "10/0/2" };
    push @rollladen, { name => "Bad", hashname => "Bad", einzel_ga => "2/0/3", kurz_ga => "2/1/3", group_ga => "", global_ga => "0/3/0", position_ga => "2/3/3", fStatus_ga => "3/2/4" };
    ### Ende Definitionen
    foreach my $roll (@rollladen) {
      # Plugin an Gruppenadressen "anmelden", sofern definiert
      if ($roll->{einzel_ga})
      {
        $plugin_subscribe{$roll->{einzel_ga}}{$plugname} = 1;
      }
      if ($roll->{group_ga})
      {
        $plugin_subscribe{$roll->{group_ga}}{$plugname} = 1;
      }
      if ($roll->{global_ga})
      {
        $plugin_subscribe{$roll->{global_ga}}{$plugname} = 1;
      }
      if ($roll->{fStatus_ga})
      {
        $plugin_subscribe{$roll->{fStatus_ga}}{$plugname} = 1;
      }
      # Verstell-Kommando vom Bus
      if ($msg{'apci'} eq "A_GroupValue_Write" and ($msg{'dst'} eq $roll->{einzel_ga} or 
         $msg{'dst'} eq $roll->{group_ga} or $msg{'dst'} eq $roll->{global_ga}))
      {
        # vorherige Position zwischenspeichern
        my $previous = $plugin_info{$plugname.'_pos_'.$roll->{hashname}};
        # hochfahren aus Position unten
        if ($msg{'data'} == $hoch and not ($plugin_info{$plugname.'_LS_'.$roll->{hashname}} > 0) ) {
          $plugin_info{$plugname.'_pos_'.$roll->{hashname}} = $oben;
        }
        # runterfahren aus nicht geschlossener Position -> Fensterstatus einbeziehen, ggfs. stoppen
        if ($msg{'data'} == $runter and $previous != $unten) {
          $plugin_info{$plugname.'_pos_'.$roll->{hashname}} = $unten;
          my $fenster = knx_read($roll->{fStatus_ga},0,1);
          if ($fenster) #Fenster geöffnet - Rolladen anhalten
          {
            $plugin_info{$plugname.'_pos_'.$roll->{hashname}} = $previous;
            knx_write($roll->{kurz_ga}, $hoch, 1);
          }
        }
        # Bei veränderter Position diese ausgeben
        if ($plugin_info{$plugname.'_pos_'.$roll->{hashname}} != $previous) 
        {
          knx_write($roll->{position_ga},$plugin_info{$plugname.'_pos_'.$roll->{hashname}},'5.001');
        }
      }
      # Position lesen
      if ($msg{'apci'} eq "A_GroupValue_Read" and $msg{'dst'} eq $roll->{position_ga}) 
      {
        knx_write($roll->{position_ga},$plugin_info{$plugname.'_pos_'.$roll->{hashname}},'5.001');
      }
      #Fenster geht auf, Rollladen geschlossen -> auf Lüftungsposition   
      if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $roll->{fStatus_ga} and
          $plugin_info{$plugname.'_pos_'.$roll->{hashname}} == $unten and $msg{'data'} == 1) 
      {
        $plugin_info{$plugname.'_LS_'.$roll->{hashname}} = time();
        knx_write($roll->{einzel_ga}, $hoch, 1);   
      }
      #Fenster geht zu, Rollladen auf Lüftung -> Rollladen zu
      if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $roll->{fStatus_ga} and
          $plugin_info{$plugname.'_pos_'.$roll->{hashname}} == $lueftung and $msg{'data'} == 0) 
      {
        knx_write($roll->{einzel_ga}, $runter, 1);
        $plugin_info{$plugname.'_pos_'.$roll->{hashname}} = $unten;
        knx_write($roll->{position_ga},$unten,'5.001');
      }
      if($plugin_info{$plugname.'_LS_'.$roll->{hashname}} > 0) # Fenster fährt gerade in Lüftungsposition
      {
        if (time()-$plugin_info{$plugname.'_LS_'.$roll->{hashname}} > $laufzeit) # Zeit abgelaufen
        {
          #Rollladen stoppen
          knx_write($roll->{kurz_ga}, $hoch, 1);
          $plugin_info{$plugname.'_LS_'.$roll->{hashname}} = 0;
          $plugin_info{$plugname.'_pos_'.$roll->{hashname}} = $lueftung;
          knx_write($roll->{position_ga}, $lueftung, '5.001');
        }
        else
        {
          $aktiv_lueftung = 2;
        }
      }
    }
    # Zykluszeit auf 2, falls gerade Lüftungsposition angefahren wird, ansonsten auf 0
    $plugin_info{$plugname.'_cycle'} = $aktiv_lueftung;
    return $msg{'dst'}." ".$msg{'data'};

    #2
    Cool, klingt interessant, das wären so Funktionen die ich mir auch wünschen würde und ich noch irgendwie mal gedacht hatte umzusetzen, daher erstmal ein großes DANKE!

    Eine Frage hätte ich allerdings gleich mal vorneweg:

    Wie definiert sich Deine Lüftungsposition? Lässt Du einfach für ein paar Sekunden "auf" fahren?
    Gleich noch ne Frage:

    Kann ich das Ding irgendwie manuell "überlisten, d.h. wenn das Fenster zwar offen ist, ich aber dennoch möchte das der Rollo a bisserle runter geht?

    Nochmals Danke!

    René

    Kommentar


      #3
      Lasst euch mit 5J Rolladen-Erfahrung, ca. 3-4 verschiedenen HS-Bausteinen und 10 WG Plugins eines sagen: vergiss es!

      Das Thema Rolladen ist eines der komplexesten, man nehme einen mächtigen Aktor, dazu eine mächtige Wetterstation, viel viel Zeit+Tests und ein bisschen Logik.

      Wenn man einen Stundensatz von mehr als 2€ ansetzt, wirkt meine Rechnung..

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

      Kommentar


        #4
        Hallo makki,

        die Ambition ist ja nicht, aus dem primitiven Berger-RA einen "Männer-" Jalousieaktor zu machen. Das Thema Rollladen ist in unserem Haus (Zumindest noch) nicht so extrem wichtig. Mir ging's in erster Linie drum, die Zustände in der Visu anzeigen zu können - noch nicht mal das kann der Berker-RA.

        @NeubauRe:

        Das Anfahren der Lüftungsposition erfolgt in der Tat über einen Timer (4 Sekunden). Mir reicht ein ungefähres Hochfahren. Das Plugin hat während des Hochfahrens eine Taktzeit von 2s, das ist die Ungenauigkeit bei der Sache, für mich absolut im Rahmen. Eigentlich hatte ich noch vor, diese Zeit individuell für jeden Rollladen einstellbar zu machen, aber habe das dann nicht für nötig erachtet.

        Ein Verfahren des Rollladens bei offenem Fenster ist z.B. über Kurzzeitbefehle möglich, oder über eine weitere GA, auf die zwar der Aktor, nicht aber das Plug-in hört.

        Irgendwie habe ich das zur falschen Jahreszeit angefangen. Alles spricht vom WAF, bei uns dominiert eindeutig der "KAF". Ständig stehen jetzt irgendwelche Fenster offen...

        Sollte die Einfachfunktion weitere Begehrlichkeiten in unserem Haus wecken, dann bin ich bei makki, dann fliegt der Berker-RA raus.

        Gruß
        Martin

        Kommentar


          #5
          Hallo
          Ich habe auch so einen dummen Aktor von B+J 6196/43.
          Da habe ich 2Rolladen und 1Markise drauf.
          Ich habe das mit meiner Wago 750-849 geregelt, läuft problemlos schon 2Jahre.
          Die anderen Rolladen sind alle mit SMI-Antriebe.


          Wenn ich das richtig sehe gibst Du keine Laufzeit für jede Rollade ein.
          Wie bestimmst Du denn da ob AUF oder ZU ?
          Gruß NetFritz
          KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
          WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
          PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

          Kommentar


            #6
            Zitat von NetFritz Beitrag anzeigen
            Wenn ich das richtig sehe gibst Du keine Laufzeit für jede Rollade ein.
            Wie bestimmst Du denn da ob AUF oder ZU ?
            Wie gesagt - simple Funktion. Gemäß Beobachtung werden die Rollläden von den Bewohnern zu gefühlten 100% per Langzeitbefehl rauf- oder runtergefahren. Das macht es einfach: auf Langzeitbefehl hören und diesen praktisch als neuen Zustand abspeichern. Wird der Laden mittendrin angehalten, ist der Zustand halt falsch, damit kann ich momentan leben.

            Gruß
            Martin

            Kommentar


              #7
              Wie ist denn eigentlich die genaue Bezeichnung dieses Berker-Aktors? Der aktuelle Berker Rolladenaktor (7531 40 22) kann es ja nicht sein, denn der verfügt sehr wohl über direkte Positionsanfahrt, Rückmeldung und Alarmfunktionen. Ist das ein älteres Gerät?

              Ich frag deshalb, weil ich auch mit älteren Hager-Aktoren kämpfe, die kein richtiges Rückmeldeobjekt haben.

              Marcus

              Kommentar


                #8
                Zitat von MarcusF Beitrag anzeigen
                Wie ist denn eigentlich die genaue Bezeichnung dieses Berker-Aktors? Der aktuelle Berker Rolladenaktor (7531 40 22) kann es ja nicht sein
                So ist es: "75314013 Rollladenaktor 4-fach" prangt auf dem Gerät.

                Gruß
                Martin

                Kommentar

                Lädt...
                X