Skip to content

Shading erweitern für Dachfenster #42

@der-oBi

Description

@der-oBi

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions