Hallo Zusammen,
aktuell werkel ich mich langsam in fhem ein.
Ich möchte das Licht jeden Werktag um 06:30 Uhr einschalten. Das bekomme ich mit at hin.
Nun wird im Sommer aber die Sonne schon um 06:30 Uhr aufgegangen sein, sodaß kein Licht nötig ist.
Wie sage ich nun: Schalte um 06:30 Uhr Licht an, außer 06:30 Uhr < als sunset?
Sprich kann ich die sunset Uhrzeit mit der von mir definierten Uhrzeit vergleichen?
ich hatte auch das Problem ...
dann kam der entscheidende Tipp von meinem Schatz ...
Prüfe doch einfach ab, ob die Rollläden - die gehen mit Sonnenaufgang - schon oben sind ...
Es reicht
define <Name> at *06:30 set <Device> on-till {sunrise_abs}
Wenn der Zeitpunkt für den Sonnenaufgang bereits durch ist, wird nicht eingeschaltet.
Zitat von: Wuppi68 am 17 Januar 2017, 12:47:18
Prüfe doch einfach ab, ob die Rollläden - die gehen mit Sonnenaufgang - schon oben sind ...
Danke, aber so weit bin ich noch nicht, bzw. Rolläden kommen erst im neuen Haus dazu (März 2018). Bis dahin nur kleine Spielereien in einer ETW mit Licht, Heizung und Unterhaltungselektronik.
Zitat von: Brice am 17 Januar 2017, 12:56:38
Es reicht
define <Name> at *06:30 set <Device> on-till {sunrise_abs}
Wenn der Zeitpunkt für den Sonnenaufgang bereits durch ist, wird nicht eingeschaltet.
Danke, das klingt gut. Werde es spätestens Donnerstag testen können.
Zitat von: Brice am 17 Januar 2017, 12:56:38
Es reicht
define <Name> at *06:30 set <Device> on-till {sunrise_abs}
Hast Du das mal getestet?
Ja, das funktioniert bei mir seit über einem Jahr mit FS20-Aktoren und DECT!200. Die HUEs zicken manchmal mit dem Ausschalten, kann aber ein Empfangsproblem sein.
War mal ein Tipp von Rudolf, den Thread finde ich gerade nicht. Ich liebe die Funktion: einmal definiert und nie wieder anfassen (außer für die Adventszeit), läuft bei mir per Bewegungsmelder.
edit 1: gefunden https://forum.fhem.de/index.php/topic,32964.msg253438.html#msg253438
Ich muss hier noch einmal nach haken.
Ja, es funktioniert mit *06:30:00 IF (!$we) (set WZ_Licht on-till {sunrise_abs("REAL")})
Problem: ich kann keine weiteren sets einbauen, da dort der on-till keine Gültigkeit hat, also kein "set WZ_licht brightness 100" mit einbauen.
Da bin ich wieder beim ursprünglichen Problem, wie bekomme ich raus ob eine feste Uhrzeit vor oder nach dem Sonnenaufgang liegt?
Ich hatte sowas mal versucht:
IF ( "08:00:00" lt "{sunrise_abs()}" ) ({ Log 1, "uhrzeit kleiner" })
Da bekomme ich aber egal welche Uhrzeit ich eingebe immer ein Logeintrag. Wenn ich das richtig verstehe sind das ja auch strings und keine Ziffern/Uhrzeiten, und wie ich die richtig vergleiche weiss ich nicht.
Ich hatte schon die Idee die Uhrzeiten in Sekunden umzurechnen und dann zu vergleichen.
Wäre das ein Ansatz? Oder gibt es eine elegantere Lösung?
define bla at *06:30 { unless isday() { fhem(befehl1); fhem(befehl2) } }
Damit kannst Du soviele Befehle ausführen wie Du möchtest, die alle nur dann ausgeführt werden, wenn die Sonne noch nicht aufgegangen ist.
Zitat von: betateilchen am 21 Februar 2017, 14:55:28
define bla at *06:30 { unless isday() { fhem(befehl1); fhem(befehl2) } }
Damit kannst Du soviele Befehle ausführen wie Du möchtest, die alle nur dann ausgeführt werden, wenn die Sonne noch nicht aufgegangen ist.
unless, tolles Ding :)
Ich muss mir da immer einmal in menschliche Denke übersetzen:
Um 06:30 Uhr wird mit unless geprüft ob isday() 1 oder 0 ist. Bei 0 werden die fhem commandos ausgeführt, wenn isday() 1 dann eben nicht.
isday() hat abhängig vom CIVIL Sonnenaufgang, sprich wenn ich REAL Aufgang nutzen will, geht das so nicht.
Könnte ich die Idee von Per aus https://forum.fhem.de/index.php?topic=62108.0 zu Nutze machen:
define isdayreal DOIF (sunset_rel("real")) DOELSEIF (sunrise_rel("real"))
attr isdayreal cmdState 0|1
Und dann:
define bla at *06:30 { unless Readingsval("isdayreal", "state", "") { fhem(befehl1); fhem(befehl2) } }
Könnte das passen?
Zitat von: Sedonion am 21 Februar 2017, 15:46:48
isday() hat abhängig vom CIVIL Sonnenaufgang, sprich wenn ich REAL Aufgang nutzen will, geht das so nicht.
Falsch.
isday() ist abhängig davon, welchen Parameter Du übergibst.
define bla at *06:30 { unless isday("REAL") { fhem(befehl1); fhem(befehl2) } }
Manchmal wäre es toll, wenn die Anwender nicht immer Probleme herbeidenken würden, wo es keine Problem gibt.
Noch besser wäre es, wenn die Leute irgendwann mal anfangen würden, Dokus zu lesen. Sowas steht nämlich alles in der commandref.
Noch besser wäre es, wenn in der commandref drin stehen würde.
Ich habe sie gelesen, und finde nur einen einzigen Eintrag zu isday:
Zitatsunset($offset, $min, $max)
sunrise($offset, $min, $max)
isday()
Der Wert von "offset" wird in Sekunden angegeben und das Format für min/max ist "HH:MM" oderr "HH:MM:SS". isday gibt 1 zurück, wenn die Sonne sichtbar ist und ansonsten den Wert 0.
Wo steht etwas davon das ich oder welche Parameter ich übergeben kann?
...kein Grund, sich hier so zu beharken.
Es steht tatsächlich in der commandref, allerdings "nur" in der einzigen
verpflichtenden Fassung (=englisch): https://fhem.de/commandref.html#SUNRISE_EL
ZitatThis module is used to define the functions
sunrise, sunset,
sunrise_rel, sunset_rel
sunrise_abs, sunset_abs
isday
...
Optionally, for all functions you can set first argument which defines a horizon value which then is used instead of the $defaultaltit in SUNRISE_EL.pm.
Possible values are: "REAL", "CIVIL", "NAUTIC", "ASTRONOMIC" or a positive or negative number preceded by "HORIZON="
REAL is 0, CIVIL is -6, NATUIC is -12, ASTRONOMIC is -18 degrees above horizon.
Nix für ungut, aber vielleicht stolpert hier ja mal wieder jemand über diese einfachen Helferlein ;).
Gruß, Beta-User
Zitat von: Sedonion am 21 Februar 2017, 14:18:36Problem: ich kann keine weiteren sets einbauen, da dort der on-till keine Gültigkeit hat, also kein "set WZ_licht brightness 100" mit einbauen.
Warum nicht? Folgendes funktioniert hier seit Monaten mit einem Bewegungsmelder:
{
if ((ReadingsVal("BOSE_507224BD4752","state","0") eq "online") && (ReadingsVal("MediaCenter","state","on") eq "off"))
{
{fhem "set LED on-till {sunrise_abs(+3600)}"}
{fhem "set HUEDevice1 on-till {sunrise_abs(+1800)}"}
{fhem "set HUEDevice1 effect colorloop"}
{fhem "set BOSE_507224BD4752 on"}
{fhem "set BOSE_507224BD4752 channel 2"}
{fhem "set BOSE_507224BD4752 volume 27"}
#{fhem "set Advent_WZ on-till {sunrise_abs(+1600)}"}
#{fhem "set LED_Balkon on-till {sunrise_abs(+1600)}"}
{fhem "set LED_TV on-till {sunrise_abs(+1700)}"}
{fhem "set HUEDevice6 on-till {sunrise_abs(+3200)}"}
{fhem "set HUEDevice6 effect colorloop"}
}
}
Zitat von: Beta-User am 21 Februar 2017, 17:02:28
...kein Grund, sich hier so zu beharken.
Gruß, Beta-User
OT:
Guten morgen,
da hast Du Recht. Ich muss aber mal etwas los werden:
In immer mehr Threads finde ich bissige Kommentare von Koryphäen (im positiven Sinne), teilweise sogar ohne wirkliche Hilfe.
Ich kenne es jahrelang gut aus Dreambox Foren, das immer wieder die gleichen Fragen gestellt werden, egal wie gut das Wiki oder die Dokumentation ist.
Das wird sich leider nicht verhindern lassen.
Dennoch finde ich, helfen sollte Spaß machen und nicht zum Frust werden. Es gibt sicher Neulinge die nur schnell eine fertige Zeile für ihr Problerm haben wollen. Aber auch andere, die vorher das Wiki, die Commandref, die Forumssuche und google bemühen um eine Lösung zu finden. Und dann noch einiges in Zeit investieren um gefundene Ansätze zu testen.
Da fühlte ich mir einfach auf den Schlips getreten mit einem bissigen Hinweis auf die Commandref, die sich ausgerechnet in dem Punkt massiv unterscheidet von der deutschen und englischen Version.
/OT:
Ich werde es hoffentlich heute testen können mit isday("Real") oder isday(0).
Sorry, auch OT, aber
Zitatbissigen Hinweis
finde ich persönlich recht agressiv formuliert. Über
ZitatNoch besser wäre es, wenn die Leute irgendwann mal anfangen würden, Dokus zu lesen. Sowas steht nämlich alles in der commandref.
kann man doch auch mal in Ruhe drüber nachdenken, ohne sich eben auf den Schlips getreten zu fühlen ::) Ist doch eigentlich nur ein gutgemeinter Hinweis gewesen ;)
Und, dass hier die deutsche von der englischen commandref abweicht, machte ja erst die Verwirrung aus :o
Grüße Markus :-X
Zitat von: KölnSolar am 22 Februar 2017, 09:08:45
Sorry, auch OT, aber finde ich persönlich recht agressiv formuliert. Über kann man doch auch mal in Ruhe nachdenken, ohne sich eben auf den Schlips getreten zu fühlen ::) Ist doch eigentlich nur ein gutgemeinter Hinweis gewesen ;)
Und, dass hier die deutsche von der englischen commandref abweicht, machte ja erst die Verwirrung aus :o
Grüße Markus :-X
Ebenfalls OT: Finde es auch etwas hart formuliert, kann aber nachvollziehen, dass Sedonion sich hier etwas angegriffen gefühlt hat.
Widersprechen muß ich aber in einem Punkt: Die Commandref weicht nicht ab, sondern in der dt. Fassung steht zu isday() nur etwas unter Perl-Specials mit dem Hinweis, dass es aus dem Modul 99_SUNRISE_EL.pm kommt. Der Commandref-Eintrag zu diesem Modul liegt AUSSCHLIESSLICH und entsprechend den geltenden Vorgaben im der englischen Fassung vor.
Leider ist
den meisten hier eben nicht
jedem hier bekannt, dass man hin und wieder gut daran tut, dort reinzuschauen ;).
EDIT: Formulierung geändert, bevor hier einer eine Umfrage dazu startet ::).
Ich denke grundsätzlich sind wir der gleichen Meinung.
Wenn meine Retoure zu bissig war, tut mir das leid.
Der Hinweis mit der ausschlaggebenden englischen Commandref ist super und hilft mir zukünftige Mißverständnisse zu vermeiden. Hab kein Problem mit der englischen Fassung :)
Und wo wir gerade beim OT sind möchte ich abschließend sagen:
Vielen Dank an alle Helfer für den unermütlichen Einsatz immer wieder Neulinge an das Thema fhem heran zu führen.