Hallo zusammen,
ich möchte meine Gartenbeleuchtung mit eine DOIF in Abhängigkeit vom Sonnenuntergang steuern. Dabei will ich nicht im DOIF noch einmal mit sunset arbeiten, sondern die im twilight Modul vorhandenen Readings nutzen.
Die Herausforderung liegt für mich darin, dass ich frühestens um 18:45 schalten will. Dazu habe ich mir ein userreading im DOIF gebaut. Jetzt bin ich aber unsicher, ob das Userreading bei einer Änderung von ss_civil im twilight Modul auch geändert wird?
Funktioniert das?
Beste Grüße
Torsten
Internals:
DEF ([[$SELF:startTime]])
## Wenn Sonnentuntergang zwischen 18:45 und 23:00 Uhr, dann Beleuchtung einschalten
(set GH.gt.SD.Gartenbeleuchtung on-till-overnight 00:15)
NAME di.01.GH.gt.SD.Gartenbeleuchtung
NR 244
NTFY_ORDER 50-di.01.GH.gt.SD.Gartenbeleuchtung
STATE Next: 15.05.2017 21:41:03
TYPE DOIF
Readings:
2017-05-15 20:44:35 cmd 2
2017-05-15 20:44:35 cmd_event set_cmd_2
2017-05-15 20:44:35 cmd_nr 2
2017-05-15 20:44:35 startTime 21:41:03
2017-05-15 20:44:35 state cmd_2
2017-05-15 20:44:35 timer_01_c01 15.05.2017 21:41:03
Condition:
0 DOIF_time_once($hash,0,$wday)
Days:
Devices:
Do:
0:
0 set GH.gt.SD.Gartenbeleuchtung on-till-overnight 00:15
1:
Helper:
globalinit 1
last_timer 1
sleeptimer -1
Itimer:
all di.01.GH.gt.SD.Gartenbeleuchtung
Localtime:
0 1494877263
Realtime:
0 21:41:03
Regexp:
All:
State:
State:
Time:
0 [di.01.GH.gt.SD.Gartenbeleuchtung:startTime]
Timecond:
0 0
Timer:
0 0
Timers:
0 0
Triggertime:
1494877263:
localtime 1494877263
Hash:
Attributes:
alias Gartenbeleuchtung
group Zeitsteuerung Beleuchtung
icon socket_timer
room Garten,Zentrale Steuerung
stateFormat Next: timer_01_c01
userReadings startTime {strftime("%H:%M:%S",localtime(max(str2time(ReadingsVal("ZS.zs.UW.Astrodaten","ss_civil","18:45:00")),str2time("18:45:00"))))}
Nein Userreadings werden nicht durch externe Events ausgelöst.
Das würde hiermit funktionieren https://forum.fhem.de/index.php/topic,71000.0.html
Warum benutzt Du nicht das Reading aus Twilight selbst?
([{max([ZS.zs.UW.Astrodaten:ss_civil], "18:45:00")}])
evtl auch "[ZS.zs.UW.Astrodaten:ss_civil]"
ggf. mit dem Attribut checkReadingEvent
Hi,
das mit den myReadings klingt gut. Bei Deinem ersten Vorschlag bin ich mir nicht sicher, ob max mit den Werten so funktioniert und außerdem hatte ich gelesen, dass perl Ausdrücke als Zeitangaben nicht triggern. Werde aber beides mal ausprobieren.
Danke und beste Grüße
Torsten
Edit: Mit ([{max("[ZS.zs.UW.Astrodaten:ss_civil]","18:45:00")}]) als Bedingung funktioniert auf jeden Fall schon mal die max Funktion und auch die Aktualisierung des DOIF bei geändertem ss_civil. Ein Timer wird auch eingerichtet also gehe ich mal davon aus, dass meine Gartenbeleuchtung heute Abend bei Sonnenuntergang eingeschaltet wird.
Leider schaltet das DOIF nur beim ersten Mal. Der timer wird zwar aktualisiert, aber gestern Abend (zweiter Abend) wurde das DOIF nicht getriggert.
Liegt es jetzt daran, dass ein perl Ausdruck als Zeitangabe tatsächlich nicht triggert oder muss do always gesetzt sein?
Beste Grüße
Torsten
Letzteres.
Danke