Shading erweitern für Dachfenster
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start by reading the existing shading logic around ASC_Shading_Pos, Shading_Angle, and MinMaxElevation. Compare its behavior with the twilight device's azimuth and elevation readings and the proposed window-orientation vectors in this issue. Done means roof windows and wall windows use the additional inclination and preserve the existing fixed-limit checks.
Written by the indexing model from the issue text.
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.
- Dominant language
- Perl
- Stars
- 9
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from fhem/AutoShuttersControl
-
Difficulty 3/5 1-2 days Newbie friendliness 38/100
fhem/AutoShuttersControl#102 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
fhem/AutoShuttersControl#100 · 8 comments ·
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
fhem/AutoShuttersControl#98 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
fhem/AutoShuttersControl#95 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
fhem/AutoShuttersControl#88 ·
All issues in fhem/AutoShuttersControl
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
gugod/App-perlbrew#879 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
RotherOSS/otobo#6205 · 1 comment ·
Maintainers usually reply within 1 day
-
Add IO::Pipe classOpen
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
yuki-kimoto/SPVM-IO#30 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
fglock/PerlOnJava#1651 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
RotherOSS/servicecatalog#28 ·