DOIF: cmd1 immer zwei mal hintereinander

Begonnen von Schlimbo, 27 September 2015, 12:31:28

Vorheriges Thema - Nächstes Thema

Schlimbo

Hallo zusammen,

Nutze DOIF um den Status meiner Waschmaschine zu ermitteln.
Die Leistung der Waschmaschine wird über eine PCA301-Funksteckdose gemessen.
Ist die Leistung länger als 30 Sekunden über 20W soll der Dummy "Waschprogramm" auf "on" gesetzt werden.
und beim unterschreiten von 3W nach 120 Sekunden wieder auf "off"

Meine Definition sieht so aus:
define di_washer DOIF ([PCA301_Waschmaschine:power]<3) (set Waschprogramm off) DOELSEIF ([PCA301_Waschmaschine:power]>20) (set Waschprogramm on)
attr di_washer wait 120:30


Habe aber jetzt das Problem, dass "set Waschprogramm off" immer zwei mal gesetzt wird
Log vom Dummy "Waschprogramm":
2015-09-27_11:47:00 Waschprogramm off
2015-09-27_11:45:00 Waschprogramm off
2015-09-27_10:23:05 Waschprogramm on
2015-09-24_20:42:20 Waschprogramm off
2015-09-24_20:40:20 Waschprogramm off


War eigentlich der Meinung das jedes Kommando in DOIF nur einmal ausgeführt wird:
Commandref: "Standardmäßig, ohne das Attribut do always, wird das Wiederholen desselben Kommandos vom Modul unterbunden"

Woran kann das liegen? Habe ich in der DOIF Definition noch eine Fehler?

Habe mir das mal Live mit angesehen:
Geht die Leistung unter 3W wird der "wait_timer" gesetzt
nach 120 Sekunden wird "cmd 1" ausgeführt aber der "wait_timer" auch erneut gesetzt.
nach weiteren 120s wird "cmd 1" erneut ausgeführt, "wait_timer"wird diesmal aber nicht mehr gesetzt.

Gruß schlimbo

Screenshot nach dem ersten Ausführen von cmd 1:

Damian

Zitat von: Schlimbo am 27 September 2015, 12:31:28
Hallo zusammen,

Nutze DOIF um den Status meiner Waschmaschine zu ermitteln.
Die Leistung der Waschmaschine wird über eine PCA301-Funksteckdose gemessen.
Ist die Leistung länger als 30 Sekunden über 20W soll der Dummy "Waschprogramm" auf "on" gesetzt werden.
und beim unterschreiten von 3W nach 120 Sekunden wieder auf "off"

Meine Definition sieht so aus:
define di_washer DOIF ([PCA301_Waschmaschine:power]<3) (set Waschprogramm off) DOELSEIF ([PCA301_Waschmaschine:power]>20) (set Waschprogramm on)
attr di_washer wait 120:30


Habe aber jetzt das Problem, dass "set Waschprogramm off" immer zwei mal gesetzt wird
Log vom Dummy "Waschprogramm":
2015-09-27_11:47:00 Waschprogramm off
2015-09-27_11:45:00 Waschprogramm off
2015-09-27_10:23:05 Waschprogramm on
2015-09-24_20:42:20 Waschprogramm off
2015-09-24_20:40:20 Waschprogramm off


War eigentlich der Meinung das jedes Kommando in DOIF nur einmal ausgeführt wird:
Commandref: "Standardmäßig, ohne das Attribut do always, wird das Wiederholen desselben Kommandos vom Modul unterbunden"

Woran kann das liegen? Habe ich in der DOIF Definition noch eine Fehler?

Habe mir das mal Live mit angesehen:
Geht die Leistung unter 3W wird der "wait_timer" gesetzt
nach 120 Sekunden wird "cmd 1" ausgeführt aber der "wait_timer" auch erneut gesetzt.
nach weiteren 120s wird "cmd 1" erneut ausgeführt, "wait_timer"wird diesmal aber nicht mehr gesetzt.

Gruß schlimbo

Screenshot nach dem ersten Ausführen von cmd 1:

Da stimmt was nicht bei deiner Darstellung: Wie kann der Status cmd_2 sein und das state-Reading cmd_1. Poste besser mal list di_washer und am besten Events aus dieser Zeit vom Event monitor.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Schlimbo

Hier die Ausgabe von list di_washer:
Internals:
   DEF        ([PCA301_Waschmaschine:power]<3) (set Waschprogramm off) DOELSEIF ([PCA301_Waschmaschine:power]>20) (set Waschprogramm on)
   NAME       di_washer
   NR         349
   NTFY_ORDER 50-di_washer
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-09-27 11:47:02   Device          PCA301_Waschmaschine
     2015-09-27 11:47:01   cmd_event       PCA301_Waschmaschine
     2015-09-27 11:47:01   cmd_nr          1
     2015-09-27 11:47:02   e_PCA301_Waschmaschine_power 0
     2015-09-27 11:47:01   state           cmd_1
     2015-09-27 11:47:00   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('PCA301_Waschmaschine','power','')<3
     1          ReadingValDoIf('PCA301_Waschmaschine','power','')>20
   Devices:
     0           PCA301_Waschmaschine
     1           PCA301_Waschmaschine
     all         PCA301_Waschmaschine
   Do:
     0:
       0          set Waschprogramm off
     1:
       0          set Waschprogramm on
     2:
   Helper:
     globalinit 1
     last_timer 0
     sleepdevice PCA301_Waschmaschine
     sleepsubtimer -1
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           PCA301_Waschmaschine:power
     1           PCA301_Waschmaschine:power
     all         PCA301_Waschmaschine:power
   State:
   Trigger:
Attributes:
   wait       120:30


Denke die Unterschiede von STATE und dem reading state ist nur ein Anzeige Fehler,  weil ich die Seite nicht neu geladen habe. Events werden sofort aktualisiert (rot), der rest nur nach F5.

Hier der Eventmonitor aus der Zeit:
Events (Filter:.*):
2015-09-27 11:40:46 PCA301 PCA301_Waschmaschine power: 24.8
2015-09-27 11:41:18 PCA301 PCA301_Waschmaschine power: 3.2
2015-09-27 11:41:51 PCA301 PCA301_Waschmaschine power: 3.3
2015-09-27 11:42:21 PCA301 PCA301_Waschmaschine power: 3.5
2015-09-27 11:43:00 DOIF di_washer wait_timer: 27.09.2015 11:45:00 cmd_1 PCA301_Waschmaschine
2015-09-27 11:43:00 PCA301 PCA301_Waschmaschine power: 2.1
2015-09-27 11:44:00 Pushover push lastResult: ok
2015-09-27 11:45:00 DOIF di_washer wait_timer: no timer
2015-09-27 11:45:00 DOIF di_washer wait_timer: 27.09.2015 11:47:00 cmd_1 PCA301_Waschmaschine
2015-09-27 11:45:00 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:45:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:45:00 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:45:01 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:45:01 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:45:01 Pushover push msg 'FHEM' 'Waschmaschine ist fertig!' '' 0 ''
2015-09-27 11:45:01 Global global fhemMsgScreen: Waschmaschine ist fertig!
2015-09-27 11:45:01 Global global fhemMsgScreenTitle: FHEM
2015-09-27 11:45:01 Global global fhemMsgScreenPrio: 0
2015-09-27 11:45:01 Global global fhemMsgScreenGw: SATReceiver:OK raspbmc:OK
2015-09-27 11:45:01 Global global fhemMsgScreenState: 1
2015-09-27 11:45:01 Global global fhemMsgPush: Waschmaschine ist fertig!
2015-09-27 11:45:01 Global global fhemMsgPushTitle: FHEM
2015-09-27 11:45:01 Global global fhemMsgPushPrio: 0
2015-09-27 11:45:01 Global global fhemMsgPushGw: push:OK
2015-09-27 11:45:01 Global global fhemMsgPushState: 1
2015-09-27 11:45:01 Global global fhemMsgStateTypes: screen:1 push:1
2015-09-27 11:45:01 Global global fhemMsgState: 1
2015-09-27 11:45:01 dummy Waschprogramm off
2015-09-27 11:45:01 dummy Waschprogramm Anzahl: 22
2015-09-27 11:45:01 DOIF di_washer cmd_nr: 1
2015-09-27 11:45:01 DOIF di_washer cmd_event: PCA301_Waschmaschine
2015-09-27 11:45:01 DOIF di_washer cmd_1
2015-09-27 11:45:01 PCA301 PCA301_Waschmaschine off
2015-09-27 11:45:01 PCA301 PCA301_Waschmaschine power: 0
2015-09-27 11:45:02 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:45:02 PCA301 PCA301_Waschmaschine off
2015-09-27 11:45:02 Pushover push lastTitle: FHEM
2015-09-27 11:45:02 Pushover push lastMessage: Waschmaschine ist fertig!
2015-09-27 11:45:02 Pushover push lastPriority: 0
2015-09-27 11:45:02 Pushover push lastAction: -
2015-09-27 11:45:02 Pushover push lastDevice: Handy,Tablet
2015-09-27 11:45:02 Pushover push lastRequest: xxxxx
2015-09-27 11:45:02 Pushover push lastResult: ok
2015-09-27 11:47:00 DOIF di_washer wait_timer: no timer
2015-09-27 11:47:00 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:47:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:47:00 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:47:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:47:01 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:47:01 Pushover push msg 'FHEM' 'Waschmaschine ist fertig!' '' 0 ''
2015-09-27 11:47:01 Global global fhemMsgScreen: Waschmaschine ist fertig!
2015-09-27 11:47:01 Global global fhemMsgScreenTitle: FHEM
2015-09-27 11:47:01 Global global fhemMsgScreenPrio: 0
2015-09-27 11:47:01 Global global fhemMsgScreenGw: SATReceiver:OK raspbmc:OK
2015-09-27 11:47:01 Global global fhemMsgScreenState: 1
2015-09-27 11:47:01 Global global fhemMsgPush: Waschmaschine ist fertig!
2015-09-27 11:47:01 Global global fhemMsgPushTitle: FHEM
2015-09-27 11:47:01 Global global fhemMsgPushPrio: 0
2015-09-27 11:47:01 Global global fhemMsgPushGw: push:OK
2015-09-27 11:47:01 Global global fhemMsgPushState: 1
2015-09-27 11:47:01 Global global fhemMsgStateTypes: screen:1 push:1
2015-09-27 11:47:01 Global global fhemMsgState: 1
2015-09-27 11:47:01 dummy Waschprogramm off
2015-09-27 11:47:01 dummy Waschprogramm Anzahl: 23
2015-09-27 11:47:01 DOIF di_washer cmd_nr: 1
2015-09-27 11:47:01 DOIF di_washer cmd_event: PCA301_Waschmaschine
2015-09-27 11:47:01 DOIF di_washer cmd_1
2015-09-27 11:47:01 PCA301 PCA301_Waschmaschine off
2015-09-27 11:47:02 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:47:02 PCA301 PCA301_Waschmaschine off
2015-09-27 11:47:02 Pushover push lastTitle: FHEM
2015-09-27 11:47:02 Pushover push lastMessage: Waschmaschine ist fertig!
2015-09-27 11:47:02 Pushover push lastPriority: 0
2015-09-27 11:47:02 Pushover push lastAction: -
2015-09-27 11:47:02 Pushover push lastDevice: Handy,Tablet
2015-09-27 11:47:02 Pushover push lastRequest: xxxxx
2015-09-27 11:47:02 Pushover push lastResult: ok


zur Info
Über den Dummy Waschprogramm und der 99_myUtils schalte ich dann die Steckdose aus und sende Push Nachrichten etc.
define Waschen.ntfy notify Waschprogramm:off {Waschmaschine()}

Eine Lösung ware event-on-change-reading am Dummy zu setzen, aber die Frage ist ja warum wird "off"  überhaupt zwei mal getriggert.

Damian

Zitat von: Schlimbo am 27 September 2015, 14:53:27
Hier die Ausgabe von list di_washer:
Internals:
   DEF        ([PCA301_Waschmaschine:power]<3) (set Waschprogramm off) DOELSEIF ([PCA301_Waschmaschine:power]>20) (set Waschprogramm on)
   NAME       di_washer
   NR         349
   NTFY_ORDER 50-di_washer
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-09-27 11:47:02   Device          PCA301_Waschmaschine
     2015-09-27 11:47:01   cmd_event       PCA301_Waschmaschine
     2015-09-27 11:47:01   cmd_nr          1
     2015-09-27 11:47:02   e_PCA301_Waschmaschine_power 0
     2015-09-27 11:47:01   state           cmd_1
     2015-09-27 11:47:00   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('PCA301_Waschmaschine','power','')<3
     1          ReadingValDoIf('PCA301_Waschmaschine','power','')>20
   Devices:
     0           PCA301_Waschmaschine
     1           PCA301_Waschmaschine
     all         PCA301_Waschmaschine
   Do:
     0:
       0          set Waschprogramm off
     1:
       0          set Waschprogramm on
     2:
   Helper:
     globalinit 1
     last_timer 0
     sleepdevice PCA301_Waschmaschine
     sleepsubtimer -1
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           PCA301_Waschmaschine:power
     1           PCA301_Waschmaschine:power
     all         PCA301_Waschmaschine:power
   State:
   Trigger:
Attributes:
   wait       120:30


Denke die Unterschiede von STATE und dem reading state ist nur ein Anzeige Fehler,  weil ich die Seite nicht neu geladen habe. Events werden sofort aktualisiert (rot), der rest nur nach F5.

Hier der Eventmonitor aus der Zeit:
Events (Filter:.*):
2015-09-27 11:40:46 PCA301 PCA301_Waschmaschine power: 24.8
2015-09-27 11:41:18 PCA301 PCA301_Waschmaschine power: 3.2
2015-09-27 11:41:51 PCA301 PCA301_Waschmaschine power: 3.3
2015-09-27 11:42:21 PCA301 PCA301_Waschmaschine power: 3.5
2015-09-27 11:43:00 DOIF di_washer wait_timer: 27.09.2015 11:45:00 cmd_1 PCA301_Waschmaschine
2015-09-27 11:43:00 PCA301 PCA301_Waschmaschine power: 2.1
2015-09-27 11:44:00 Pushover push lastResult: ok
2015-09-27 11:45:00 DOIF di_washer wait_timer: no timer
2015-09-27 11:45:00 DOIF di_washer wait_timer: 27.09.2015 11:47:00 cmd_1 PCA301_Waschmaschine
2015-09-27 11:45:00 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:45:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:45:00 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:45:01 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:45:01 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:45:01 Pushover push msg 'FHEM' 'Waschmaschine ist fertig!' '' 0 ''
2015-09-27 11:45:01 Global global fhemMsgScreen: Waschmaschine ist fertig!
2015-09-27 11:45:01 Global global fhemMsgScreenTitle: FHEM
2015-09-27 11:45:01 Global global fhemMsgScreenPrio: 0
2015-09-27 11:45:01 Global global fhemMsgScreenGw: SATReceiver:OK raspbmc:OK
2015-09-27 11:45:01 Global global fhemMsgScreenState: 1
2015-09-27 11:45:01 Global global fhemMsgPush: Waschmaschine ist fertig!
2015-09-27 11:45:01 Global global fhemMsgPushTitle: FHEM
2015-09-27 11:45:01 Global global fhemMsgPushPrio: 0
2015-09-27 11:45:01 Global global fhemMsgPushGw: push:OK
2015-09-27 11:45:01 Global global fhemMsgPushState: 1
2015-09-27 11:45:01 Global global fhemMsgStateTypes: screen:1 push:1
2015-09-27 11:45:01 Global global fhemMsgState: 1
2015-09-27 11:45:01 dummy Waschprogramm off
2015-09-27 11:45:01 dummy Waschprogramm Anzahl: 22
2015-09-27 11:45:01 DOIF di_washer cmd_nr: 1
2015-09-27 11:45:01 DOIF di_washer cmd_event: PCA301_Waschmaschine
2015-09-27 11:45:01 DOIF di_washer cmd_1
2015-09-27 11:45:01 PCA301 PCA301_Waschmaschine off
2015-09-27 11:45:01 PCA301 PCA301_Waschmaschine power: 0
2015-09-27 11:45:02 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:45:02 PCA301 PCA301_Waschmaschine off
2015-09-27 11:45:02 Pushover push lastTitle: FHEM
2015-09-27 11:45:02 Pushover push lastMessage: Waschmaschine ist fertig!
2015-09-27 11:45:02 Pushover push lastPriority: 0
2015-09-27 11:45:02 Pushover push lastAction: -
2015-09-27 11:45:02 Pushover push lastDevice: Handy,Tablet
2015-09-27 11:45:02 Pushover push lastRequest: xxxxx
2015-09-27 11:45:02 Pushover push lastResult: ok
2015-09-27 11:47:00 DOIF di_washer wait_timer: no timer
2015-09-27 11:47:00 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:47:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:47:00 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:47:00 ENIGMA2 SATReceiver msg info 5 Waschmaschine ist fertig!
2015-09-27 11:47:01 XBMC raspbmc msg "FHEM" "Waschmaschine ist fertig!" 5000 info
2015-09-27 11:47:01 Pushover push msg 'FHEM' 'Waschmaschine ist fertig!' '' 0 ''
2015-09-27 11:47:01 Global global fhemMsgScreen: Waschmaschine ist fertig!
2015-09-27 11:47:01 Global global fhemMsgScreenTitle: FHEM
2015-09-27 11:47:01 Global global fhemMsgScreenPrio: 0
2015-09-27 11:47:01 Global global fhemMsgScreenGw: SATReceiver:OK raspbmc:OK
2015-09-27 11:47:01 Global global fhemMsgScreenState: 1
2015-09-27 11:47:01 Global global fhemMsgPush: Waschmaschine ist fertig!
2015-09-27 11:47:01 Global global fhemMsgPushTitle: FHEM
2015-09-27 11:47:01 Global global fhemMsgPushPrio: 0
2015-09-27 11:47:01 Global global fhemMsgPushGw: push:OK
2015-09-27 11:47:01 Global global fhemMsgPushState: 1
2015-09-27 11:47:01 Global global fhemMsgStateTypes: screen:1 push:1
2015-09-27 11:47:01 Global global fhemMsgState: 1
2015-09-27 11:47:01 dummy Waschprogramm off
2015-09-27 11:47:01 dummy Waschprogramm Anzahl: 23
2015-09-27 11:47:01 DOIF di_washer cmd_nr: 1
2015-09-27 11:47:01 DOIF di_washer cmd_event: PCA301_Waschmaschine
2015-09-27 11:47:01 DOIF di_washer cmd_1
2015-09-27 11:47:01 PCA301 PCA301_Waschmaschine off
2015-09-27 11:47:02 PCA301 PCA301_Waschmaschine set-off
2015-09-27 11:47:02 PCA301 PCA301_Waschmaschine off
2015-09-27 11:47:02 Pushover push lastTitle: FHEM
2015-09-27 11:47:02 Pushover push lastMessage: Waschmaschine ist fertig!
2015-09-27 11:47:02 Pushover push lastPriority: 0
2015-09-27 11:47:02 Pushover push lastAction: -
2015-09-27 11:47:02 Pushover push lastDevice: Handy,Tablet
2015-09-27 11:47:02 Pushover push lastRequest: xxxxx
2015-09-27 11:47:02 Pushover push lastResult: ok


zur Info
Über den Dummy Waschprogramm und der 99_myUtils schalte ich dann die Steckdose aus und sende Push Nachrichten etc.
define Waschen.ntfy notify Waschprogramm:off {Waschmaschine()}

Eine Lösung ware event-on-change-reading am Dummy zu setzen, aber die Frage ist ja warum wird "off"  überhaupt zwei mal getriggert.

Ich vermute, dass du dir mit dem doif und dem notify ein Loop eingebaut hast. Denn das Setzen von Waschprogramm off über das DOIF-Modul triggert dein notify, welches wahrscheinlich über deine Waschmaschine-Routine erneut mit "PCA301 PCA301_Waschmaschine set-off" das DOIF-Modul sofort wieder triggert. Du musst schauen, dass du die Sachen entkoppelst.

Gruß

Damian




Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Schlimbo

Hi Damian,

Das Notify ruft in der 99_myUtils folgenden Code auf:

sub Waschmaschine {
my $Anzahl = ((ReadingsVal('Waschprogramm', 'Anzahl', ''))+1);
fhem "set PCA301_Waschmaschine off";
fhem ("sleep 2;set PCA301_Waschmaschine off");
fhem "msg screen,push 0 |FHEM| Waschmaschine ist fertig!";
if ($Anzahl > 100)
  {
  fhem "msg screen,push 0 |FHEM| Waschmaschine sollte gereinigt werden! letzte Reinigung war vor $Anzahl Wäschen!";
  }
readingsSingleUpdate($defs{Waschprogramm}, "Anzahl", "$Anzahl",1);
}


Die Steckdose schalte ich 2x aus, weil die PCA301 nicht immer zuverlässig schalten.

Das DOIF sollte aber doch nur von dem Reading "power" der Steckdose beeinflusst werden und nicht von set-off oder?

Gruß schlimbo

Schlimbo

Habe es gerade getestet, es ist wirklich wie du geschrieben hast:

Das 1. set-off in der 99_myUtils beeinflusst das DOIF irgendwie.
Habe jetzt auch das 1. set-off etwas verzögert und das Problem ist behoben.

sub Waschmaschine {
my $Anzahl = ((ReadingsVal('Waschprogramm', 'Anzahl', ''))+1);
fhem ("sleep 2;set PCA301_Waschmaschine off");
fhem ("sleep 4;set PCA301_Waschmaschine off"); ...


Ganz verstehe ich es jedoch trotzdem nicht, warum der wait-timer vom DOIF dadurch noch mal angestoßen wird.

Danke für deine Hilfe

Gruß schlimbo

Damian

Zitat von: Schlimbo am 27 September 2015, 16:53:02
Habe es gerade getestet, es ist wirklich wie du geschrieben hast:

Das 1. set-off in der 99_myUtils beeinflusst das DOIF irgendwie.
Habe jetzt auch das 1. set-off etwas verzögert und das Problem ist behoben.

sub Waschmaschine {
my $Anzahl = ((ReadingsVal('Waschprogramm', 'Anzahl', ''))+1);
fhem ("sleep 2;set PCA301_Waschmaschine off");
fhem ("sleep 4;set PCA301_Waschmaschine off"); ...


Ganz verstehe ich es jedoch trotzdem nicht, warum der wait-timer vom DOIF dadurch noch mal angestoßen wird.

Danke für deine Hilfe

Gruß schlimbo

Es liegt an der Rekursion. Der Status des Moduls wird erst geändert, wenn das Kommando abgeschlossen ist. Bei dir führt aber das Kommando "set Waschprogramm off" indirekt über den notify zu einem erneuten Trigger des Moduls, bevor der Status des ersten Triggers gesetzt wurde.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Schlimbo am 27 September 2015, 16:53:02
Habe es gerade getestet, es ist wirklich wie du geschrieben hast:

Das 1. set-off in der 99_myUtils beeinflusst das DOIF irgendwie.
Habe jetzt auch das 1. set-off etwas verzögert und das Problem ist behoben.

sub Waschmaschine {
my $Anzahl = ((ReadingsVal('Waschprogramm', 'Anzahl', ''))+1);
fhem ("sleep 2;set PCA301_Waschmaschine off");
fhem ("sleep 4;set PCA301_Waschmaschine off"); ...


Ganz verstehe ich es jedoch trotzdem nicht, warum der wait-timer vom DOIF dadurch noch mal angestoßen wird.

Danke für deine Hilfe

Gruß schlimbo

Mit dieser Version

http://forum.fhem.de/index.php/topic,41859.0.html

sollte das Problem behoben sein. Kannst ja mal ohne Sleep-Verzögerung ausprobieren.

Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Schlimbo

Hallo Damian,

Danke für die neue Version, jetzt funktioniert es auch ohne die sleep Verzögerung.

Gruß Schlimbo