-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Hey, wie schon im Forum kurz andiskutiert, würde ich mich sehr freuen, wenn die Beschattungssteuerung so geändert würde, dass auch Dachfenster ideal beschattet werden können.
Als kurze Erklärung: Nur mit festen Grenzen für Azimuth/Elevation kommt man bei der Beschattung Dachfenstern leider nicht weit.
Beispiel:
Dachfenster zeigt nach Norden (ASC_Shading_Pos = 0). Sonne steht voll im Süden (azimuth=180). Sonne steht bei Elevation 60°, Dachneigung wäre 30°. Obwohl die Sonne auf der gegenüberliegenden Seite steht, würde sie dennoch ins Fenster scheinen (mit einem Einfallswinkel von 30°). Das wird leider derzeit nicht erfasst.
Meine Idee, wie ich sie bisher (wohl gemerkt schlecht programmiert) in meinen myUtils umgesetzt habe:
Zusätzlich zum bisherigen Vorgehen müsste für jedes Fenster neben ASC_Shading_Pos die Neigung des Fensters zur Horizontalen angegeben werden (bei einem Wandfenster also per default 90°).
Danach wird das Fenster und der Sonnenstand als 3 dimensionaler Vektor dargestellt und der tatsächliche Einfallwinkel berechnet: ("sonnenstand" ein einfaches twilight Device)
my $sun_az_grad = ReadingsVal("sonnenstand","azimuth",0) ;
my $sun_el_grad = ReadingsVal("sonnenstand","elevation",0) ;
my $sun_az_rad = $sun_az_grad * 3.14 / 180 ;
my $sun_el_rad = $sun_el_grad * 3.14 / 180 ;
my $x_sun = sin($sun_az_rad) * cos($sun_el_rad) ;
my $y_sun = cos($sun_az_rad) * cos($sun_el_rad) ;
my $z_sun = sin($sun_el_rad) ;
$ausrichtung_az = $grenzen[0] / 180 * 3.14 ; #### entspricht ASC_Shading_Pos
$ausrichtung_el = $grenzen[1] / 180 * 3.14 ; #### entspricht der Dachneigung
$x_fenster = sin($ausrichtung_az) * cos($ausrichtung_el) ;
$y_fenster = cos($ausrichtung_az) * cos($ausrichtung_el) ;
$z_fenster = sin($ausrichtung_el) ;
$schnittwinkel = max ( 0, ( asin ( $x_fenster * $x_sun + $y_fenster * $y_sun + $z_fenster * $z_sun ) ) * 180 / 3.14 ) ;
Der tatsächlich berechnete Schnittwinkel könnte dann mit einem Maximal-Schnittwinkel verglichen werden (bei mir z.B. 15°) und wenn der überschritten wird, soll beschattet werden.
Funktioniert bei mir seit 2 Jahren tadellos (auch für Wandfenster). Aber die vielen DOIFs und myUtils sind nicht halb so schick wie dein ASC-Modul :-)
PS: Die festen Grenzen (Shading_Angle, MinMaxElevation) sollten dennoch bleiben und weiterhin abgefragt werden um beispielsweise Beschattung durch nahe stehende Bäume/Häuser mitzunehmen.