Aussenlicht einschalten, aber nicht wenns schon daemmert...

Begonnen von tschennings, 27 Januar 2015, 21:48:50

Vorheriges Thema - Nächstes Thema

tschennings

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!

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

tschennings

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") } }

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Das sind die Dinge die ich auch noch lerne :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

tschennings


tschennings

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?

nesges

#7
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.

tschennings

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!