DOIF löst plötzlich nicht mehr aus - nichts verändert.

Begonnen von _hndrk, 28 Juli 2017, 16:05:53

Vorheriges Thema - Nächstes Thema

_hndrk

Hi,

ich habe ein DOIF, das mir in der Nacht den Warmwasserbereiter ("Cumulus") anstellt. Das hat auch wochenlang sehr gut funktioniert. Jetzt plötzlich hat das DOIF aber nicht mehr ausgelöst. Es hat sich an der Konfiguration nichts verändert und ich bin sehr erstaunt!.. Hat jmd. eine Idee? Unten schreibe ich was ich schon probiert habe und habe auch das listing gepasted.

Die Definition ist denkbar einfach:
define DI_Cumulus_Creuse_ON DOIF ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)

d.h. um 23:05 soll der Cumulus auf AN gehen, wenn aptRented yes ist. aptRented hat sich nicht verändert.
Was sich evtl. verändert hat ist, dass der Cumulus tagsüber nicht mehr zwischen on/off gewechselt hat. Das sollte aber nichts verändern. Ich hatte kurz "attr .. do always" gesetzt, was aber eine Flut von "on" Kommandos zur Folge hatte --> nicht richtig.

Ein separates Logfile usw. habe ich noch nicht aufgesetzt. FHEM ist recht aktuell (letztes update vor zwei Wochen).

Ich würde mich sehr freuen, wenn mir jemand auf die Sprünge helfen kann..

Lieben Dank und beste Grüße
Hendrik


PS: Hier das list des DOIF und der Vollständigkeit halber auch die anderen DOIF Definitionen für OFF und für tagsüber.

Internals:
   DEF        ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)
   NAME       DI_Cumulus_Creuse_ON
   NR         106
   NTFY_ORDER 50-DI_Cumulus_Creuse_ON
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-07-15 23:01:50   Device          aptRented
     2017-07-15 23:05:00   cmd             1
     2017-07-15 23:05:00   cmd_event       timer_1
     2017-07-15 23:05:00   cmd_nr          1
     2017-07-15 23:01:50   e_aptRented_STATE yes
     2017-07-15 23:05:00   state           cmd_1
     2017-07-27 23:05:00   timer_01_c01    28.07.2017 23:05:00
   condition:
     0          DOIF_time_once($hash,0,$wday) and InternalDoIf($hash,'aptRented','STATE') eq "yes"
   days:
   devices:
     0           aptRented
     all         aptRented
   do:
     0:
       0          set Sonoff_Cumulus on
     1:
   helper:
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev
     timerevent timer_1
     timereventsState
     triggerDev
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
     0           aptRented:STATE
     all         aptRented:STATE
   interval:
   itimer:
   localtime:
     0          1501275900
   readings:
   realtime:
     0          23:05:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          23:05:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1501275900:
       localtime  1501275900
       hash:
Attributes:
   room       99_System



Hier die kompletten Definitionen für die automatische An-/Abschaltung. Zeitgetriggert ist klar - und tagsüber dann temperaturgesteuert. aptRented ist ein einfaches Dummy mit setList yes,no.


define DI_Cumulus_Creuse_ON DOIF ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)
define DI_Cumulus_Creuse_OFF DOIF ([06:50]) (set Sonoff_Cumulus off)
define DI_Cumulus_Day_ON DOIF ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] < 32) (set Sonoff_Cumulus on)
define DI_Cumulus_Day_OFF DOIF ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] > 35) (set Sonoff_Cumulus off)

Papaloewe

#1
Bei nur einer Bedingung und keinem DOELSE immer das Attribut "Do Always" benutzen!
Denn sonst funktioniert dein DOIF genau nur einmal.

Ellert

Zitat von: _hndrk am 28 Juli 2017, 16:05:53
Hi,

ich habe ein DOIF, das mir in der Nacht den Warmwasserbereiter ("Cumulus") anstellt. Das hat auch wochenlang sehr gut funktioniert. Jetzt plötzlich hat das DOIF aber nicht mehr ausgelöst. Es hat sich an der Konfiguration nichts verändert und ich bin sehr erstaunt!.. Hat jmd. eine Idee? Unten schreibe ich was ich schon probiert habe und habe auch das listing gepasted.

Die Definition ist denkbar einfach:
define DI_Cumulus_Creuse_ON DOIF ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)

d.h. um 23:05 soll der Cumulus auf AN gehen, wenn aptRented yes ist. aptRented hat sich nicht verändert.
Was sich evtl. verändert hat ist, dass der Cumulus tagsüber nicht mehr zwischen on/off gewechselt hat. Das sollte aber nichts verändern. Ich hatte kurz "attr .. do always" gesetzt, was aber eine Flut von "on" Kommandos zur Folge hatte --> nicht richtig.

Ein separates Logfile usw. habe ich noch nicht aufgesetzt. FHEM ist recht aktuell (letztes update vor zwei Wochen).

Ich würde mich sehr freuen, wenn mir jemand auf die Sprünge helfen kann..

Lieben Dank und beste Grüße
Hendrik


PS: Hier das list des DOIF und der Vollständigkeit halber auch die anderen DOIF Definitionen für OFF und für tagsüber.

Internals:
   DEF        ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)
   NAME       DI_Cumulus_Creuse_ON
   NR         106
   NTFY_ORDER 50-DI_Cumulus_Creuse_ON
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-07-15 23:01:50   Device          aptRented
     2017-07-15 23:05:00   cmd             1
     2017-07-15 23:05:00   cmd_event       timer_1
     2017-07-15 23:05:00   cmd_nr          1
     2017-07-15 23:01:50   e_aptRented_STATE yes
     2017-07-15 23:05:00   state           cmd_1
     2017-07-27 23:05:00   timer_01_c01    28.07.2017 23:05:00
   condition:
     0          DOIF_time_once($hash,0,$wday) and InternalDoIf($hash,'aptRented','STATE') eq "yes"
   days:
   devices:
     0           aptRented
     all         aptRented
   do:
     0:
       0          set Sonoff_Cumulus on
     1:
   helper:
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev
     timerevent timer_1
     timereventsState
     triggerDev
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
     0           aptRented:STATE
     all         aptRented:STATE
   interval:
   itimer:
   localtime:
     0          1501275900
   readings:
   realtime:
     0          23:05:00
   regexp:
     all:
   state:
     STATE:
   time:
     0          23:05:00
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1501275900:
       localtime  1501275900
       hash:
Attributes:
   room       99_System



Hier die kompletten Definitionen für die automatische An-/Abschaltung. Zeitgetriggert ist klar - und tagsüber dann temperaturgesteuert. aptRented ist ein einfaches Dummy mit setList yes,no.


define DI_Cumulus_Creuse_ON DOIF ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)
define DI_Cumulus_Creuse_OFF DOIF ([06:50]) (set Sonoff_Cumulus off)
define DI_Cumulus_Day_ON DOIF ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] < 32) (set Sonoff_Cumulus on)
define DI_Cumulus_Day_OFF DOIF ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] > 35) (set Sonoff_Cumulus off)


DOIF ist auch dazu gemacht Definitionen zu sparen, so kann das DOIF an einer Stelle gewartet werden, etwa so:

define DI_Cumulus_Creuse DOIF ([23:05] and [aptRented] eq "yes") (set Sonoff_Cumulus on)
DOELSEIF  ([06:50]) (set Sonoff_Cumulus off)
DOELSEIF  ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] < 32) (set Sonoff_Cumulus on)
DOELSEIF ([07:00-23:00] and [aptRented] eq "yes" and [Sonoff_Cumulus:AM2301_Temperature] > 35) (set Sonoff_Cumulus off)


Das sollte dann auch funktionieren.

_hndrk