Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000141 - Beschattungssteuerung

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

  • ak68
    antwortet
    Zitat von starwarsfan Beitrag anzeigen

    InitScan auf 1/3/16 und 1/3/17 hast Du aktiviert?
    Ja, ist aktiviert ! Kann es sein, dass die beiden Positionswerte erst nach Berechnung des Bausteins zur Verfügung steht ?

    Daher habe ich auch schon versucht, als Trigger das iKO Systenstart (auch mit 60s Verzögerung) zu verwenden, aber eigentlich wird der Baustein auch bei Eingang der Wetterdaten berechnet- ohne Erfolg

    Einen Kommentar schreiben:


  • MrMirror
    antwortet
    Frage: Kann es sein, dass wen E22 (Dämmerungsschwelle öffnen) kleiner ist als E21 (Dämmerungsschwelle schließen) der Raffstore erst aufgeht, wenn E21 überschritten wird? Ist bei mir nämlich (leider) so...!

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Zitat von ak68 Beitrag anzeigen
    meine neu erstellte Jalousiensteuerung geht direkt nach Projektaktivierung in den Modus "LBS Disabled", angeblich wurde manuell die Höhe verstellt. Erst nach Reaktivierung über E32 läuft der Baustein wieder (vgl. Bild).
    InitScan auf 1/3/16 und 1/3/17 hast Du aktiviert?

    Einen Kommentar schreiben:


  • ak68
    antwortet
    Hallo zusammen,

    meine neu erstellte Jalousiensteuerung geht direkt nach Projektaktivierung in den Modus "LBS Disabled", angeblich wurde manuell die Höhe verstellt. Erst nach Reaktivierung über E32 läuft der Baustein wieder (vgl. Bild). Der Trigger ist auf Init=1 , zusätzlich minütlich über SysKO zum Testen

    Dies ist für mich nicht erklärbar, da sowohl Höhe (E33/A5), als auch Lamellenstellung (E34/A6) überein stimmen.

    Wer hat eine Idee ? Danke Andreas

    Auszug aus Logdatei:
    2017-02-17 18:52:47 946219 20996 INFO: LBS reactivated
    2017-02-17 18:52:47 949193 20996 INFO: LBS disabled through external height change
    2017-02-17 18:55:23 603683 20996 INFO: LBS reactivated

    Verschattung.png

    Einen Kommentar schreiben:


  • crewo
    antwortet
    Alles klar und danke fürs Update! Ich denke der "alte" tuts sicher auch fürs erste. Wenn es jetzt noch 1-2 Wochen gewesen wären hätte ich gewartet, aber so passt das auch.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hallo und guten Abend miteinander,

    zum Stand der Neuimplementierung kann ich im Moment nur sagen, dass es aufgrund der aktuellen Wetterlage recht langsam voran geht. Das ganze mit (m)einem Test-Setup durchzuspielen ist wesentlich aufwändiger, als den Baustein im Haus einzusetzen und die Reaktionen live zu beobachten und direkt darauf zu reagieren. Damit ich das am lebenden Objekt machen kann, brauchts eben schönes, sonniges und nach Möglichkeit leicht wechselhaftes Wetter. Das dann auch möglichst am Wochenende, wenn ich selber vor Ort bin. Von daher wird es wohl erst im Frühjahr bzw. Sommer wieder so richtig voran gehen.

    Ich muss mal überlegen, ob ich eine Vorabversion veröffentliche. Dieser sollte dann aber zumindest die rudimentärsten Funktionen schon erfüllen...

    Einen Kommentar schreiben:


  • crewo
    antwortet
    starwarsfan zu erst einmal Danke für die tolle Arbeit! Habe mit deinem LBS bereits erste gute Erfahrungen gemacht im Test, macht Spaß! Bevor ich nun alle Rollos und Jalousien in edomi steuere und dazu einrichte wollte ich mal fragen wie dein Stand zum "NG" LBS ist?

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Das solltest Du aber mit der Elevation berechnen und nicht mit dem Azimut!

    Aber wie auch immer, am aktuellen Baustein werde ich nach Möglichkeit keine größeren Umbauten mehr machen. Ich bin mitten in der Arbeit an einer komplett neuen Implementierung und damit sollte sowas kein Problem sein.

    Was Du aber machen/testen kannst: Versuch es mal via dem Lock-Eingang!

    Einen Kommentar schreiben:


  • schobi
    antwortet
    Und dann habe ich gleich noch ein neues Problemchen:

    Ich kann aus meinem Wohnzimmer den Sonnenuntergang am Horizont beobachten - und möchte dass die Beschattung erst danach runterfährt. Die Sensoren messen dann schon <50 lux und sind nicht mehr so genau. Daher habe ich mit dem Sonnenwinkel experimentiert.
    If (Azimuth < -3) auf den Eingang "E20 Dämmerung aktiv"
    Leider wird das trotz Trigger auf E1 nicht ausgewertet.
    Ich vermute der Eingang ist nicht dazu gedacht dass er sich ändern kann - die Statemachine habe ich leider noch nicht überblickt.

    Diese Funktion (if winkel < x usw) ist problemlos außerhalb aufgehoben und für alle Fenster gleich. Vielleicht ist das eine Idee für den nächsten Baustein, dass der Eingang das 1/0 direkt verarbeiten kann?

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi,

    habe ich im Baustein schon lange korrigiert aber über der Arbeit an der NG-Version versäumt, das zu releasen. Werde das die Tage nachholen.

    Einen Kommentar schreiben:


  • schobi
    antwortet
    ich habe vor ein paar Wochen einen hack eingebaut, um den Winkel der Lamellen zu korrigieren, wenn die sonne nicht senkrecht auf die Fassade scheint (siehe https://knx-user-forum.de/forum/proj...179#post993179).
    Die paar Tage mit Sonne hat das gut funktioniert so dass ich das teilen möchte.



    Code:
    /**
     * Calculate the shutter angle which is neccessary to prevent sun rays from
     * falling into the room based on current elevation together with width and
     * distance of shutter slats and angle offset.
     *
     * @param $E - The array with all the input values
     * @return float - Shutter angle in degrees
     */
    function LB_LBSID_calculateShutterAngle($E)
    {
        $elevation = $E[4]['value'];
        $azimut = $E[5]['value'];
        $faccadeAngle = $E[6]['value'];
        $widthA = $E[9]['value'];
        $heightB = $E[10]['value'];
        $shutterAngleOffset = $E[11]['value'];
        $shutterType = $E[12]['value'];
        $minimalShutterAnglePercent = $E[35]['value'];
        $shutterStepping = $E[38]['value'];
    
        // correction for non-direct sun on the facade,
        // the apparent width of the shutter is larger
        $oldwidthA = $widthA;
        $widthA = $widthA / cos(deg2rad( $azimut  -  $faccadeAngle )) ;
        $angledifference = $azimut  -  $faccadeAngle;
        $cosfactor = cos(deg2rad( $azimut  -  $faccadeAngle ));
        LB_LBSID_debug(true, "Elevation correction: angle difference ${angledifference}°, old width ${oldwidthA} mm, cosinus factor ${cosfactor}, new width ${widthA} mm");
    
        // The following is based on an oblique triangle
    
        // $alpha is the opposit angle of shutter slat width,
        // so this is the difference between $elevation and vertical
        $alpha = 90 - $elevation;
    
        // $beta is the opposit angle of shutter slat distance
        $beta = asin(sin($alpha / 180 * pi()) * $heightB / $widthA) * 180 / pi();
    
        // $gamma is the angle between vertical and shutter slat
        $gamma = 180 - $alpha - $beta;
    
        // $shutterAngle is the difference between horizontal and shutter slat,
        // so this is the result of the calculation
        $shutterAngle = round(90 - $gamma);
    
        LB_LBSID_debug(true, "Elevation: ${elevation}°, resulting shutter angle: ${shutterAngle}° (without stepping and offset)");
    
        // Add given shutter angle offset and define minimal shutter angle
        if ($shutterType == 0) {
            // 90° shutters
            $modifier = round($shutterStepping * 0.9);
            $shutterAngle = LB_LBSID_handleElevation($shutterAngle, $modifier, $elevation);
            // "-" = 0° = 0%, "\" = 90° = 100%
            $shutterAngle = $shutterAngle + ($shutterAngleOffset * 0.9);
            $minimalShutterAngle = $minimalShutterAnglePercent * 0.9;
        } else {
            // 180° shutters
            $modifier = round($shutterStepping * 1.8);
            $shutterAngle = LB_LBSID_handleElevation($shutterAngle, $modifier, $elevation);
            // "/" = -90° = 0%, "-" = 0° = 50%, "\" = 90° = 100%
            $shutterAngle = $shutterAngle + ($shutterAngleOffset * 1.8);
            $minimalShutterAngle = $minimalShutterAnglePercent * 1.8 - 90;
        }
    
        $shutterAngle = round($shutterAngle);
    
        // Check calculated angle against given minimal angle
        if ($shutterAngle < $minimalShutterAngle) {
            $shutterAngle = $minimalShutterAngle;
        }
    
        LB_LBSID_debug(true, "Elevation: ${elevation}°, resulting shutter angle: ${shutterAngle}°");
        return $shutterAngle;
    }
    Hier ein paar Beispiele der Berechungen:
    Code:
    Elevation correction: angle difference -75.01869774572°, old width 80 mm, cosinus factor 0.25850381377232, new width 309.47319048245 mm
    Elevation correction: angle difference -33.61171570516°, old width 80 mm, cosinus factor 0.83280806710618, new width 96.060548834477 mm
    Elevation correction: angle difference -20.85761468782°, old width 80 mm, cosinus factor 0.93446812033792, new width 85.610197136602 m
    Elevation correction: angle difference -15.18547243168°, old width 80 mm, cosinus factor 0.96508294254, new width 82.894429560063 mm
    Wie man sieht - wenn die Sonne besonders schräg auf die Fassade auftrifft, dann wird die wirksame Länge deutlich größer, wenn es nur 20 oder 15 Grad sind, dann macht das fast keinen Unterschied mehr.

    Das Prinzip sollte passen - meinen Code muss ich noch etwas schöner machen...

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Stimmt, ich bin fündig geworden, habe nur noch keine Idee für eine Lösung...

    Die Logik, die die Konvertierung % <-> binär macht wird von 2 Seiten gefüttert.
    Zum einen schickt der Schieberegler einen Stellwert an 1031, zum anderen steht im Beschattungs-LBS eine 0 an (wenn nicht beschattet wird).
    Diese 0 scheint nun bei Projektaktivierung geschickt zu werden bevor der remanente Stellwert des Schiebereglers zuschlägt.

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    ok, da sollte sich der Kreis schließen.

    Vielleicht deaktivierst Du mal die Logik-Seite und aktzivierst neu und schaust dann die ganzen relevanten GA und KO mal die Live-Werte an, welcher wo steht. Ich vermute, damit wirst Du den Verursacher finden.

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Zitat von saegefisch Beitrag anzeigen
    ...und wenn ich mir Post 264 und 269 anschaue bleibe ich bei meiner Frage: Wird 1031 neu gesetzt? In der 2. Box wird doch scheinbar 1045 gesetzt, nicht aber 1031. Der bleibt auf dem alten wert und bei Aktivierung wirkt der remanente Wert dort auf 8/4/0 in der 1. Ausgangsbox... wie gesagt, hatte gestern bei mir ein ähnliches Thema...
    Schau mal Post 265.
    1031 wird durch den Schieberegler gesetzt, 1045 wird durch die Rückmeldung des Aktors über KNX 4/4/0 gesetzt.

    Einen Kommentar schreiben:


  • NorbertB
    antwortet
    Zitat von starwarsfan Beitrag anzeigen
    Bist Du sicher, dass das die gleichen KOs sind? Mich wundert, dass dort links am Eingang "20" resp. "51" steht, rechts am Ausgang jedoch "19.60" resp. "50"!?
    Links die 20% / 51 ist der Stellwert, rechts die 19.60% / 50 ist die Rückmeldung vom Aktor.

    Einen Kommentar schreiben:

Lädt...
X