Hauptmenü

DOIF-Code-Frage

Begonnen von Bronze, 23 Oktober 2026, 13:06:39

Vorheriges Thema - Nächstes Thema

Bronze

Hallo,
ich habe ein DOIF gebaut, mit dem eine Zirkulationspumpe temperaturgesteuert ein- und wieder ausgeschaltet werden soll.
Trotz setzen des Attributes "do always" funktioniert das immer nur ein Mal, nachdem man "set checkall" ausgelöst hat.
Den Code habe ich vereinfacht, statt des Schaltens der Pumpe ist nur eine Messageausgabe im DO-Teil enthalten.
Ich verstehe nicht, woran das liegt, wisst Ihr bitte Rat.
Internals:
   CFGFN     
   DEF        (   [06:15-22:00|8] and ReadingsNum("VBUSDEV_7112","Temperatur_Sensor_8",0.0,1)< 35.0 )
( msg push @rr_Thomas Zirku-Leitung UNTER 35 °C)
DOELSEIF (  [08:15-22:00|7] and ReadingsNum("VBUSDEV_7112","Temperatur_Sensor_8",0.0,1) < 35.0 )
( msg push @rr_Thomas Zirku-Leitung UNTER 35 °C)
DOELSE (msg push @rr_Thomas Zirku-Leitung ÜBER 35 °C)
   FUUID      6adb3101-f33f-4950-053b-2da68312671428fb
   MODEL      FHEM
   NAME       doif_TemperaturTest
   NOTIFYDEV  global
   NR         316
   NTFY_ORDER 50-doif_TemperaturTest
   STATE      cmd_1
   TYPE       DOIF
   VERSION    31767 2026-10-11 20:31:19
   eventCount 8
   Helper:
     DBLOG:
       cmd:
         LOG_fhemdb:
           TIME       1792752600.57525
           VALUE      1
       cmd_event:
         LOG_fhemdb:
           TIME       1792752600.57525
           VALUE      doif_TemperaturTest
       cmd_nr:
         LOG_fhemdb:
           TIME       1792752600.57525
           VALUE      1
       last_cmd:
         LOG_fhemdb:
           TIME       1792750690.23138
           VALUE      disabled
       mode:
         LOG_fhemdb:
           TIME       1792752587.31241
           VALUE      enabled
       state:
         LOG_fhemdb:
           TIME       1792752600.57525
           VALUE      cmd_1
   READINGS:
     2026-10-23 12:50:00   cmd             1
     2026-10-23 12:50:00   cmd_event       doif_TemperaturTest
     2026-10-23 12:50:00   cmd_nr          1
     2026-10-23 12:49:47   mode            enabled
     2026-10-23 12:50:00   state           cmd_1
     2026-10-23 12:49:47   timer_01_c01    24.10.2026 06:15:00|8
     2026-10-23 12:49:47   timer_02_c01    23.10.2026 22:00:00|8
     2026-10-23 12:49:47   timer_03_c02    24.10.2026 08:15:00|7
     2026-10-23 12:49:47   timer_04_c02    23.10.2026 22:00:00|7
   Regex:
     accu:
     bar:
     barAvg:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0             ::DOIF_time($hash,0,1,$wday,$hms,"8") and ReadingsNum("VBUSDEV_7112","Temperatur_Sensor_8",0.0,1)< 35.0
     1            ::DOIF_time($hash,2,3,$wday,$hms,"7") and ReadingsNum("VBUSDEV_7112","Temperatur_Sensor_8",0.0,1) < 35.0
   days:
     0          8
     1          8
     2          7
     3          7
   do:
     0:
       0           msg push @rr_Thomas Zirku-Leitung UNTER 35 °C
     1:
       0           msg push @rr_Thomas Zirku-Leitung UNTER 35 °C
     2:
       0          msg push @rr_Thomas Zirku-Leitung ÜBER 35 °C
   helper:
     NOTIFYDEV  global
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
     DOIF_eventa:
       cmd_nr: 1
       cmd: 1
       cmd_event: doif_TemperaturTest
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: doif_TemperaturTest
       state: cmd_1
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1792815300
     1          1792785600
     2          1792822500
     3          1792785600
   realtime:
     0          06:15:00
     1          22:00:00
     2          08:15:00
     3          22:00:00
   time:
     0          06:15:00
     1          22:00:00
     2          08:15:00
     3          22:00:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     1           2  3
   triggertime:
     1792785600:
       localtime  1792785600
       hash:
     1792815300:
       localtime  1792815300
       hash:
     1792822500:
       localtime  1792822500
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Logik

VG

Damian

ReadingsNum("VBUSDEV_7112","Temperatur_Sensor_8",0.0,1)< 35.0 liefert keine Events, daher kann es selbst keine Aktion auslösen.

Wenn neben der Zeit die Temperatur etwas auslösen soll, dann muss du die DOIF-Syntax verwenden:

[VBUSDEV_7112:Temperatur_Sensor_8:d]
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF