Ich habe für einen DOIF folgende Definition:
Internals:
DEF ([Clone_Vitocrossal:Temp-WarmWasser-Ist] > 48
and [Clone_Vitocrossal:Brenner] eq "on"
and index([mein_Kalender:state], "Erster Sonntag im Monat") != -1)
(set Zw_Stecker_LM_2_Sw on-for-timer 2400)
NAME doif.Legionellen
NR 593
NTFY_ORDER 50-doif.Legionellen
STATE cmd_2
TYPE DOIF
Readings:
2015-10-05 09:45:27 Device Clone_Vitocrossal
2015-10-04 18:58:09 cmd_event Clone_Vitocrossal
2015-10-04 18:58:09 cmd_nr 2
2015-10-05 09:45:27 e_Clone_Vitocrossal_Brenner off
2015-10-05 09:45:27 e_Clone_Vitocrossal_Temp-WarmWasser-Ist 56.3
2015-10-05 00:00:02 e_mein_Kalender_state none
2015-10-04 18:58:09 state cmd_2
Condition:
0 ReadingValDoIf('Clone_Vitocrossal','Temp-WarmWasser-Ist','') > 48 and ReadingValDoIf('Clone_Vitocrossal','Brenner','') eq "on" and index(ReadingValDoIf('mein_Kalender','state',''), "Erster Sonntag im Monat") != -1
Devices:
0 Clone_Vitocrossal mein_Kalender
all Clone_Vitocrossal mein_Kalender
Do:
0:
0 set Zw_Stecker_LM_2_Sw on-for-timer 2400
1:
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
Itimer:
Readings:
0 Clone_Vitocrossal:Temp-WarmWasser-Ist Clone_Vitocrossal:Brenner mein_Kalender:state
all Clone_Vitocrossal:Temp-WarmWasser-Ist Clone_Vitocrossal:Brenner mein_Kalender:state
State:
Trigger:
Attributes:
group Heizung
room Heizung
Da ich keine Wiederholungen definiert habe (do allways bzw. repeatsame), bin ich davon ausgegangen, dass der DOIF nur 1 x an dem Tag ausgeführt wird.
Insgesamt ist er allerdings an dem Tag 9 x ausgelöst worden (Auszug aus dem Log)
2015.10.04 06:45:18 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 06:54:18 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 09:33:46 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 10:00:54 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
2015.10.04 10:21:56 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
2015.10.04 10:42:48 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 10:55:09 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 16:18:19 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
...
2015.10.04 18:57:19 3: CUL_HM set Zw_Stecker_LM_2_Sw on-for-timer 2400
Habe ich etwas übersehen oder läuft tatsächlich etwas falsch?
Viele Grüße
Holger
IMO erzeugt jedes Update vom Temperatursensor einen Auslöser für Dein DOIF.
mit attr repeatsame 1 sollte sich das umgehen lassen. Probier mal
Jedes Mal, wenn eine der anderen beiden Bedingungen (> 48 und/oder "on") nicht erfüllt ist, wechselt das DOIF zum - in diesem Fall impliziten- DOELSE-Fall.
Sind beide Bedingungen dann wieder erfüllt, folgt der Wechsel zu cmd_1, später wieder zurück zum DOELSE usw.
cmdpause könnte helfen, so dass das Modul maximal alle 24 Stunden seinen Zustand wechseln darf. Dann sollte es am fraglichen Tag maximal einmal ausgeführt werden.
Zitat von: Brockmann am 05 Oktober 2015, 15:24:39
Jedes Mal, wenn eine der anderen beiden Bedingungen (> 48 und/oder "on") nicht erfüllt ist, wechselt das DOIF zum - in diesem Fall impliziten- DOELSE-Fall.
Sind beide Bedingungen dann wieder erfüllt, folgt der Wechsel zu cmd_1, später wieder zurück zum DOELSE usw.
cmdpause könnte helfen, so dass das Modul maximal alle 24 Stunden seinen Zustand wechseln darf. Dann sollte es am fraglichen Tag maximal einmal ausgeführt werden.
Oder
DOELSEIF ([00:00])
hinten dranhängen, dann wird kein DOELSE-Fall impliziert.
Gruß
Damian
@all: Danke!
Ist schon ein verdammt mächtiges Tool. Respekt.
Gruß
Holger