Rollladensteuerung mit Twillightwert

Begonnen von MisterEltako, 15 Februar 2013, 20:51:35

Vorheriges Thema - Nächstes Thema

crissiloop

puh, das ist schon heftig mit der Formel für den Sonnenstand.

Aber vielleicht hilft das hier ja weiter: http://ww3.cad.de/cgi-bin/ubb/postings.cgi?action=printpost&forum=Lisp&number=145&topic=000485.cgi&ReplyNum=000013&TopicSubject=sonnenstandsberechnung

Vielleicht kann man das ja benutzen um den Sonnenstand zu bestimmten Uhrzeiten zu bestimmen und danach die Rollläden zu steuern.

Gruß
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Dietmar63

Eine Lösung wäre vielleicht mit sunrise_abs(20) bzw sunset_abs die Zeiten zu errechnen, wann die Sonne die 20° am Himmel überschritten hat und dann regelmäßig bei Sonnenschein das Rollo schalten.

Das funktioniert mit existierenden Mitteln.
Ob 20° der richtige Wert ist, müßte man probieren.

ich habe mal soeben probiert:
{sunrise_abs ("HORIZON=45")} liefert 10:29:45.
{sunset_abs ("HORIZON=45")}  liefert 16:04:07

Heute hätte die Sonne um 10:29:45 hier in Hannover die Sonne die 45° Marke überschritten.
Um 16:04:07 wäre sie wieder unter die 45° Marke gefallen.

Leider war es nicht sonnig!

Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

crissiloop

Ich denke die Höhe der Sonne geht über Sunrise.
Ich dachte aber auch noch an den Azimuth zu bestimmten Zeiten zwecks Beschattung. Und das wird mit Sunrise nicht mehr gehen.

Gruß
Christian
FHEM 5.5 auf Cubietruck

1x HMLAN, 1x HMUSB, 12x HM-LC-Bl1 PBU-FM, 5x HM-LC-Sw1-Pl, 1x HM-LC-Sw1-FM, 2x HM-LC-Sw2-FM, 2x HM-SEC-RHS, 3x HM-SEC-SD, 8x HM-SEC-SC, 3x HM-RC-4-2, 1x HM-RC-8, 1x HM-Sec-SFA-SM, Jeelink, 7x Technoline TX 29 DTH-IT

Dietmar63

man könnte als einfache Lösung zum Zeitpunkt

{sunrise_abs ("HORIZON=45")} also heute so gegen 10:29:45 ein at-Kommando starten, dass alle 5 oder 10 Minuten einen Lichtsensor auswertet. Wenn Sonne, dann beschatten, wenn keine Sonne dann Rollo zurückfahren.

define BeschattunsSteuerung at *{sunrise_abs ("HORIZON=45")} define prüfer at +*00:10:00 {prüfeSonnenschein()}

Das zweite at muss man jezt noch wieder los werden. Eventuell mit einem Zähler im zweiten at.

define BeschattunsSteuerung at *{sunrise_abs ("HORIZON=45")} define prüfer at +*{15}00:10:00 {prüfeSonnenschein()}
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Tobias

Zitat von: Dietmar63 schrieb am Mi, 22 Mai 2013 18:41Eine Lösung wäre vielleicht mit sunrise_abs(20) bzw sunset_abs die Zeiten zu errechnen, wann die Sonne die 20° am Himmel überschritten hat und dann regelmäßig bei Sonnenschein das Rollo schalten.

Das funktioniert mit existierenden Mitteln.
Ob 20° der richtige Wert ist, müßte man probieren.

ich habe mal soeben probiert:
{sunrise_abs ("HORIZON=45")} liefert 10:29:45.
{sunset_abs ("HORIZON=45")}  liefert 16:04:07

Heute hätte die Sonne um 10:29:45 hier in Hannover die Sonne die 45° Marke überschritten.
Um 16:04:07 wäre sie wieder unter die 45° Marke gefallen.

Leider war es nicht sonnig!


ich meine es genau anders herum. Twilight aktualisiert seine Werte alle 10min. Also ist die Zeit fix und der Sonneneinfallswinkel durch die Zeit variabel. Damit soll am Ende gesteuert werden wie weit die Rollanden herunter fahren sollen. Ob sie überhaupt herunterfahren sollen bestimmt ein externer Licht-/Sonnensensor.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Dietmar63

Twilight ermittelt übrigens hier in Norddeutschland im Moment keine Werte für sr-/ss_astro (-18°).
Die Sonne sinkt nicht mehr so tief unter den Horizont.
Der Wert für light erreicht somit auch nicht den Wert 0.

Im Süden ist das zur Zeit noch anders.


(siehe Anhang / see attachement)


PS: Ich verwende eine geänderte Version von TW, deshalb sieht man mehr Readings.
Gruß Dietmar
FB7390, CUL, 2 FHT, FS20
modules: 98_WOL.pm, 98_Heating_Control.pm,   98_WeekdayTimer.pm, 98_RandomTimer.pm, 59_Twilight.pm

Tobias

Ich habe mich jetzt mal selbst beigemacht und eine kleine Berechnugsprozedur geschrieben. IMHO sollte die nach 99_SUNRISE_EL integriert werden
use Math::Trig;

##########################################
# Prozedur berechnet den Stand der Sonne
# Parameter:
#   keine
# Rückgabewert:
#  Höhe der Sonne in °Grad
#
# Quelle: http://www.jgiesen.de/SME/tk/
##########################################
sub
sonnenstand() {
  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
  my $K=pi/180;

  ############################
  # If set in global, use longitude/latitude
  # from global, otherwise set Berlin/Germany as
  # default
  my $long = AttrVal("global", "longitude", "13.41");
  my $lat  = AttrVal("global", "latitude", "52.51");

  my $deklin = -23.45*cos($K*360*($yday+10)/365);
  my $zeitgleichung = 60*(-0.171*sin(0.0337*$yday + 0.465) - 0.1299*sin(0.01787*$yday - 0.168));
  my $stundenwinkel = 15*($hour + $min/60 - (15.0-$long)/15.0 - 12 + $zeitgleichung/60);
  my $x = (sin($K*$lat)*sin($K*$deklin)) + (cos($K*$lat)*cos($K*$deklin)*cos($K*$stundenwinkel));
  my $hoehe = asin($x)/$K;
  my $y = -(sin($K*$lat)*sin($K*$hoehe) - sin($K*$deklin)) / (cos($K*$lat)*sin(acos(sin($K*$hoehe))));
  my $azimut = acos($y)/$K;
  $azimut = 360 - $azimut if($y<0);

  #return "deklin: $deklin, zeitgleichung: $zeitgleichung, Stundenwinkel: $stundenwinkel, Höhe: $hoehe , Azimut: $azimut";
  #return "Höhe: $hoehe , Azimut: $azimut";
  return $hoehe;
}
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter