FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tschennings am 27 Januar 2015, 21:48:50

Titel: Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: tschennings am 27 Januar 2015, 21:48:50
Hallo,
Wie der Betreff schon sagt, möchte ich meine Aussenlampen einschalten, aber nur wenns noch düßter ist. Bei meiner Zeile:
{ if((Value("Daemmerungsautomatik") eq "on") && ({sunrise(1200,"07:20","08:00")} gt "07:30:00")) { fhem ("set Aussenlampen on") } }
Ist aber ein Fehler drin. Kann mir einer auf die Sprünge helfen?
Danke!
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: Otto123 am 28 Januar 2015, 10:20:19
moin,

sunrise addiert unter Umständen 24h bis zum nächsten Sonnenaufgang.

Versuche das mal mit sunrise_abs.
Einen offensichtlichen Fehler sehe ich nicht, was geht denn nicht?

Gruß Otto
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: tschennings am 28 Januar 2015, 18:00:53
Hallo Otto,
Danke fürs kümmern!

An anderer Stelle, ohne doppelte if-bedingung, macht sunrise was es soll. Hier aber lautet der Fehler:
 
2015.01.27 07:25:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 18717) line 1.
2015.01.27 07:25:00 3: eval: { if((Value("Daemmerungsautomatik") eq "on") && ({sunrise(1200,"07:20","08:00")} gt "07:30:00")) { fhem ("set Aussenlampen on") } }
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: Damian am 28 Januar 2015, 18:04:52
Zitat von: tschennings am 28 Januar 2015, 18:00:53
Hallo Otto,
Danke fürs kümmern!

An anderer Stelle, ohne doppelte if-bedingung, macht sunrise was es soll. Hier aber lautet der Fehler:
 
2015.01.27 07:25:00 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 18717) line 1.
2015.01.27 07:25:00 3: eval: { if((Value("Daemmerungsautomatik") eq "on") && ({sunrise(1200,"07:20","08:00")} gt "07:30:00")) { fhem ("set Aussenlampen on") } }

Du befindest dich auf der Perlebene, da darfst du in einer if-Bedingung keine geschweiften Klammern bei Funktionen setzen, also

{ if((Value("Daemmerungsautomatik") eq "on") && (sunrise(1200,"07:20","08:00") gt "07:30:00")) { fhem ("set Aussenlampen on") }

Gruß

Damian
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: Otto123 am 28 Januar 2015, 20:26:18
Das sind die Dinge die ich auch noch lerne :)

Gruß Otto
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: tschennings am 28 Januar 2015, 20:27:00
Ah!
Danke, kapiert! Werds gleich mal testen.
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: tschennings am 29 Januar 2015, 18:42:42
Hmmm...
Das wars wohl nicht!

PERL WARNING: Argument "07:30" isn't numeric in numeric gt (>) at (eval 45951) line 1.
2015.01.29 07:25:00 3: eval: { if((Value("Daemmerungsautomatik") eq "on") && (sunrise(1200,"07:20","08:00")) > "07:30") { fhem ("set Aussenlampen on") } }
2015.01.29 07:25:00 1: PERL WARNING: Argument "07:38:38" isn't numeric in numeric gt (>) at (eval 45951) line 1.
2015.01.29 07:25:00 3: eval: { if((Value("Daemmerungsautomatik") eq "on") && (sunrise(1200,"07:20","08:00")) > "07:30") { fhem ("set Aussenlampen on") } }

Ideen?
Sind die Uhrzeiten nicht mit gt vergleichbar?
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: nesges am 29 Januar 2015, 18:54:52
Zitat von: tschennings am 29 Januar 2015, 18:42:42
Sind die Uhrzeiten nicht mit gt vergleichbar?

Doch! Schau nochmal! ;-)

Edit: Wobei ich's nicht für ne gute Idee halte Zeitstrings mit gt zu vergleichen. "00:01" gt "23:59" -> false! Im contrib-Verzeichnis gibt es eine 99_TimeUtils.pm, die eine Funktion TU_Get_Difference($t1, $t2) implementiert.
Titel: Antw:Aussenlicht einschalten, aber nicht wenns schon daemmert...
Beitrag von: tschennings am 29 Januar 2015, 21:37:24
ok - jetzt hab ich wirklich gt getippt - mal sehen, ob s klappt.
habs ohne die funktion aus dem contrib-verzeichnis gelassen, ist ja ein kleines, überschaubares zeitintervall ohne mitternachtsüberschreitung hier
Danke erstmal!