(gelöst) DOIF: unmotivierte Wiederholungen

Begonnen von Omega, 05 Oktober 2015, 10:07:49

Vorheriges Thema - Nächstes Thema

Omega

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

NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

Bartimaus

IMO erzeugt jedes Update vom Temperatursensor einen Auslöser für Dein DOIF.
mit attr repeatsame 1 sollte sich das umgehen lassen. Probier mal
LG
B.


FHEM@AMD-Ryzen7-5700U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Brockmann

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.

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Omega

@all: Danke!
Ist schon ein verdammt mächtiges Tool. Respekt.

Gruß
Holger

NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave