Hallo,
ich möchte gern einen Steuerbefehl in der 99_myUtils nur ausführen lassen, wenn es bis zum Sonnenuntergang noch mindestens 2h sind. Wie baue ich mir denn da am besten das if-Statement zusammen?
Gedanklich ungefähr so:
if ( (UhrzeitJetzt + 2h) <= sunrise("HORIZON=-0.833") ) {
fhem "set Arduino_Pin22 on";
...
Wie muss denn hier der korrekte Perl Code aussehen?
Danke für eure Hilfe
Hi,
kann sein das geht viel einfacher, aber ein Weg "zu Fuß":
Eine sub für die Umrechnung von Stunden Minute Sekunde in Sekunden (seit Mitternacht)
sub str2sec {
my ($h,$m,$s) = split ':',shift;
return $h*3600+$m*60+$s;
}
Dann liefert Dir dies die aktuelle Zeit in Sekunden seit Mitternacht
{str2sec("$hms")}
und diese die Sekunden seit Mitternacht für den Sonnenuntergang an diesem Tag (merke rise > rauf, set > runter) :P
{str2sec(sunset_abs("HORIZON=-0.833"))}
Jetzt kannst Du zu einem Wert 7200 Sekunden (2h) addieren, subtrahieren (oder als Offset bei sunset eingeben) und vergleichen.
Achtung! Das funktioniert nur am gleichen Tag und nicht über die Mitternacht hinweg.
Ich habe nicht darüber nachgedacht was passiert, wenn Du diesen Vergleich die ganze Nacht hindurch ausführst. Irgendwann beisst sich das eventuell mit den 2 Stunden.
Gruß Otto
Zitat von: Otto123 am 10 September 2023, 16:00:26kann sein das geht viel einfacher
sicher...
sub test {
return if substr(sunset_rel("HORIZON=-0.833"),0,2)<2;
fhem "set Arduino_Pin22 on";
}
Hallo Betateilchen,
super, funktioniert. Vielen Dank
Man sollte in solchen Fällen überlegen, wie man die Aufgabe am besten formuliert. Anstatt
Zitatich möchte gern einen Steuerbefehl in der 99_myUtils nur ausführen lassen, wenn es bis zum Sonnenuntergang noch mindestens 2h sind
kann man ja auch sagen
Zitatich möchte gern einen Steuerbefehl in der 99_myUtils nicht ausführen lassen, wenn es bis zum Sonnenuntergang weniger als 2h sind
Dann ergibt sich die Lösung fast von selbst 8)
Off topic
Huh, große Schule. Negative Logik.
,,Möchtest Du nicht nach Hause gehen?"
Klassische Antwort: Nein
Zitat von: JoWiemann am 10 September 2023, 18:04:10,,Möchtest Du nicht nach Hause gehen?"
Klassische Antwort: Nein
Frage: "Ist das nicht schön?"
Antwort: "Ja. Das ist nicht schön."
8)
Zitat von: betateilchen am 10 September 2023, 17:51:09Man sollte in solchen Fällen überlegen, wie man die Aufgabe am besten formuliert. Anstatt
Zitatich möchte gern einen Steuerbefehl in der 99_myUtils nur ausführen lassen, wenn es bis zum Sonnenuntergang noch mindestens 2h sind
kann man ja auch sagen
Zitatich möchte gern einen Steuerbefehl in der 99_myUtils nicht ausführen lassen, wenn es bis zum Sonnenuntergang weniger als 2h sind
Dann ergibt sich die Lösung fast von selbst 8)
Das ist immer das schwierigste: Das Problem sauber beschreiben. Die Lösung des selbigen ist dann meist ganz einfach :-)