FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Luke2000 am 12 Oktober 2015, 13:58:34

Titel: Twilight mit ss_weather und Zeitbegrenzung
Beitrag von: Luke2000 am 12 Oktober 2015, 13:58:34
Hallo zusammen,

dies ist mein erster Post. Bitte nicht übel nehmen, falls die Frage blöd ist...

Folgendes Problem: In anderen Posts über das Twilight-Modul habe ich gelernt, dass die wetterabhängigen Events (z.B. ss_weather) eher mit notify statt mit at verwendet werden sollten, da ansonsten die Zeiten vom Vortag genommen werden. Folgendes wurde empfohlen:
define LampeAN notify Twilight.*:aktEvent:.*ss_weather.* set StehlampeTisch on

Soweit so gut... Was mir aber fehlt ist eine Zeitbegrenzung (frühestens 16:00Uhr, spätestens 21:30Uhr), wie sie bei Nutzung von at möglich gewesen wäre, z.B. so:
define LampeAN at *{twilight("T","ss_indoor","16:00","21:30")} set EZ_Lampe_Stehlampe on

Wie kann ich elegant beides verbinden?

Besten Dank und Grüße
Luke
Titel: Antw:Twilight mit ss_weather und Zeitbegrenzung
Beitrag von: Ellert am 13 Oktober 2015, 00:40:17
Das würde mit einem DOIF funktionieren, etwa so:

define mydoif DOIF ([?16:00-22:00] and [Twilight:?ss_weather]) (set ...)
attr mydoif do always

Ungetestet, die genaue Syntax müsstest Du in der Commandref (deutsch) nachlesen.
Titel: Antw:Twilight mit ss_weather und Zeitbegrenzung
Beitrag von: Luke2000 am 13 Oktober 2015, 11:01:43
Ok, danke! Probiere ich heute Abend mal aus.

Eine Frage in diesem Zusammenhang noch. Falls ich doch beim at bleibe, wie kann ich Zeiten voneinander abziehen?

define LampeAN at *{twilight("T","ss_indoor"-1800,"16:00","21:30")} set EZ_Lampe_Stehlampe on

Das -1800 funktioniert nicht richtig. Ich wollte eigentlich eine halbe Stunde abziehen und dachte ich muss ggf. Sekunden eingeben. Im Logfile steht dann aber
"PERL WARNING: Argument "sr_indoor" isn't numeric in subtraction (-) at (eval 133) line 1."

Danke
Luke
Titel: Antw:Twilight mit ss_weather und Zeitbegrenzung
Beitrag von: Ellert am 13 Oktober 2015, 13:57:01
Der Fehler tritt auf, weil Du einen numerischen Wert von einem String abziehen willst
"ss_indoor"-1800
Du müsstest ss_indoor als Variable übergeben.

Beim DOIF geht das so ([16:00-21:30] and [([mytwilight:ss_indoor] - 1800)]) (set ...)
Titel: Antw:Twilight mit ss_weather und Zeitbegrenzung
Beitrag von: Luke2000 am 13 Oktober 2015, 22:28:58
Alles klar. So funktioniert es...

DOIF... DOELSEIF... ist ja genial!

Besten Dank!
Grüße
Luke