Hallo,
als absoluter Neuling versuche ich mich gerade in der ersten Schaltung.
Ich habe eine Lampe für den Außenbereich eingebunden, die bei Sonnenuntergang einschalten und um 00:00 Uhr ausschalten soll.
Das war kein großes Problem.
Jetzt möchte ich aber, dass die Lampe morgens um 6:00 Uhr angeht und bei Sonnanaufgang wieder ausgeht.
Wenn die der Sonnenaufgang aber vor 6 Uhr liegt, soll sie aus bleiben.
Nach ein wenig Recherche habe ich folgendes versucht:
define OdKammerAnSunset at {if (sunrise("REAL") < "06:00:00") {fhem("set Od.Kammer on")}}
define OdKammerAnSunset at {if (sunrise() < "06:00:00") {fhem("set Od.Kammer on")}}
FHEM meldet: Wrong timespec {if: either HH:MM:SS or {perlcode}
Ich habe es auch ohne Anführungszeichen versucht, aber leider ohne Erfolg.
Kann mir bitte jemand auf die Sprünge helfen?
Gruß Andreas
Hallo Andreas,
beim at kannst Du als Trigger keine Bedingung sondern nur einen Zeitpunkt angeben. Du kannst zu einem Zeitpunkt starten und dann eine Bedingung im Ausführungsteil angeben.
Was Du willst, kannst Du eigentlich einfach mit einem DOIF machen.
defmod di_OdKammer DOIF ([06:00-{sunrise_abs("REAL")}])(set Od.Kammer on) DOELSE (set Od.Kammer off)
Gruß Otto
Hallo,
Bedingungen gehen schon, ich habe sowas für einen Rolladen so gelöst:
define Fruehschaltung_Wohnzimmer at *{sunrise(3000,"07:00","08:30")} { fhem("set Rolladen_Wohnzimmer on") if (!$we) }
es soll also frühestens um 7 und spätestens um 8:30 nach Sonnenaufgang mit Verzögerung (3000), aber nur wenn nicht Wochenende ist, geschaltet werden...
Zunächst einmal danke für die schnellen und hilfreichen Antworten.
@Otto:
Deine Lösung wird von FHEM akzeptiert und wird wahrscheinlich funktionieren.
Leider zeigt FHEM nicht explizit an, wann die nächste Schaltung passiert.
Der STATE zeigt nur initialized. Bei den anderen Schaltungen wird die nächste Schaltung angezeigt, was mir mehr Übersicht gibt.
Ich verstehe allerdings eine Kleinigkeit nicht...
Wieso ist die Bedingung "([06:00-{sunrise_abs("REAL")}])" = True?
@cs-online:
Bei Deinem Ansatz würde ich (vermutlich) die nächste Schaltzeit sehen.
Ich habe mir die Abfrage von Otto benommen und folgendes versucht:
define od_Kammer_morgens_an at *06:00:00 {fhem("set Od.Kammer on") if ([06:00-{sunrise_abs("REAL")}])}
Hierbei bekomme ich die Meldung:
syntax error at (eval 191) line 1, near "06:"
Zitat von: 4ndreas am 31 August 2017, 14:02:18
Wieso ist die Bedingung "([06:00-{sunrise_abs("REAL")}])" = True?
Nicht wieso sondern wann ;) -> von um 6:00 bis Sonnenaufgang.
Zitat der Doku
ZitatZeitsteuerung mit Zeitintervallen back
Zeitintervalle werden im Format angegeben: [<begin>-<end>], für <begin> bzw. <end> wird das gleiche Zeitformat verwendet, wie bei einzelnen Zeitangaben. Getriggert wird das Modul zum Zeitpunkt <begin> und zum Zeitpunkt <end>. Soll ein Zeitintervall ohne Zeittrigger lediglich zur Abfrage dienen, so muss hinter der eckigen Klammer ein Fragezeichen angegeben werden (siehe Beispiele weiter unten). Das Zeitintervall ist als logischer Ausdruck ab dem Zeitpunkt <begin> wahr und ab dem Zeitpunkt <end> nicht mehr wahr.
In den Readings des DOIFs werden Dir exakt die nächsten Timer angezeigt und der Status!
Gruß Otto
Zitat von: Otto123 am 31 August 2017, 14:49:57
In den Readings des DOIFs werden Dir exakt die nächsten Timer angezeigt und der Status!
Das ist für mich noch etwas ungewohnt. Ich sehe zwar die Infos über die timer, aber so ganz eindeutig ist das nicht für mich.
READINGS:
2017-08-31 20:43:58 cmd 0
2017-08-31 20:43:58 state initialized
2017-08-31 20:43:58 timer_01_c01 01.09.2017 06:00:00
2017-08-31 20:43:58 timer_02_c01 01.09.2017 06:48:45
Im Vergleich dazu ist bei der at Variante die nächste Schaltung eindeutig erkennbar:
at
Od_Kammer_abends_an Next: 20:10:27
Od_Kammer_abends_aus Next: 23:59:00
Od_Kammer_morgens_aus Next: 06:48:45
Trotzdem hat mir Deine Lösung geholfen - vielen Dank!