Ankündigung

Einklappen
Keine Ankündigung bisher.

Rollladensteuerun die Xte

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

    Rollladensteuerun die Xte

    Hallo, ich habe mir mal eine kleine Rollladensteuerung zum Lernen zusammengebastelt

    Ich weiß, es würde auch mit weniger Variablen gehen und man kann noch viel optimieren.
    Aber mal als Anfang..
    meine Idee dahinter:
    Ich will meine Rollladen einfach einzeln anwählen, und dann eine gemeinsame Aktion auswählen.
    Also z.B. im Wohnzimmer und ein Fenster im Esszimmer auswählen, und dann alle auf 50% fahren.
    Meine Rollladen werden durch 2 Signale gesteuert. Ohne irgendeine Rückmeldung.
    Ev. kann es ja jemand gebrauchen.
    Falls jemand Verbesserungen hat, gerne her damit.

    ###[DEF]###
    [name = Rollladensteuerung LZ-KZ]

    [e#1 = Start #init=0 ]
    [e#2 = Stop #init=0 ]
    [e#3 = Wert(0 - 100%) ]
    [e#4 = aktueller Wert (%)]
    [e#5 = Max. Laufzeit (s) #init=20 ]
    [e#6 = Trigger Bereit #init=0 ]

    [a#1 = LZ]
    [a#2 = KZ]
    [a#3 = aktueller Wert]

    [v#1 = 0]
    [v#2 = 0]
    [v#3 = 0]
    [v#4 = 0]
    [v#5 = 0]
    [v#6 = 0]
    [v#7 = 0]
    [v#8 = 0]
    ###[/DEF]###


    ###[HELP]###
    Variablen
    V1 = microtime Start
    V2 = Laufzeit in Zehntelsekunden
    V3 = Neue Soll-Position
    V4 = Aktuelle Laufzeit in Prozent
    V5 = Neue Ist-Position
    V6 = Laufrichtung, 1 = abwärts, 2 = aufwärts
    V7 = Soll Laufzeit in Sekunden
    V8 = Status für Start Taste

    E1 = Startet den Rollladen
    E2 = Stoppt den Rollladen
    E3 gibt die Soll Stellung in % an
    E4 ist der aktuelle Wert eines KO's, das remanent sein sollte. Es wird bei jeden Betätigen neu mit der aktuellen Stellung beschrieben
    E5 ist die maximale Laufzeit des Rollladens. Es ist die Zeit, die der Rollladen braucht um von Endstellung zu Endstellung zu fahren. KO's, das remanent sein sollte.
    E6 Nur wenn hier eine 1 anliegt, wird der LBA überhaupt aktiv

    A1 ist das KNX-Signal für LZ. LZ startet bei einer 0 den Rollladen auf, bei einer 1 ab.
    A2 ist das KNX-Signal für KZ. KZ stoppt den Rollladen, egal ob 0 oder 1
    A3 schreibt den aktuellen Wert in das KO von E4

    Jeder Befehl maximal zu oder auf, der nicht unterbrochen wird, resetet den statischen Wert, d.h. in das KO an E4 / A3 wird eine 0 oder 100 geschrieben

    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id)
    {
    if ($E=getLogicEingangDataAll($id))
    {
    if ($E[6]['value'] == 1)
    {
    if ($E[1]['refresh']==1 && getLogicElementVar($id,8) == 0 && $E[1]['value'] == 1)
    {
    setLogicElementVar($id,8,1);
    setLogicElementVar($id,3, $E[3]['value'] - $E[4]['value']); //Neue soll-Position
    setLogicElementVar($id,1,getMicrotime());
    setLogicElementStatus($id,1);

    if ($E[3]['value'] == 0) //Rollladen läuft maximale Zeit nach oben
    {
    setLogicLinkAusgang($id,1,0); //Rollladen aufwärts
    setLogicElementVar($id,7,($E[5]['value'])); //Laufzeit
    }
    elseif ($E[3]['value'] == 100) //Rollladen läuft maximale Zeit nach unten
    {
    setLogicLinkAusgang($id,1,1); //Rollladen aufwärts
    setLogicElementVar($id,7,($E[5]['value'])); //Laufzeit
    }
    elseif (getLogicElementVar($id,3) > 0)
    {
    setLogicLinkAusgang($id,1,1); //Rollladen abwärts
    setLogicElementVar($id,6,1); //Laufrichtung abwärts
    setLogicElementVar($id,7,($E[5]['value'] / 100 * ($E[3]['value'] - $E[4]['value']))); //Laufzeit
    }
    else
    {
    setLogicLinkAusgang($id,1,0); //Rollladen aufwärts
    setLogicElementVar($id,6,2); //Laufrichtung aufwärts
    setLogicElementVar($id,7,($E[5]['value'] / 100 * ($E[4]['value'] - $E[3]['value']))); //Laufzeit
    }
    }

    if (getLogicElementStatus($id)==1)
    {
    if ($E[2]['refresh']==1) //Reset
    {
    setLogicElementVar($id,2,round(getMicrotime() - getLogicElementVar($id,1), 1)); //Laufzeit in Zehntelsekunden
    setLogicElementVar($id,4,round(getLogicElementVar( $id,2) * 100 / $E[5]['value'])); //Aktuelle Laufzeit in Prozent

    //Neue Ist-Position
    if (getLogicElementVar($id,6) == 1)
    {
    setLogicElementVar($id,5, $E[4]['value'] + getLogicElementVar($id,4));
    }
    elseif (getLogicElementVar($id,6) == 2)
    {
    setLogicElementVar($id,5, $E[4]['value'] - getLogicElementVar($id,4));
    }
    setLogicLinkAusgang($id,2,0); //Rollladen Stop
    setLogicLinkAusgang($id,3,getLogicElementVar($id,5 ));
    setLogicElementVar($id,8,0); // Starttaste kann wieder betätigt werden
    setLogicElementStatus($id,0);
    }

    if (getMicrotime() >= (getLogicElementVar($id,1) + getLogicElementVar($id,7))) //Zeit abgelaufen
    {
    setLogicLinkAusgang($id,2,0); //Rollladen Stop
    setLogicLinkAusgang($id,3,$E[3]['value']); //Neue Ist-Position
    setLogicElementVar($id,8,0); // Starttaste kann wieder betätigt werden
    setLogicElementStatus($id,0);
    }
    }
    }
    }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    ?>
    ###[/EXEC]###

Lädt...
X