mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

Alles, was keinem Spezialbereich zugeordnet werden kann. Hier gehören keine Themen hin, die ein eigenes Fachforum haben. Deshalb ist dieses Forum moderiert.
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#11

Beitrag von Wetterfrosch »

Noch eine Frage, sehe ich das richtig, dass ich die Uhrzeit initial in UTC erfassen muss, d.h. das Script arbeitet mit der UTC-Zeit?

Und noch eine Frage, beim Zählen des "Tages des Jahres" beginnt diese Zählung mit dem ersten Tag im Jahr mit 1 oder mit 0, denn in PHP ergibt die Ausgabe date(z) als erster Tag im Jahr 0 aus.
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#12

Beitrag von olicat »

Hi!

Ja, es wird UTC genutzt.
Die Zaehlung beginnt bei Python bei 1. Fuer PHP musst Du also eine 1 addieren: date('z') + 1;.

Oliver
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#13

Beitrag von Wetterfrosch »

Perfect, dann habe ich es richtig umgeschrieben, Script scheint nun auf PHP zu laufen, ich werde testen.
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#14

Beitrag von olicat »

Hi!

Ich bin auf Deine Ergebnisse gespannt. Allerdings ist (zumindest hier) gerade keine dankbare Zeit fuer die Berechnung der Sonnenstunden.

Oliver
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#15

Beitrag von Wetterfrosch »

Samstag hätte ich es toll testen können, da hatten wir den ganzen Tag frühlingshaftes Wetter mit strahlend blauem Himmel, doch Sonntag und die kommenden Tage ist durchweg Regen angesagt.
Aber ich hatte zum Testen mal die Schwellenwerte vom Samstag im Script abgerufen, d.h. ab wann würde das Script morgens "Sonne" ausgeben und wann abends das letzte mal und dann mal mit den realen Solarwerten verglichen, da passte das recht gut aber jetzt mal abwarten und dann mal im Realbetrieb testen.
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: mit Solarstrahlung ungefähre Sonnenscheindauer bestimmen?

#16

Beitrag von Wetterfrosch »

Anbei mal mein PHP-Code um den Schwellenwert für die Solarstrahlung zu bestimmen, ab dem ausgegeben wird, dass die Sonne scheint (abhängig vom Standort, der Uhrzeit (Achtung, Script arbeitet mit UTC als Zeit, dies unbedingt beachten, denn verwendet man die locale Zeit, dann berechnet es Mist) und dem Datum, d.h. in Abhängigkeit des Sonnenstandes).
Man muss das Script dann nur über ein Cronjob z.B. alle Minute durchlaufen lassen und dann beim Punkt "Sonne scheint" einen Zähler einbauen, der dann immer 1 Minute dazu zählt (vorausgesetzt Script wird jede Minute aufgerufen), so erhält man dann die Sonnenscheindauer.

Gestern gab es bei mir sporadisch Sonne und ich habe das Script mal mit dem tatsächlichen Sonnenschein draußen verglichen, bei mir passte es recht gut, vorausgesetzt, die Solarwerte die die Station liefert passen.

Code: Alles auswählen

<?php
$solarradiation //Variable die von der Wetterstation den Solarwert aufnimmt
$latitude =  47.8214; //hier muss der Stationsbreitengrad in ° eingegeben werden, in meinem Fall 47.8214°
$longitude = 7.6398; //hier muss der Stationslängengrad in ° eingegeben werden, in meinem Fall 7.6398°
$timestamp = time();
$minutesjour = gmdate("H",$timestamp) * 60 + gmdate("i",$timestamp); //aktuelle UTC-Uhrzeit in Minuten
$dayofyear = date("z",$timestamp)+1; //Tag des Jahres, Zählbeginn am 1. Januar mit 1

$theta = 360 * $dayofyear / 365;

$equatemps = 0.0172 + 0.4281 * cos((pi() / 180) * $theta) - 7.3515 * sin((pi() / 180) * $theta) - 3.3495 * cos(2 * (pi() / 180) * $theta) - 9.3619 * sin(2 * (pi() / 180) * $theta);

$corrtemps = $longitude * 4;

$declinaison = asin(0.006918 - 0.399912 * cos((pi() / 180) * $theta) + 0.070257 * sin((pi() / 180) * $theta) - 0.006758 * cos(2 * (pi() / 180) * $theta) + 0.000908 * sin(2 * (pi() / 180) * $theta)) * (180 / pi());

$tempsolaire = ($minutesjour + $corrtemps + $equatemps) / 60;

$angle_horaire = ($tempsolaire - 12) * 15;

$hauteur_soleil = asin(sin((pi() / 180) * $latitude) * sin((pi() / 180) * $declinaison) + cos((pi() / 180) * $latitude) * cos((pi() / 180) * $declinaison) * cos((pi() / 180) * $angle_horaire)) * (180 / pi());

if ($hauteur_soleil > 3) 
{
$seuil = (0.73 + 0.06 * cos((pi() / 180) * 360 * $dayofyear / 365)) * 1080 * pow((sin(pi() / 180 * $hauteur_soleil)), 1.25);	
$seuil = round($seuil,0);
}
else{
	$seuil=0;
}


if($solarradiation > $seuil && $seuil > 0)
{       
echo "Sonne scheint";
}
else{
echo "kein Sonnenschein";
} 
?>
Antworten