Mit dem Einsatz von '...else...' gewinnst Du ein ganz klein wenig Rechenzeit!
Code: Alles auswählen
real SA1 = (1.0*system.SunriseTime("%H").ToInteger()) + 0.01*system.SunriseTime("%M").ToInteger();
real SA2 = (SA1 - 0.25);
if (SA2 < 6.00) { dom.GetObject("Aquariumlicht an um").State(6.00)}
else { dom.GetObject("Aquariumlicht an um").State(SA2)};
real SU1 = (1.0*system.SunsetTime("%H").ToInteger()) + 0.01*system.SunsetTime("%M").ToInteger();
real SU2 = (SU1 + 3.00);
if (SU2 < 19.30) { dom.GetObject("Aquariumlicht aus um").State(19.30)}
elseif (SU2 < 21.45) { dom.GetObject("Aquariumlicht aus um").State(SU2)}
else { dom.GetObject("Aquariumlicht aus um").State(21.45)}
Ich habe mir dieses Astro-Script nicht angeschaut. Da Du die Variablen aber hier deklarierst, scheinen sie nicht Bestandteil des Astro-Scriptes zu sein. Insofern könntest Du auch noch 3 Scriptvariablen einsparen:
Code: Alles auswählen
real rVariable = ((1.0*system.SunriseTime("%H").ToInteger()) + 0.01*system.SunriseTime("%M").ToInteger()) - 0.25;
if (rVariable < 6.00) { dom.GetObject("Aquariumlicht an um").State(6.00)}
else { dom.GetObject("Aquariumlicht an um").State(rVariable)};
rVariable = ((1.0*system.SunsetTime("%H").ToInteger()) + 0.01*system.SunsetTime("%M").ToInteger()) + 3.00;
if (rVariable < 19.30) { dom.GetObject("Aquariumlicht aus um").State(19.30)}
elseif (rVariable < 21.45) { dom.GetObject("Aquariumlicht aus um").State(rVariable)}
else { dom.GetObject("Aquariumlicht aus um").State(21.45)}
Und wenn Du jetzt noch die Stunden der Sonnenauf- und untergangszeiten nicht erst in Ganzzahlen umwandelst und diese dann mit 1.00 multiplizierst, sondern gleich in eine Gleitzahl umwandelst, sparst Du wieder etwas winzige Rechenzeit und das Ganze wird logischer.
Wenn's mein Code wäre, sähe der so aus:
Code: Alles auswählen
real rVariable = (system.SunriseTime("%H").ToFloat() + (0.01*system.SunriseTime("%M").ToInteger())) - 0.25;
if (rVariable < 6.00) {
dom.GetObject("Aquariumlicht an um").State(6.00);
}
else {
dom.GetObject("Aquariumlicht an um").State(rVariable);
}
rVariable = (system.SunsetTime("%H").ToFloat() + (0.01*system.SunsetTime("%M").ToInteger())) + 3.00;
if (rVariable < 19.30) {
dom.GetObject("Aquariumlicht aus um").State(19.30);
}
elseif (rVariable < 21.45) {
dom.GetObject("Aquariumlicht aus um").State(rVariable);
}
else {
dom.GetObject("Aquariumlicht aus um").State(21.45);
}
Ich benutze bei Namensgebungen von Geräten, Script- und Systemvariablen, Programmnamen etc. übrigens keine Leerzeichen. Ob Leerzeichen an irgendeiner Stelle innerhalb HM-Systems zu Problemen führen können, weiß ich nicht.
Ich habe es noch nie gemacht bei meinen Programmierprojekten, also auch hier bei HM nicht....