DOIF funktioniert bei mir nicht mehr

Begonnen von iron.eagle, 15 August 2023, 21:16:00

Vorheriges Thema - Nächstes Thema

iron.eagle

Hallo,

seit heute funktioniert bei mir keine einzige DOIF-Funktion mehr. Alles was mit Zeit und weiteren Bedingungen ausgeführt werden soll funktioniert nicht mehr. At und Notify funktionieren.
Ich habe einen Testfunktion erstellt, aber diese funkioniert auch nicht. Führe ich die Befehle mit At aus, klappt alles.

Internals:
   DEF        { if ( [21:06|0123456] ) { fhem_set"az.RO up"; set_State("on") } }
{ if ( [21:01|0123456] ) { fhem(" {testfunc} ") } }
   FUUID      64dbba87-f33f-6dec-eba9-74f80a7f40f92b65
   MODEL      Perl
   NAME       di.test
   NOTIFYDEV  global
   NR         323
   NTFY_ORDER 50-di.test
   STATE      initialized
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 7
   READINGS:
     2023-08-15 21:09:48   block_01        executed
     2023-08-15 21:09:56   block_02        executed
     2023-08-15 21:09:47   mode            enabled
     2023-08-15 21:09:47   state           initialized
     2023-08-15 21:09:47   timer_01_c01    16.08.2023 21:06:00|0123456
     2023-08-15 21:09:47   timer_02_c02    16.08.2023 21:01:00|0123456
   Regex:
     accu:
     bar:
     barAvg:
     collect:
   condition:
     0           if ( ::DOIF_time_once($hash,0,$wday,"0123456") ) { fhem_set"az.RO up"; set_State("on") }
     1           if ( ::DOIF_time_once($hash,1,$wday,"0123456") ) { fhem(" {testfunc} ") }
   days:
     0          0123456
     1          0123456
   helper:
     NOTIFYDEV  global
     globalinit 1
     last_timer 2
     sleeptimer -1
   intervalfunc:
   localtime:
     0          1692212760
     1          1692212460
   perlblock:
     0          block_01
     1          block_02
   realtime:
     0          21:06:00
     1          21:01:00
   time:
     0          21:06:00
     1          21:01:00
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   triggertime:
     1692212460:
       localtime  1692212460
       hash:
     1692212760:
       localtime  1692212760
       hash:
   uiState:
   uiTable:
Attributes:
   room       System

In den Logs kann ich nichts weiter finden; bzgl. DOIF steht dort nichts drin.
FHEM und das ganze Systeme habe ich bereits neugestartet.

Ich bräuchte echt Hilfe bei der Lösung des Problems und liefere gern weitere Infos.

MfG
Torsten

Damian

#1
Du hast offenbar die Blöcke per set-Kommando ausgeführt. In diesem Fall ist die if-Bedingung nicht wahr, als Folge werden die Anweisung nicht ausgeführt.

Wenn der jeweilige Timer zuschlägt, dann ist auch die Bedingung wahr und die Anweisung wird ausgeführt.

Du kannst DOIF-Blöcke auch ohne if definieren:

{[21:06|0123456];fhem_set"az.RO up"; set_State("on")}
Hier gibt es keine if-Bedingung, die Anweisungen werden zu gegebener Uhrzeit als auch per set ausgeführt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

iron.eagle

Hallo Damian,

danke für den Tipp. Das Problem war ja, dass keine DOIFs über den Tag ausgeführt wurden, also auch nicht nach Zeit.
Wie auch immer ... heute früh ging alles wieder an ... merkwürdig.

Kurze Frage zu deiner Antwort:
Wie schreibt man folgende Bedingung ohne if:

{ if ( [07:10|125] and not ::isWeekend($we) ) { fhem(" {preconditioning(1)} ") } }

Damian

Das ist eine echte Bedingung, die kannst du nur über if abfragen. Ich gehe davon aus, dass du die Feiertage abfangen willst, ansonsten ist 125 ja schon kein Wochenende.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

iron.eagle

Ja, Feiertage und ein manueller Schalter werden abgefangen.
Aber gut, es funktioniert alles wieder.
Vielen Dank.