Script für Mond-Astrodaten

Link-Hinweis:
Ich habe eben im WIIPS-Teil des Forums ein Script zur Berechnung der aktuellen und künftigen Mondphasen sowie Mond- und Sonnenfinsternisse abgelegt

klick

irgendwie gehörts da und hier rein :slight_smile:

Gruß Gerd

Ich habe mich mal ein wenig damit befasst. Ich bin zwar noch am Rätseln, wie ich da eine Grafik rein kriege. Mal kucken wie ich das realisieren kann.

Nachtrag: Dieses Skript ist für meine verhältnisse heftig: Ich probier gerade, alles was in ECHO rauskommt, in Stringvariablen zu stecken, doch das ist sehr kompliziert.
Am besten wäre, ich könnte das gesamte Feld in ein Memo-Feld übertragen und dann im Designer einfach anzeigen.

Ich könnte hierbei Hilfe gebrauchen

mfG Franz

… vielleicht so:

PS: oh je - da hab ich WIIPS und etwas anderes verwechselt … :rolleyes:

ggf. ist dies ein Ansatz für Web:

$mondtag = 3;
$formatted = sprintf("%02.2s", $mondtag);
copy(IPS_GetKernelDir()."media\m_" . $formatted  . ".gif" , IPS_GetKernelDir()."\web\mond.gif");

designer_mon.jpg

Danke,

das sieht ja mal gut aus. Vom Prinzip weiss ich es wie im Designer das Bild richtig darzustellen ist, nur ist im Skript von 32 Grafiken die Rede, obwohl von der erwähnten Webseite nur 31 Grafiken da sind.

:confused::confused:

mfG Franz

… siehe Skript:

//
    $Bildmenge = 31; // alt 32 / Die Menge der einzelnen Mondbilder
//

… für meine Zwecke reit es.

MST

Danke, das hab ich dann wohl irgendwie übersehen.

Nun muss ich nur noch einen Weg finden, das ganze Echo Output in eine String variable reinkriegen. Ich versteh das nicht so richtig mit diesen Functions.

Ich muss das erst in meinen Kopf kriegen

mfG Franz

Hallo,

ok, ich kriegs nicht hin. Und das blöde daran ist, ich versteh auch noch nicht warum.
Jedesmal wenn ich eine Variable im Programm beifüge, krieg ich die Syntax-Meldung ‚Undefined Variable‘.

Ich schnall es nicht. Kann man in solchen Functions keine Variablen beifügen?

Wie sonst krieg ich die Texte da aus diesem Skript raus in eine Variable?

mfG Franz

Hallo,

ich habe ein Verständnisproblem:

Ich versuche das Skript so umzubauen, so dass ich per fwrite alle echo’s in eine TextDatei schreiben kann, leider klappt das nicht. Ich kriege immer folgende Fehlermeldung: [b]Undefined variable: handle in <b>C:\IP-Symcon\scripts[/b]

Was tu ich:

Oben im Skript gebe ich die Textdatei an, wo ich reinschreiben möchte:

$filename = "Moon_Phase.log";
$handle=fopen("C:/IP-SYMCON/".$filename."", "");

// aktuelle Mondphase, Beleuchtung der Mondscheibe in %, 1/31tel-Grafik
MondAusgabe();

// nächste Mondphasen, nächste Mond- und Sonnenfinsternisse
NaechsteMondphasen();

fclose($handle);

So, weiter unten in den functions, habe ich dann das ausprobiert:

function MondAusgabe(){
    echo "Aktual Data / Graphic:
";
    fwrite ($handle, "Aktual Data / Graphic:
");
    echo "img src=\"" . Mondtag() . ".gif \"" . "alt=\"Die aktuelle Mondphase\" border=\"2\"

";
   }

  function ZeitZeile($JDE){
    $msg  = " ".floor($JDE)." Days, ";
    $msg .= "".JD_Stunde($JDE)." Hours, ";
    $msg .= "".JD_Minute($JDE)." Minutes, ";
    $msg .= "".JD_Sekunde($JDE)." Seconds
";
    echo $msg;
  }

  function BeleuchtungZeile($zeit){
   echo "Illuminated Part of the Moon:";
   echo (round(Beleuchtung($zeit) * 10000) / 10000)."
";
  }
  • Ich habe auch mittlerweile alle Ausgabetexte auf english übersetzt.

So, warum meldet mir IPS ein Syntax Error in der Zeile wo fwrite steht ? Er sagt, er kennt die Variable ‚handle‘ nicht. Ich habe sie aber oben deklariert, also versteh ich dies nicht

Bitte um Hilfe

mfG Franz

Hallo Franz,

warum schaust Du nicht mal in der Doku nach: www.php.net?

fopen muss ganz anders aufgerufen werden, Du erhaelst so immer einen Fehler. Beispielhaft so, steht aber alles dort.


  <?php
$handle = fopen ("/home/rasmus/file.txt", "r");
$handle = fopen ("/home/rasmus/file.gif", "wb");
$handle = fopen ("http://www.example.com/", "r");
$handle = fopen ("ftp://user:password@example.com/somefile.txt", "w");
?>         

Hallo Torro,

ich weiss, dass der fopen Befehl noch nicht richtig ist. Doch darum geht es leider nicht. Es geht drum, dass er immer sagt, die Variable $handle wäre nicht definiert.
Ich habe alle PHP Manuals durchgelesen, doch wurde hierbei diesem spezifischen Problem nicht fündig.
Ich hab mal bisschen rumprobiert und habe rausgefunden, dass man jeweils wo function($irgendwas) noch $handle mit dranhängen muss.

Ich doktore noch mal ein wenig rum.

mfG Franz

Hallo Franz,

Du musst als erstes mal den fopen Befehl korrekt machen. Als naechstes ist dann Deine Funktion das verursachende Problem:

In einer Funktion sind keine Variablen verfuegbar, die dieser Funktion nicht bekannt gemacht wurden. In Deinem Fall muss Du der Funktion die Variable einfach uebergeben:


MondAusgabe( $handle );

und die Funktion so ergaenzen:


function MondAusgabe( $handle ){ 

...

}

Hallo,

danke Torro. Das wars. Ich bin gerade dabei, dass überall hinzuzufügen.

Danke für den Hinweis. Ich muss mich mal intensiv mit Funktionen befasseen. Ich habe das bis jetzt immer ein wenig verdrängt.

mfG Franz

Hallo,

Ich habe das Skript aufgegriffen und es so verändert, dass der ganze ‚echo‘ Teil nun als Output in einer Stringvariable abgespeichert wird.

Einfach dann nur eine Stringvariable definieren und sie 'LUNAR_DATA nennen.
Im Designer können dann die Daten bequem in einem MEMO-Feld angezeigt werden.
Nebenbei habe ich die Bilder-Anzahl auch auf 31 runtergesetzt (Tipp von steiner). Welches Bild gerade angezeigt werden soll wird in einer Integervariable gespeichert, die ich ‚LUNAR_IMAGE‘ getauft habe (kann natürlich nach bedarf umbenannt werden)

Wie ich es gemacht habe, ist vielleicht nicht die eleganteste Art, dennoch es klappt tadellos. Bei so vielen ineinander verschachtelten Functions war es nicht einfach, eine elegante Lösung zu finden.
Natürlich bin ich mir sicher, dass jemand nun eine bessere Lösung zeigen wird, aber hey, ich hab’s nach meinem PHP Wissensstand gemacht.

So sieht es dann bei mir aus

Für die Grafiken, tja, das habe ich jetzt noch nicht genau kontrolliert ob die übereinanderstimmen mit dem Kalender. Wer es trotzdem versuchen will, Ich habe sie durchnummeriert, man brauch die Variable LUNAR_IMAGE, Wert 1 nur mit Bild ‚moon_01.gif‘ zu verbinden, etc…bis 31

Die ZipDatei ist leider zu gross, also wer Interesse hat, bitte mich per PN benachrichtigen und eine email Adresse angeben.

mfG Franz

LUNAR_DATA.ips.zip (4.62 KB)

hallo franz !

danke für das skript :slight_smile: ich hatte auch versucht, die daten in variablen zu bekommen. leider ohne wirklichen erfolg. ich wollte mich gerade nochmal an das skript machen und hab deinen download gesehen. läuft wunderbar und einfach. kannst du mir vielleicht noch die grafiken zukommen lassen?
ich wollte sie dann noch freistellen, damit sie zumindest einen hellen hintergrund haben und nicht auf schwarz sind.

also vielen dank an den ursprünglichen ersteller des skriptes und danke an den modifizierer :smiley:

happy day und dank ,frank

Danke an alle Beteiligten.
Das Script läuft so, wie ich mir das vorgestellt habe.:):):slight_smile:

Hallo,
interessant, was aus einer Sache wird, wenn man mal ein paar Tage nicht ins Forum sehen konnte. Aber schön, so solls ja sein. :slight_smile:

Wegen der Bildanzahl: Ich habe das einfach so hingenommen, wie es da im Original stand. Wenn da was mit „31“ dastand, ging ich bisher davon aus, dass da auch ein „0“-Fall vorkommt. Also 0…31 = 32. Und ein Fehler kam (bei meinen Stichproben) nicht vor. 31 macht auch wenig Sinn, wenn man sich die Original-Grafiken ansieht mit den umlaufenden Zeigern (m.E. muß das durch 4 teilbar sein wg. 4 Quadranten). Ok, wenns denn so ist…

soeben nochmal nachgesehen:
Auf dem Original-Server liegen die Bilder 1.gif bis 32.gif. Also sehr wohl 32.

Schön wäre es nun m.E. wenn da jemand noch folgende Werteberechnungen ergänzen könnte:

  • Mondazimut
  • Horizontwinkel Mond
  • Mondauf- / Untergang
    Die Sonnenwerte haben wir ja schon aus Torros extended Weather bzw (SA/SU) als direkte PHP-Funktion.

Es gibt da ähnliche Seiten mit offenem JS-Code, der u.a. genau das errechnet, alles ebenfalls basierend auf Julianische Kalenderberechnung. Auf dem ersten Blick sind das dort sogar offenbar im Kern die gleichen math. Verfahren und Funktionen (ist ja auch der gleiche Mond :smiley: ).

Klick

Wenn ich Zeit hätte, würd ich es mir ja ansehen… aber im Moment ist es bei mir wirklich zu eng dazu.

Das ganze in Variablen packen… klar, die Texte müssen dann wegbleiben. Ich hab des Verständnisses wegen die erstmal dran stehen lassen. Das Teil ist so schon unübersichtlich genug. Ich werd da was machen, schon im eigenen Interesse, um das auch in Variablen zu bekommen… So long ist Franz’ Lösung ja schon mal sehr gut nutzbar.

Gruß Gerd