Twilight mit ss_weather und Zeitbegrenzung

Begonnen von Luke2000, 12 Oktober 2015, 13:58:34

Vorheriges Thema - Nächstes Thema

Luke2000

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

Ellert

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.

Luke2000

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

Ellert

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

Luke2000

Alles klar. So funktioniert es...

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

Besten Dank!
Grüße
Luke