Fragen/Bug? zu Extended Weather Graph-Werten

Hallo,
ein Frohes und Gesundes 2008 wünsche ich

Folgende Fragen sind aufgetaucht bei meinen „Forschungsarbeiten“ übers Jahresende:

  • Sonnenwinkel:
    Im Gegensatz zu den anderen Werten ist zu diesem Begriff keine Definition im Netz zu finden (im Forum / Wiki leider auch nicht)
    Gehe ich Recht in der Annahme, daß das der momentane Höhenwinkel der Sonne am Standort, bezogen auf den Horizont ist? Die Werte lassen darauf schließen…

  • Azimut Sonne:
    Entweder gibt es widersprüchliche Definitionen (wo ich aber eben nur „die andere Variante“ gefunden habe), oder hier ist ein Bug, oder ich seh da was völlig falsch:

Die real auftretenden Werte liegen bei mir nur zwischen 90°…270°. Dagegen werden >270°…360°/0°…<90° nie erreicht, wobei bei mir Mittag=Mitternacht=180° auftritt. D.h. die Werte laufen bis abends hoch bis knapp 270°, dann wieder zurück bis 90° (früh), dann wieder hoch in Richtung 270° usw.

Laut Definition (u.a. Wikipedia) ist das aber der Winkel zwischen Horizont und Meridiankreis, wobei der je nach Interpretation entweder in N oder S bei 0° seine Zählung beginnt. Dieser Winkel müßte sich ergo im Bereich von 0…360° umlaufend bewegen, und entweder Mittags oder Mitternacht 0° annehmen. Da stimmt doch etwas nicht. Oder?

Zitat Wiki: "Das Azimut ist der Winkel zwischen der Meridianebene und dem Schnittpunkt des Vertikalkreises eines Gestirns oder eines Punktes auf der Erdoberfläche mit dem Horizont. Es wird meistens von Norden, manchmal aber auch von Süden gezählt – dann hat z. B. ein Stern im Westen ein Azimut von 90° statt 270°… "

Hier noch eine andere (engl) Definition, aber mit nettem 3D-Bild dazu

http://www.heavens-above.com/glossary.aspx?&term=azimuth

Oder sehe ich das irgendwie verkehrt? Gibt es anderslautende Definitionen? Was wollen mir die Werte im WIIPS dann sagen?

Gruß Gerd

Hallo msr_junky,

kannst Du mal bitte etwas dazu sagen?

Danke.

Gruss Torro

Hallo Gerd,

da ich diese Werte über IPS verarbeite (für meine Markisen), kann ich dazu etwas sagen.

Deine Annahme zum Sonnenwinkel ist korrekt - Sonnenwinkel über Horizont.

Der Azimuth wird/wurde falsch berechnet - ich hatte bereits eine Korrektur an Torro gegeben - vielleicht wurde diese noch nicht eingepflegt? :cool:

hab mal schnell ein FTP nach Hause gemacht und hier die korrekte Funktion aus /IP-SYMCON/web/modules/weather/weather.ips.php :


 public function azimut ($bKarte, $lKarte ) {
	//Berechnung Sonnenwinkel über Horizont
	$bKarte1 = deg2rad ( $bKarte );
  // in der folgenden Zeile Korrektur für abgeplattete Erdkugel
	$b = $bKarte + 0.1924 * sin(deg2rad(( 2 * $bKarte )));
	$TDJ = date("z"); // Jahrestag
  // Deklination berechnen
	$ds = 23.4 * sin(deg2rad(360 * ( 284 + $TDJ ) / 365));
	$bs = sprintf ( "%1.2f",$b );
	$z1= 720/365.25;
	$z2= 360/365.25;
	$zgl = 8 * sin(deg2rad(($z2 * ($TDJ - 185)))) + 10 * sin(deg2rad(($z1 * ($TDJ - 79))));
  // Kulmination
	$tk = 13 - ($zgl + 4 * $lKarte) / 60 + round( ($lKarte - 7.5) / 15) + date("I") ;
	$tks = sprintf("%1.2f",$tk); 

  $th = date("H");    // Stunde im 24 h Format
	$tm = date("i");    // Minute
  $tmz = $tm / 60;    // Minute / 60
	$tt = $th + $tmz;   // Stunde + Minute in Dezimaldarstellung
	$t = ($tt - $tks) * 15;
  // Sonnenwinkel
	$x1 = deg2rad ($ds);
	$x2 = deg2rad ($t);
	$x3 = deg2rad ($b);
	$sh = asin(cos($x1) * cos($x2) * cos($x3) + sin($x1) * sin($x3));
	$sh1 = rad2deg($sh);
	$sh1s = sprintf("%1.2f",$sh1);
	if ( IPS_VariableExists ( 'RRD_Sonnenwinkel' ) ) {
		SetValueFloat ( 'RRD_Sonnenwinkel', $sh1 );
		// echo "Sonnenhöhe aktuell ".$sh1s."°
";
	}

	//Berechnung Azimut
	$azi =asin(cos($x1) * sin($x2) / cos($sh));
	$azi1 = 180 + rad2deg($azi);
	$azi1s = sprintf("%1.2f",$azi1);
	if ( IPS_VariableExists ( 'RRD_Azimut_Sonne' ) ) {
		SetValueFloat ( 'RRD_Azimut_Sonne', $azi1 );
		// echo "Der Azimut beträgt ".$azi1s."°
";
	}
	if ($this->debug) { echo "
 1501: Azimut " . $azi1 . " (Breite / Laenge) (" . $bKarte . " / " . $lKarte . ")"; }
	return (double)$azi1;
 }

Gruss aus Wiesbaden
Dieter

Danke!
Das wirds wohl sein. Da ich im Moment aber noch im Büro hocke, komm ich erst heut abend dazu das zu ändern. Mal sehen wo die Sonne dann heute Nacht bei mir langwandern wird :smiley:

Neben der Anzeige will ich die Werte übrigens auch künftig zur intelligenten Jalousiensteuerung nutzen, kombiniert mit WS2000-Helligkeitssensor, Windwerten und Temperaturen.

BTW / apropos Wind(richtung):
Hat von Euch schon mal einer über Polardiagrammdarstellung von Häufigkeit per Windrichtung/Stärke nachgedacht? So, wie das in Windkraftanlagen-Steuerungen bzw. deren Serviceberichten üblich ist? Nur mal als Frage, obs da schon was gibt oder geplant ist, bevor man das Fahrrad nochmal baut/erfindet…

Gruß Gerd

Hallo Gerd,

ich hatte eine Windrose mal in Planung, das scheiterte aber an der kostenpflichtigen Lizenz der JPgraph Bibliothek.

Gruss Torro

Hallo babba,
hallo Gerd,

diese Funktion habe ich natuerlich bereits so im weather.ips.php drin, ist also auch so im aktuellen CVS vorhanden. Das kann man hier sich uebrigens per Browser anschauen.

ok. Ich entnehme dem also, dass da nix vorhanden oder geplant ist. Ich hätte da vielleicht einen fürs IPS kostenfreien Ansatz.

  • Mein Prob dabei: Ich habe noch nie unter PHP Grafik programmiert. Gibts da einen sinnvollen Link auf irgendwas, um sich in die PHP-Grafik-API einzulesen? Bräuchte lediglich Polygon- und Kreisfunktionen, die dann auch farblich füllbar, sowie Text und dessen Parametriesierung. Das sollte ja wohl mit Standard-Libs möglich sein.

Ansonsten gäbe es schon alternative Pakete aus dem halböffentlichen Umfeld (DLRG, Max-Planck-Gesellschaften usw), die für nichtkommerziellen Einsatz lizenzfrei wären. Aber warum sollte man das von vorn herein selber ausschließen? Das trigonometrische Formelwerk (erprobt in anderer Anwendung / Java) hab ich und es ist auch nicht allzu aufwendig.

  • Prob. Nr. 2 (so es zum WIIPS und dessen RRDs kompatibel sein sollte):
    Die Schnittstelle zum Datenzugriff sowie Parameter zum Zeitbereich und Objektbezug.

Ich bauche initial ein Wertearray mit statischer Struktur, mit je einer Zeile je Kreissegment-Cluster (also z.B. alle 22,5° = alle Haupt- und Nebenwindrichtungen). Womit das Array dann gefüllt wird, also das Datenbankauslesen inkl. Richtungs-Clustering, statistischer Verdichtung, Objekt- und Zeitbezug, lassen wir mal in einer vorgelagerten Schicht. Ich würde erstmal ein SQL-Auslese- und Vorverarbeitungsmodul vorschalten (da ich SQL kenne, im IPS aus PHP heraus inzwischen nutze und die Werte bei mir eh im SQL-Server drinne stehen), aber mich auch noch „nebenbei“ in RRD einzuarbeiten, dazu fehlt mir die Zeit. Evtl. im Anschluß, aber nicht gleichzeitig oder vorher noch.

Mit einer solchen 16-Record-Array-Schnittstelle könnte man m.E. das dann erweiternd problemlos auch aus den RRDs versorgen, wobei da ohnehin zu beachten wäre, inwieweit zeitlich zurückliegende Werte noch sinnvoll auswertbar sind wegen deren „Verschleifung“. Dazu fehlen mir auch die praktischen Erfahrungen / RRD-know how.

Nun schaut man natürlich nicht bei jedem Problem, noch dazu wenn man selbst noch unsicher ist, ob die Werte in ihrer Bedeutung überhaupt richtig verstanden wurden, nach Updates oder trackt gar CVS-History-Graphen…:rolleyes:

Oder hab ich da einen Updatehinweis übersehen?

Edit:

Sehe gerade, dass das letzte Ändern im CVS „3 Monate“ her ist. (Gibt es in dem CVS-System nirgendwo ein richtiges Datum???) Mein WIIPS-Download ist vom 27.11.2007 19:54, also demnach jünger. Heißt übrigens „wiips-30-10-2007.zip“

Demnach ist der Fehler entweder trotz Update noch vorhanden, oder am 27.11. lag das Update noch nicht im Download.

Näheres nach Test der Änderung.

Hallo Gerd,

ich weiss wiederum gar nicht, welche Version Du ueberhaupt im Einsatz hast, habe gerade meine Glaskugel nicht zur Hand :smiley:

Updates gibts auch erst zum Usertreffen.

Gruss Torro

Winmerge sagt / zeigt, das beide Versionen (mein Download und das von babba / aus dem CVS) bis auf 3 zusätzliche Leerzeichen am Beginn der Zeilen 1523, 1525, 1550 identisch sind.

Der eingangs beschriebene Fehler hat also mit dem Update nichts zu tun.

Hallo Gerd,

hallo babba,

dann hat babba wohl nen Bug reingemacht?

Gruss Torro

tja.

Hier meine aktuelle Wertetabelle. Die Werte laufen schon wieder rückwärts in Richtung derjenigen, die heute Mittag schonmal herrschten, also back-to-east:

Spalten: Datum / Wert / Variablenname


2008-01-02 19:45:02.747	266.2150	RRD_Azimut_Sonne
2008-01-02 19:42:02.443	266.8400	RRD_Azimut_Sonne
2008-01-02 19:39:03.213	267.4610	RRD_Azimut_Sonne
2008-01-02 19:36:02.503	268.0800	RRD_Azimut_Sonne
2008-01-02 19:33:02.183	268.6960	RRD_Azimut_Sonne
2008-01-02 19:30:04.310	269.3090	RRD_Azimut_Sonne
2008-01-02 19:27:03.460	269.9200	RRD_Azimut_Sonne

Es ist der originale „als IPS-Variable erzeugter“ Variablenwert, den ich seit einigen Minuten onchange in meine Datenbank reinhole. Ich laß das mal einen Tag mitlaufen und poste euch dann die ganze „Datensammlung“

Gruß Gerd

Idee:
Das ganze muß doch von meinen Koordinaten abhängen. Um auszuschließen das die falsch sind:

Sie sind in der Form 54.00 bzw 12.00 eingegeben, also mit DezimalPUNKT und 2 Dezimalstellen (andere Werte als „.00“). Wird das evtl. miß-interpretiert und das System verfrachtet mich nach Südamerika oder so?

Aber auch da müßte irgendwann 0° erreicht werden, was gegen diese Ursachen-Annahme spricht…

Hallo Gerd,

bei mir steht folgendes drin:

Latitude N 51,35__
Longitude W 12,48__

Ueberpruefe einfach mal, was bei Dir tatsaechlich verarbeitet wird im weather Modul. Das nachfolgendes kurze Script gibt Dir dafuer die Werte aus:


   $timers=TWZ_GetItems();
   if(is_array($timers)) {
       foreach($timers as $timer) {
         $tdata=TWZ_GetItem($timer);
          if ( isset($tdata['wtype']) ) {
              if($tdata['wtype']=="Sunset" || $tdata['wtype']=="Sunrise") {
                 print_r($tdata);
              }
          }
       }
    }


Gruss Torro

Hallo Torro,

also ich bekomme da überhaupt nur Ergebnisse, wenn ich die Einschränkungen folgendermaßen aufhebe, ansonsten gibt es gar keine Werte


 $timers=TWZ_GetItems();
   if(is_array($timers)) {
       foreach($timers as $timer) {
         $tdata=TWZ_GetItem($timer);
//          if ( isset($tdata['wtype']) ) {
//             if($tdata['wtype']=="Sunset" || $tdata['wtype']=="Sunrise") {
                 print_r($tdata);
//             }
//         }
       }
    }

Dann kommt folgendes:


Array
(
    [active] => 1
    [description] => RRD_DataPoller
    [timertype] => Custom
    [timer] => Array
        (
            [evalcode] => TRUE
        )

    [actiontype] => Macro
    [action] => Array
        (
            [scriptname] => RRD_DataPoller
        )

)
Array
(
    [active] => 1
    [description] => RRD_GraphBuilder
    [timertype] => Custom
    [timer] => Array
        (
            [evalcode] => TRUE
        )

    [actiontype] => Macro
    [action] => Array
        (
            [scriptname] => RRD_GraphBuilder
        )

)
Array
(
    [active] => 1
    [description] => WEATHER_DataPoller
    [timertype] => Custom
    [timer] => Array
        (
            [evalcode] => TRUE
        )

    [actiontype] => Macro
    [action] => Array
        (
            [scriptname] => WEATHER_DataPoller
        )

)
Array
(
    [active] => 1
    [description] => WEATHER_GraphBuilder
    [timertype] => Custom
    [timer] => Array
        (
            [evalcode] => TRUE
        )

    [actiontype] => Macro
    [action] => Array
        (
            [scriptname] => WEATHER_GraphBuilder
        )

)


Ein Feld namens „wtype“ bzw. das auch noch mit o.g. Inhalten, das gibt es da nicht. Allerdings ändern sich die Werte ja und ich habe die auch in den IPS-Variablen. Also irgendwas muß da doch arbeiten und rechnen??? :wink:

Ich hänge mal unten die WIIPS-Graphen für Tag und Woche vom Azimut an, echt toll das WIIPS, selbst zur Fehlervisualisierung

Die Aussetzer heute sind normal, da hatte ich die Kiste kurz mal runter.

Gruß Gerd

w1.png

w2.png

Hallo Gerd,

dann ist bei Dir etwas falsch konfiguriert, wuerde ich jetzt mal behaupten. Wo hast Du denn Deine Geodaten eingetragen ???

Hast Du eine superalte IPS Version? Sicher nicht. Im Moment bin ich sprachlos. Habe gerade bei 4 verschiedenen Leuten das Script laufen lassen, bei allen kommt das richtige Ergebnis.

Bevor wir in WIIPS weiter suchen, musst Du erstmal das bereinigen, dass muss klappen.

Gruss Torro

Das IPS ist von November und hat sein Live-Update natürlich bekommen. Die WIIPS-Datei ist von deiner Downloadseite. Da steht übrigens immer noch als Rel-Datum „30.10.2007“ und die Datei heißt immernoch „wiips-30_10_2007.zip“ wie meine im letzten Jahr runtergeladene, aber der Inhalt muß nun ein anderer sein:

Ich habe heute da das WIIPS neu heruntergezogen für eine andere IPS-Installation (übrigens dort auch frisch geladenes IPS heute installiert), und sehe, dass sich da wohl einiges geändert hat im WIIPS / Extendet Weather.

Ob der Fehler beim Azimut weg ist, kann ich noch nicht sagen, da die neue Installation erst seit wenigen Minuten Daten zieht. Was ich aber sehe sind neue Fehler:

  • Der Sonnenwinkel ist POSITIV, obwohl hier Nacht ist!!,

  • Beim Neu-Anlegen von extended Weather-Graphen fehlen einige auswählbaren Werte in der Selectbox, z.B. die Deklination. Bei „Edit“ sind sie dann wieder in der Selectbox enthalten.

Wo ich meine Geodaten eingetragen habe:
„…:8085/modules/weather/weather.php?page=configuration&action=edit&id=0&pt=…“
Also „Configuration - Weather Graph editing“ ist übrigens „V0.61“

Ich versuche dein Script gleich nochmal auf dem Neuen IPS-Server (so ich da jetzt remote draufkomme, steht nicht hier), und melde mich dazu ggf. nochmal.

Gruß Gerd

Eine Gute und eine schlechte Nachricht:

nehme ich zurück, Wert stimmt nun, war wohl noch zu früh vorhin.

ABER: Dein Script reagiert genauso! Erst wenn ich dort die Kommentare wieder setze, bekomme ich (zumindest auf den ersten Blick) ähnliche Ergebnisse! Also auch auf der ganz frisch installierten Kiste kein Feld namens „wtype“!

Hallo Gerd,

konfiguriere doch bitte mal diese Werte dirket im IPS und schau dann nochmal, was passiert.

Gruss Torro

ähm… bitte wo „direkt im IPS“ konfiguriere ich Geodaten?