ich versende mit einer Webcam dieses Signal..!
{if (sunset("CIVIL","19:30","23:59")) {fhem ("set AussenLampe on-for-timer 120")}}
warum geht das Licht trotz der Zeit 19:30 Uhr vorher schon an..?
Muss ich das anders eingeben..?
{ sunset_abs("CIVIL", "19:30", "23:59") } liefert bei mir "23:59:00" (wieso eigentlich?),
und das ist immer wahr.
Zitat von: rudolfkoenig am 02 April 2015, 16:51:23
(wieso eigentlich?),
und das ist immer wahr.
mmh, keine Ahnung...!
ich habe das mit einer anderen Zeit probiert, es erscheint immer die Zeit, die eigentlich bedeuten soll "nicht später oder nicht nach" in dem Fall 23:59.
Wenn ich da mal 02:20 eingebe erscheint 26:19:59...
Die Zahlen aus meinem ersten Post waren eigentlich nur frei gewählt, denn später soll es eigentlich von ca. 22:00 Uhr bis morgens wenn es hell wird gelten...! Das würde dann ja auch nicht funktionieren.
Ich hatte es mit !isday probiert und wollte eigentlich die Zeit eben vor 22:00 Uhr ausklammern, aber das funktionierte nicht, es ging immer an. Dann dachte ich mit sunset funktioniert es...!
Dieses hatte ich vorher probiert:
{if(!isday()){fhem"set AussenLampe on-for-timer 120"}}
damit funktioniert es, aber das geht eben auch schon vor 22Uhr, wenn !isday zum tragen kommt...
Zitat von: moonsorrox am 02 April 2015, 15:46:35
ich versende mit einer Webcam dieses Signal..!
{if (sunset("CIVIL","19:30","23:59")) {fhem ("set AussenLampe on-for-timer 120")}}
warum geht das Licht trotz der Zeit 19:30 Uhr vorher schon an..?
Muss ich das anders eingeben..?
Hallo,
mag sein ich stehe komplett daneben, aber Du fragst eine Zeit ab!?! Warum sollte die nicht wahr sein?
Mit isday fragst Du ab ob Tag ist, dass kann wahr oder falsch sein.
sunset liefert bei Dir eine Zeit zwischen 19:30 und 23:59 - wobei Du da eher in Schweden wohnen musst :)
Vielleicht solltest Du DOIF nehmen?
Gruß Otto
So eventuell:
{if ((sunset_abs() > "17:00:00") || (sunset_abs() < "21:00:00")) {fhem ("set AussenLampe on-for-timer 120")}}
Gruß Otto
Zitat von: moonsorrox am 02 April 2015, 15:46:35
{if (sunset("CIVIL","19:30","23:59")) {fhem ("set AussenLampe on-for-timer 120")}}
Hallo moonsorrox,
abgesehen das if Zeit irgendwie keinen Sinn ergibt, es müsste ja if Zeit=ZeitRef heißen, fällt mir noch auf:
es fehlt was im sunset:
sunset("CIVIL",0,"19:30","23:59")
Du müsstest sogar die Perl Warnung im Log gehabt haben. Folgende Kombinationen sind möglich:
(0,"19:30","23:59")
(0,"19:30")
(0)
()
("CIVIL",0,"19:30","23:59")
("CIVIL",0,"19:30")
("CIVIL",0)
("CIVIL")
Wenn ich das richtig verstanden habe ...
Gruß Otto
Zitat von: Otto123 am 02 April 2015, 20:31:14
mag sein ich stehe komplett daneben, aber Du fragst eine Zeit ab!?! Warum sollte die nicht wahr sein?
Mit isday fragst Du ab ob Tag ist, dass kann wahr oder falsch sein.
sunset liefert bei Dir eine Zeit zwischen 19:30 und 23:59 - wobei Du da eher in Schweden wohnen musst :)
die Zeiten waren nur Beispiele und abfragen tue ich !isday, also Nacht oder dunkel wobei ich nicht genau weiß wann der Zeitpunkt !isday ist...! Aber das ist nicht das Problem...
ich möchte trotz !isday die Zeit begrenzen und zwar hauptsächlich abends vor ich sage mal 22 Uhr oder so, dass bestimme ich dann später...
Um es mal praktisch zu erklären, die Beleuchtung die ich damit einschalten möchte brauche ich kaum vor 22 Uhr oder sogar 23 Uhr, weil da ist bei mir im Eingangsbereich noch Beleuchtung an..!
Dies Funktion soll möglichst die ganze Nacht durch aktiv sein, also bis es morgens hell wird... deshalb wollte ich !isday nutzen, aber !isday greift auch schon vor 22 oder 23 Uhr
Zitat von: Otto123 am 02 April 2015, 20:31:14
Vielleicht solltest Du DOIF nehmen?
in Fhem evtl. aber ich kann kein DOIF in meine Kamera eintragen... ;) :D verstehste...! ;)
Es muss schon ein Befehl sein den die Kamera schicken kann...
Ich werde mal dein letztes Beispiel anschauen und testen...
Danke
EDITH://
Oh grad nochmal geschrieben...
Also keine perl Warnungen im Logfile...!
Zitat von: Otto123 am 02 April 2015, 23:29:23
Hallo moonsorrox,
abgesehen das if Zeit irgendwie keinen Sinn ergibt, es müsste ja if Zeit=ZeitRef heißen, fällt mir noch auf:
es fehlt was im sunset:
sunset("CIVIL",0,"19:30","23:59")
Du müsstest sogar die Perl Warnung im Log gehabt haben. Folgende Kombinationen sind möglich:
(0,"19:30","23:59")
(0,"19:30")
(0)
()
("CIVIL",0,"19:30","23:59")
("CIVIL",0,"19:30")
("CIVIL",0)
("CIVIL")
richtig verstanden schon, aber...
Egal was du eingibst von diesen Kombinationen und egal ob du sunset oder !isady benutzt die Beleuchtung geht immer an, ob da nun 19:30 drin steht oder 22 Uhr
hier mal die Beispiele die ich bei fhem in die Kommadozeile gebe: probiere das mal mit einem Gerät von dir...!
{if (!isday("CIVIL",0,"22:00","23:45")) {fhem ("set AussenLampe on-for-timer 120")}}
oder
{if (sunset("CIVIL",0,"22:00","23:45")) {fhem ("set AussenLampe on-for-timer 120")}}
bei beiden werden die Zeiten ignoriert, dass Licht geht sofort an
Auch deine anderen Beispiele sind sicher richtig, aber das Problem ist das die eingebenden Zeiten für mich besonders wichtig die erste Zeit, dass nicht vor 22Uhr geschaltet wird...
Alles klar..? ;)
Ich kann das ganze auch ohne Zeiten nehmen, mit !isday (so habe ich es im Moment drin), aber das schaltet eben schon momentan um ca. 20.15 Uhr ein
da also die Zeit komplett ignoriert wird habe ich es im Moment so:
Und bitte beachten in der Kamera steht es so/fhem?cmd={+if+(!isday())+{fhem+"set+AussenLampe+on-for-timer+120"}}
weil If Zeit immer war ist. 8)
Probier mal if (sunset_abs() > "20:20:00")
Das ist erst war wenn der der Sonnenuntergang wie heute 20:20:01 ist, zumindest in Leipzig :)
if (sunset_abs() > "21:20:00")
ist heute falsch.
Also solltest Du if (sunset_abs() > "22:00:00")
nehmen. Das ist erst dann war wenn die Sonne nach um Zehn untergeht.
Gruß Otto
OK. letzteres werde ich noch mal probieren, dass erscheint mir am logischsten :D
Die schlechte Nachricht: In Leipzig geht die Sonne Ende Juni 21:31 unter. Also 22:00 schaffst Du wahrscheinlich nicht :)
Gute Nacht 8)
OK jetzt habe ich das mal probiert und bekomme auch die perl Warnungen.
Nicht wundern ich teste das hier mit einem anderem Gerät und kurzer Zeit
2015.04.03 00:21:15 3: eval: {if (sunset_abs() > "21:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:21:15 1: PERL WARNING: Argument "20:32:42" isn't numeric in numeric gt (>) at (eval 325080) line 1.
2015.04.03 00:21:15 3: eval: {if (sunset_abs() > "21:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:21:15 1: PERL WARNING: Argument "21:20:00" isn't numeric in numeric gt (>) at (eval 325080) line 1.
2015.04.03 00:20:37 3: eval: {if (sunset_abs() > "21:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:20:37 1: PERL WARNING: Argument "20:32:42" isn't numeric in numeric gt (>) at (eval 324719) line 1.
2015.04.03 00:20:37 3: eval: {if (sunset_abs() > "21:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:20:37 1: PERL WARNING: Argument "21:20:00" isn't numeric in numeric gt (>) at (eval 324719) line 1.
2015.04.03 00:20:11 3: eval: {if (sunset_abs() > "20:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:20:11 1: PERL WARNING: Argument "20:32:42" isn't numeric in numeric gt (>) at (eval 324717) line 1.
2015.04.03 00:20:11 3: eval: {if (sunset_abs() > "20:20:00") {fhem "set LichtOG on-for-timer 10"}}
2015.04.03 00:20:11 1: PERL WARNING: Argument "20:20:00" isn't numeric in numeric gt (>) at (eval 324717) line 1.
Die so dargestellten Uhrzeiten ("HH:MM:SS") muss man mit gt/ge/lt/le vergleichen.
Siehe "perldoc perlop"
Zitat von: rudolfkoenig am 03 April 2015, 08:56:15
Die so dargestellten Uhrzeiten ("HH:MM:SS") muss man mit gt/ge/lt/le vergleichen.
Siehe "perldoc perlop"
ich bin weit weg von einem Perl-Anfänger (wie sicher viele hier) deshalb auch damit immer wieder Probleme, habe mal Google gefragt, aber das bringt mich nicht weiter :-\ da müsste ich viel Perl Dokus durchsuchen :-\
Eine andere Frage wie oder wo sehe ich denn wann !isday greift, als Zeit..? muss ja auch irgendwo in der Nähe von sunset sein..!
Ist es besser evtl. sunset_abs zu nutzen, da sehe ich ja wenigstens die Uhrzeit :D
Zitatich bin weit weg von einem Perl-Anfänger...wie oder wo sehe ich denn wann !isday greift
Na dann natuerlich dirch lesen der 99_SUNRISE_EL.pm :)
Entspricht wohl dem sunrise_abs/sunset_abs, und kann auch ein Horizont-Wert wie REAL/CIVIL/etc haben.
Zitat von: rudolfkoenig am 03 April 2015, 14:34:48
Na dann natuerlich dirch lesen der 99_SUNRISE_EL.pm :)
ich hatte nur hier (http://fhem.de/commandref.html#SUNRISE_EL) geschaut, aber eben nichts gefunden wann !isday zeitlich ist.
Da gibt es nur einen Satz
Zitatisday() can be used in some notify or at commands to check if the sun is up or down.
werde mal nach deinen Hinweis suchen, habe das was im Github/fhem-mirror gefunden
Im Wiki habe ich auch etwas gefunden ;)