IPSTwilight - Dämmerungsberechung und grafische Darstellung

Hallo Leute,

hatte mal wieder ein produktives Wochenende (letztendlich auch dank des „tollen“ Wetters) und habe meine „Dämmerungs“ Script mit der
GD Library etwas gepimpt.

Funktion ist im wesentlichen altbekannt: es werden nach täglich nach Mitternacht diverse Dämmerungszeiten berechnet und auch gleich eine tagesaktuelle Grafik generiert. Es gibt auch noch die Möglichkeit zur Angabe von Limits und auch diese werden grafisch aufbereitet.

Auf die berechneten Werte kann man dann wiederum mit anderen Modulen verlinken…

Beschreibung und Installationsanweisungen habe ich wieder ins WIKI gestellt.

[Update 2011-11-21] - Anpassung 2.5
[Update 2012-03-17] - Eingliederung in die IPSLibrary

lg
Andreas

IPSTwillight_2011-06-19.zip (5.75 KB)

IPSTwillight_2011-11-21.zip (6 KB)

Wow! Wieder mal super umgesetzt.

Ich hatte auch ein Script dafür, das kann ich jetzt bei Gelegenheit beruhigt ersetzen.

Vielen dank!

sowas von professionell…haben die dir schon nen Nebenjob hier angeboten??
Durch deine Sachen gewinnt IPS extrem.

P.S. wozu die Limits ??:loveips:

Hallo Andreas,

kann es sein das in der IPSInstaller die Function „CreateMedia“ fehlt. Die entsprechende Funktion wird anscheinend nur für Twillight benötigt wird.

   $YearMediaId          = CreateMedia ('IPSTwillight_Year',          $CategoryIdGraphics, IPS_GetKernelDir().'media\\IPSTwillight_Year.gif',          false,1,'Sun');

den AKTUELLEN IPS_Installer nehmen !

OK. Hätte ich auch selbst darauf kommen können :smiley:

Bitte das nächste mal im Thread vermerken, dann falls ich nicht darüber :wink:

Ne, da ist die Funktion auch nicht drin.

OK. Doch drin, aber bitte die WIKI updaten, führt zu leichten Verwirrungen!

Das steht da doch :wink:

Danke.

Man(n) sollte sich halt nicht auf sein Gefühl verlassen.

hallo,
ich habe alles nach WIKI gemacht, trotzdem bleib ich hier hängen:

Fatal error: Call to undefined function CreateMedia() in [Program\Weather\IPSTwillight\Scripts\IPSTwillight_Installation] on line 35

der Installer ist die (aktuelle?) Version vom 16.6.11 für IPS 2.4

was mach ich falsch?

Bin ich auch drauf reingefallen - es gibt eine aktuellere Version vom Installer…

Und zwar hier: http://www.ip-symcon.de/forum/f53/ipsinstaller-einige-hilfreiche-scripts-autom-installation-13228/

Gibt ne Version vom 19.6.^^

Danke, das wars - nur die aktuellste der aktuellen Versionen nehmen … smile

Hilft manchmal auch so einen Fred durchzulesen, die Kommentare vorher hatten auf das gleiche Problem hingewiesen. :wink:

Gruß
Bruno

Hallo Andreas,

bekomme ich das gute Stück auch ohne den Logger installiert?

Den brauche/verstehe ich nicht.

SUPER!
Ich habe mir das jetzt mal installiert. Das sieht toll aus und erfüllt augenscheinlich meinen Zweck (bin beeindruckt).
Wie kann ich nun auf die ermittelten Zeiten ein Ereignis auslösen?

Ereignis kannst Du auslösen, indem Du nach der Berechnung der Zeiten, jeweils einen neuen Timer auf diese Zeit definierts:

Einfach Stunde und Minute aus dem String extrahieren und einen Timer anlegen. Wie man den Timer anlegt, kannst Du Dir zB in der Funktion „CreateTimer_OnceADay“ im IPSInstaller Package ansehen.

hier meine Anfänger-Lösung, sicher nicht sehr elegant, aber funktioniert
(die Profis mögen mir verzeihen)

Beispiel Schalterskript (einschalten): (45906 ist hier die ID des Geräts)


<?
HM_WriteValueBoolean(45906, "STATE", true);
?>

Im Skripteditor rechts ein Ereignis hinzufügen (zyklisch, Datum täglich, Zeit einmalig, keine Zeit eingeben) wichtig ist dabei die Ereignis-ID, die anschliessend im Objektbaum unterhalb des Schalterskripts erscheint.

dann brauchst Du aus dem Objektbaum die ID´s der Dämmerungszeit (weather.IPSTwilight.Data) sunriseEnd , hier: 36020
und die Ereignis ID von oben, hier 37569.

das folgende Skript liest und formatiert die sunrise-Zeit und trägt sie beim Schalter-event täglich neu ein.
hier: Skript sunset mit einem Ereignis zyklisch, täglich z.B. um 12.00 Uhr .


<?

$sunrise = GetValueString(36020 /*[Program\Weather\IPSTwillight\Data\SunriseEnd]*/);
//
 $sunrise_array = explode (":", $sunrise );
//
$Hour =  $sunrise_array[0];
$Minute =  $sunrise_array[1];
//
IPS_SetEventCyclicTimeBounds(37569, mktime($Hour, $Minute, 0), 0);

?>


umgekehrt beim sunrise verfahren (ausschalten mit „STATE“, false)

OK, das ist schon mal was, aber gibt es nicht eine elegante Lösung beim Erzeugen der Variablen auch gleich für jede der Zeiten einen Timer zu setzen, dann könnte man die sofort benutzen.

Ich musste auch nochmal den neuesten Installer laden und dann klappte es wie am Schnürchen! Wirklich gute und saubere Arbeit, Andreas (krieg ich selbst so nicht hin)! :slight_smile: … echt… :cool:!
Grüße, Benjamin

IPSTwilight ist nun auch in die IPSLibrary integriert und liegt auf meinem Developer Branch zum Testen bereit (Installation siehe auch WIKI)

Als Neuerung gibt es jetzt auch Callback Methoden, die jeden Tag zu den diversen Dämmerungszeiten aufgerufen werden.
Dort kann man seinen eigenen Code platzieren, der dann autom. zur jeweiligen Dämmerungszeit ausgeführt wird.