DOIF neues Feature: Wiederholende Ausführung mit Zeitangabe

Begonnen von Damian, 06 November 2015, 22:05:57

Vorheriges Thema - Nächstes Thema

Ellert

Es scheint so, dass einmal der zufällige wait-Timer und das andere Mal der feste repeatcmd-Timer die Zeiten bestimmt.

Nach dem ich hier: http://fhem.de/commandref_DE.html#DOIF_wait nachgelesen habe, denke ich die Berechnung funktioniert nur bei einfachen wait mit Doppelpunkt, nur dort wird die Berechnung erwähnt. Dass es auch bei Komma getrennten wait-Zeiten klappen müsste, habe ich wohl falsch interpretiert.

Neue Idee:
([18:00-23:00]) (IF ([Dachlicht_03] eq "off") (set Dachlicht_03 on ) ELSE (set Dachlicht_03 off))
wait rand(600)+300
repeatcmd 910

moonsorrox

#46
ich habe da schon hoch und runter gelesen, aber umso mehr ich lese umso weniger verstehe ich das alles, weil verwirrt...! ;)

Ich fahre jetzt mal den Test mit den von vorgeschlagenen Werten und werde später wieder dazu schreiben

@Ellert
EDITH:// geht gar nicht, schaltet immer nur AUS  :-\
Ich werde jetzt nochmal die Zeiten für die Nacht umändern, dann lebe ich damit das die Ausschaltzeit immer gleich ist, aber ich versuche sie kurz zu halten so bis 15min. und die Einschaltzeit soll variieren zwischen 30min. bis 60min.  :D wie gesagt ich versuche  ;)
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Damian

Zitat von: Ellert am 26 Januar 2016, 20:36:57
Nach dem ich hier: http://fhem.de/commandref_DE.html#DOIF_wait nachgelesen habe, denke ich die Berechnung funktioniert nur bei einfachen wait mit Doppelpunkt, nur dort wird die Berechnung erwähnt. Dass es auch bei Komma getrennten wait-Zeiten klappen müsste, habe ich wohl falsch interpretiert.

Die Berechnung wird auch bei Komma ausgeführt.

Gruß

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

Ellert

Das müsste klappen ich habe es probiert:

([18:00-23:00]) () (set Dachlicht_03 on ) (set Dachlicht_03 off)

wait 0,rand(600)+300,rand(600)+300
repeatcmd 1


repeatcmd wird erst nach Ausführung aller Sequenzen berechnet und kollidiert mit dem 1. Zufallstimer, daher einmal () und wait 0,...

moonsorrox

Meine Ergebnisse aus der Nacht bis heute morgen.

Einstellung
repeatcmd: 900
wait: rand(1800)+300,rand(3600)+1800

Zeit EIN ist von minimum 40 min. bis maximal 1 h 23 min.
Zeit AUS ist immer  15 min.
damit könnte ich leben, die Ausschaltzeit ist zwar immer gleich aber das ist OK die Einschaltzeit variiert nun soweit wie ich es möchte.


2016.01.27 12:58:00 1: Ausschalten
2016.01.27 12:18:30 1: Einschalten

2016.01.27 12:03:30 1: Ausschalten
2016.01.27 10:50:41 1: Einschalten

2016.01.27 10:35:40 1: Ausschalten
2016.01.27 09:53:16 1: Einschalten

2016.01.27 09:38:16 1: Ausschalten
2016.01.27 08:44:31 1: Einschalten

2016.01.27 08:29:31 1: Ausschalten
2016.01.27 07:15:26 1: Einschalten

2016.01.27 07:00:26 1: Ausschalten
2016.01.27 05:46:49 1: Einschalten

2016.01.27 05:31:49 1: Ausschalten
2016.01.27 04:38:06 1: Einschalten

2016.01.27 04:23:06 1: Ausschalten
2016.01.27 03:17:32 1: Einschalten

2016.01.27 03:02:32 1: Ausschalten
2016.01.27 01:39:34 1: Einschalten


Ich werde mir jetzt eine zweite Simulation/DOIF bauen und die neue Idee von dir probieren
Übrigens mal einen großen Dank für die tolle Unterstützung ;) :D
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ellert

@Damian: Mich hat das von moonsorrox beobachtete Verhalten des DOIF irritiert und habe es nachgestellt, mit dem Ergebnis:
Bei Verwendung von erweitertem wait zusammen mit repeatcmd, wird der 1. wait-Timer nicht beachtet.

Verwendete DOIF-Version: DOIF-Testversion V 0.5
Loggendes notify:
anaus {Log 1, "notify $NAME: $EVENT"}
Beobachtetes DOIF:
anaus DOIF ([13:45-18:00]) (({Log 1,"DOIF anaus: Einschalten"})) (({Log 1,"DOIF anaus: Ausschalten"}))
wait 10,14
repeatcmd 1

Zitat
+++++++++ 1. Runde
1. timer (10 s) ignoriert
2016.01.27 13:45:00 1: DOIF anaus: Einschalten
2016.01.27 13:45:00 1: notify anaus: cmd_nr: 1
2016.01.27 13:45:00 1: notify anaus: cmd_seqnr: 1
2016.01.27 13:45:00 1: notify anaus: cmd_event: timer_1
2016.01.27 13:45:00 1: notify anaus: cmd_1_1
2016.01.27 13:45:00 1: notify anaus: wait_timer: 27.01.2016 13:45:14 cmd_1_2 timer_1
2. timer (15 s) gesetzt
2016.01.27 13:45:14 1: notify anaus: wait_timer: no timer
2016.01.27 13:45:14 1: DOIF anaus: Ausschalten
2016.01.27 13:45:14 1: notify anaus: cmd_nr: 1
2016.01.27 13:45:14 1: notify anaus: cmd_seqnr: 2
2016.01.27 13:45:14 1: notify anaus: cmd_event: timer_1
2016.01.27 13:45:14 1: notify anaus: cmd_1
2016.01.27 13:45:14 1: notify anaus: wait_timer: 27.01.2016 13:45:15 cmd_1_1 timer_1
+++++++++ 2. Runde
1. timer (10 s) ignoriert, stattdessen repeatcmd-Zeit (1 s) verwendet
2016.01.27 13:45:15 1: notify anaus: wait_timer: no timer
2016.01.27 13:45:15 1: DOIF anaus: Einschalten
2016.01.27 13:45:15 1: notify anaus: cmd_nr: 1
2016.01.27 13:45:15 1: notify anaus: cmd_seqnr: 1
2016.01.27 13:45:15 1: notify anaus: cmd_event: timer_1
2016.01.27 13:45:15 1: notify anaus: cmd_1_1
2016.01.27 13:45:15 1: notify anaus: wait_timer: 27.01.2016 13:45:29 cmd_1_2 timer_1
2. timer (14 s) gesetzt
2016.01.27 13:45:29 1: notify anaus: wait_timer: no timer
2016.01.27 13:45:29 1: DOIF anaus: Ausschalten
2016.01.27 13:45:29 1: notify anaus: cmd_nr: 1
2016.01.27 13:45:29 1: notify anaus: cmd_seqnr: 2
2016.01.27 13:45:29 1: notify anaus: cmd_event: timer_1
2016.01.27 13:45:29 1: notify anaus: cmd_1
2016.01.27 13:45:29 1: notify anaus: wait_timer: 27.01.2016 13:45:30 cmd_1_1 timer_1
1. Runde: Die erste wait-Zeit von 10 s wird nicht beachtet.
2. Runde: Statt der ersten wait-Zeit von 10 s, wird die repeatcmd-Zeit von 1 s aktiv und danach die zweite wait-Zeit von 14 s.

Habe ich das richtig interpretiert?
Das Verhalten kann man umgehen, wenn ein 0 Timer im wait-Abschnitt der zu wiederholenden Sequenzen vorangestellt wird und eine leere Sequenz an den Anfang des zugehörigen Bedingungszweig  eingefügt wird.

Damian

Zitat von: Ellert am 27 Januar 2016, 14:47:12
@Damian: Mich hat das von moonsorrox beobachtete Verhalten des DOIF irritiert und habe es nachgestellt, mit dem Ergebnis:
Bei Verwendung von erweitertem wait zusammen mit repeatcmd, wird der 1. wait-Timer nicht beachtet.

Verwendete DOIF-Version: DOIF-Testversion V 0.5
Loggendes notify:
anaus {Log 1, "notify $NAME: $EVENT"}
Beobachtetes DOIF:
anaus DOIF ([13:45-18:00]) (({Log 1,"DOIF anaus: Einschalten"})) (({Log 1,"DOIF anaus: Ausschalten"}))
wait 10,14
repeatcmd 1
1. Runde: Die erste wait-Zeit von 10 s wird nicht beachtet.
2. Runde: Statt der ersten wait-Zeit von 10 s, wird die repeatcmd-Zeit von 1 s aktiv und danach die zweite wait-Zeit von 14 s.

Habe ich das richtig interpretiert?
Das Verhalten kann man umgehen, wenn ein 0 Timer im wait-Abschnitt der zu wiederholenden Sequenzen vorangestellt wird und eine leere Sequenz an den Anfang des zugehörigen Bedingungszweig  eingefügt wird.

Der Trigger kommt vom Zeitintervall, daher greift das erste wait nicht. Mit dem Attribut timerWithWait, sollte das aber funktionieren. Zitat aus der Commandref:
ZitatFür Kommandos ohne Verzögerung werden Sekundenangaben ausgelassen oder auf Null gesetzt. Die Verzögerungen werden nur auf Events angewandt und nicht auf Zeitsteuerung. Eine bereits ausgelöste Verzögerung wird zurückgesetzt, wenn während der Wartezeit ein Kommando eines anderen DO-Falls, ausgelöst durch ein neues Ereignis, ausgeführt werden soll.

Verzögerungen von Timern

Verzögerungen können mit Hilfe des Attributs timerWithWait auf Timer ausgeweitet werden.

Gruß

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

Ellert

Danke für den Hinweis, darauf hätte ich eigentlich selbst kommen müssen, ich habe es schon mehrfach gelesen und auch schon benutzt.

moonsorrox

OK nun mal die Ergebnisse der zweiten Variante der Simulation

DEF
([13:35-23:00]) () (set Dachlicht_03 on, ({Log 1, "Einschalten"})) (set Dachlicht_03 off, ({Log 1, "Ausschalten"}))


Einstellung
repeatcmd: 1
wait: 0,rand(600)+300,rand(600)+300

Zeit EIN ist von minimum 6 min. bis maximal 15 min.
Zeit AUS ist minimum 5 min. bis maximal 15 min.

So scheint das jetzt also mit unterschiedlicher EIN/AUS Zeit zu funktionieren
Ich habe jetzt die Zeiten verändert und teste es weiter, die Pausenzeit ist OK und die Einschaltzeit versuche ich auf ca. minimum 30 min. bis maximum 1 h 20 min. zu bekommen


2016.01.27 16:53:08 1: Ausschalten
2016.01.27 16:53:08 3: CUL_HM set Dachlicht_03 off
2016.01.27 16:53:08 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:53:08 cmd_1_3 timer_1
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:44:44 1: Einschalten
2016.01.27 16:44:44 3: CUL_HM set Dachlicht_03 on
2016.01.27 16:44:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:44:44 cmd_1_2 timer_1
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:29:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:29:47 cmd_1_1 timer_1
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:29:46 1: Ausschalten
2016.01.27 16:29:46 3: CUL_HM set Dachlicht_03 off
2016.01.27 16:29:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:29:46 cmd_1_3 timer_1
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:21:22 1: Einschalten
2016.01.27 16:21:22 3: CUL_HM set Dachlicht_03 on
2016.01.27 16:21:22 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:17:48 3: CUL_HM set Ladestation_kueche on
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:21:22 cmd_1_2 timer_1
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:15:48 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:15:48 cmd_1_1 timer_1
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:15:47 1: Ausschalten
2016.01.27 16:15:47 3: CUL_HM set Dachlicht_03 off
2016.01.27 16:15:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:15:47 cmd_1_3 timer_1
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:09:23 1: Einschalten
2016.01.27 16:09:23 3: CUL_HM set Dachlicht_03 on
2016.01.27 16:09:23 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:09:23 cmd_1_2 timer_1
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:01:47 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:01:47 cmd_1_1 timer_1
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 16:01:46 1: Ausschalten
2016.01.27 16:01:46 3: CUL_HM set Dachlicht_03 off
2016.01.27 16:01:46 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 16:01:46 cmd_1_3 timer_1
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:55:18 1: Einschalten
2016.01.27 15:55:18 3: CUL_HM set Dachlicht_03 on
2016.01.27 15:55:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:55:18 cmd_1_2 timer_1
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:42:10 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:42:10 cmd_1_1 timer_1
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:42:09 1: Ausschalten
2016.01.27 15:42:09 3: CUL_HM set Dachlicht_03 off
2016.01.27 15:42:09 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:42:09 cmd_1_3 timer_1
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:29:39 1: Einschalten
2016.01.27 15:29:39 3: CUL_HM set Dachlicht_03 on
2016.01.27 15:29:39 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:29:39 cmd_1_2 timer_1
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:17:18 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:17:18 cmd_1_1 timer_1
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:17:17 1: Ausschalten
2016.01.27 15:17:17 3: CUL_HM set Dachlicht_03 off
2016.01.27 15:17:17 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:17:17 cmd_1_3 timer_1
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 15:02:44 1: Einschalten
2016.01.27 15:02:44 3: CUL_HM set Dachlicht_03 on
2016.01.27 15:02:44 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 15:02:44 cmd_1_2 timer_1
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:57:05 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:57:05 cmd_1_1 timer_1
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:57:04 1: Ausschalten
2016.01.27 14:57:04 3: CUL_HM set Dachlicht_03 off
2016.01.27 14:57:04 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:57:04 cmd_1_3 timer_1
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:44:12 1: Einschalten
2016.01.27 14:44:12 3: CUL_HM set Dachlicht_03 on
2016.01.27 14:44:12 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:44:12 cmd_1_2 timer_1
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:32:51 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:32:51 cmd_1_1 timer_1
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:32:50 1: Ausschalten
2016.01.27 14:32:50 3: CUL_HM set Dachlicht_03 off
2016.01.27 14:32:50 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:32:50 cmd_1_3 timer_1
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_2
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 2
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:26:57 1: Einschalten
2016.01.27 14:26:57 3: CUL_HM set Dachlicht_03 on
2016.01.27 14:26:57 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:26:57 cmd_1_2 timer_1
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1_1
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 1
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:13:25 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: 27.01.2016 14:13:25 cmd_1_1 timer_1
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_1
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_event: timer_1
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_seqnr: 3
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: cmd_nr: 1
2016.01.27 14:13:24 1: Ausschalten
2016.01.27 14:13:24 3: CUL_HM set Dachlicht_03 off
2016.01.27 14:13:24 1: Name: di_TerrassenBeleuchtung_Simulation2, Event: wait_timer: no timer
2016.01.27 14:04:07 1: Einschalten
2016.01.27 14:04:07 3: CUL_HM set Dachlicht_03 on
2016.01.27 13:56:54 1: Ausschalten
2016.01.27 13:56:54 3: CUL_HM set Dachlicht_03 off
2016.01.27 13:44:23 1: Einschalten
2016.01.27 13:44:23 3: CUL_HM set Dachlicht_03 on
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ellert

Wenn Du mit gelesen hast, weisst Du was falsch war:

Zitat([18:00-23:00]) () (set Dachlicht_03 on ) (set Dachlicht_03 off)

wait 0,rand(600)+300,rand(600)+300
repeatcmd 1
timerWithWait

moonsorrox

#55
aber das hatten wir doch in der 1. Variante der Simulation mit drin..? Auf diese bezog sich denke ich Damians Hinweis..
Denn die jetzige funktioniert doch nur eben das die Zeiten angepaßt werden müssen
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ellert

Ja, Du hast recht, ich werde auch noch mal probieren.

moonsorrox

Hier nun  die Ergebnisse der zweiten Simulationszeit

Einstellung
repeatcmd: 1
wait: 0,rand(1800)+600,rand(600)+600

Zeit EIN ist von minimum 10 min. bis maximal 17 min.
Zeit AUS ist minimum 12 min. bis maximal 40 min.

Den Rest des Logs schenke ich mir hier mal, da wir ja wissen das es so funktioniert, nur ist für mich noch die Frage welcher Bereich der wait Einstellung ist für Ein und welcher für Aus
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Ellert

Für diese Dauer ist AUS rand(1800)+600 und für diese EIN rand(600)+600.

Ellert

#59
Zitat von: Damian am 27 Januar 2016, 17:54:22
Der Trigger kommt vom Zeitintervall, daher greift das erste wait nicht. Mit dem Attribut timerWithWait, sollte das aber funktionieren. Zitat aus der Commandref:
Gruß

Damian

@Damian: Ich habe es mit "timerWithWait" probiert. Das Verhalten hat sich nur wenig geändert.

Die 1. Runde funktioniert, wie erwartet.
ab der 2. Runde wird der 1. berechnete wait-Timer ignoriert.

Benutztes DOIF-Modul: Testversion 0.6
Untersuchtes DOIF:([09:41:45]) (({Log 1,"DOIF anaus: Einschalten"})) (({Log 1,"DOIF anaus: Ausschalten"}))

wait (rand(5)+5),(rand(5)+5)
repeatcmd 1
timerWithWait


Das Logging dazu:
Zitat2016.01.28 09:41:41 1: notify anaus: initialized
++++++++ 1.Runde
2016.01.28 09:41:45 1: notify anaus: wait_timer: 28.01.2016 09:41:54 cmd_1_1 timer_1 wait1 = 9 s
2016.01.28 09:41:54 1: notify anaus: wait_timer: no timer
2016.01.28 09:41:54 1: DOIF anaus: Einschalten
2016.01.28 09:41:54 1: notify anaus: cmd_nr: 1
2016.01.28 09:41:54 1: notify anaus: cmd_seqnr: 1
2016.01.28 09:41:54 1: notify anaus: cmd_event: timer_1
2016.01.28 09:41:54 1: notify anaus: cmd_1_1
2016.01.28 09:41:54 1: notify anaus: wait_timer: 28.01.2016 09:42:03 cmd_1_2 timer_1 wait2 = 9 s
2016.01.28 09:42:03 1: notify anaus: wait_timer: no timer
2016.01.28 09:42:03 1: DOIF anaus: Ausschalten
2016.01.28 09:42:03 1: notify anaus: cmd_nr: 1
2016.01.28 09:42:03 1: notify anaus: cmd_seqnr: 2
2016.01.28 09:42:03 1: notify anaus: cmd_event: timer_1
2016.01.28 09:42:03 1: notify anaus: cmd_1
2016.01.28 09:42:03 1: notify anaus: wait_timer: 28.01.2016 09:42:04 cmd_1_1 timer_1 repeatcmd 1 s
++++++++ 2.Runde
2016.01.28 09:42:04 1: notify anaus: wait_timer: no timer danach müsste wait1 kommen
2016.01.28 09:42:04 1: DOIF anaus: Einschalten
2016.01.28 09:42:04 1: notify anaus: cmd_nr: 1
2016.01.28 09:42:04 1: notify anaus: cmd_seqnr: 1
2016.01.28 09:42:04 1: notify anaus: cmd_event: timer_1
2016.01.28 09:42:04 1: notify anaus: cmd_1_1
2016.01.28 09:42:04 1: notify anaus: wait_timer: 28.01.2016 09:42:12 cmd_1_2 timer_1 wait2 = 8 s
2016.01.28 09:42:12 1: notify anaus: wait_timer: no timer
2016.01.28 09:42:12 1: DOIF anaus: Ausschalten
2016.01.28 09:42:12 1: notify anaus: cmd_nr: 1
2016.01.28 09:42:12 1: notify anaus: cmd_seqnr: 2
2016.01.28 09:42:12 1: notify anaus: cmd_event: timer_1
2016.01.28 09:42:12 1: notify anaus: cmd_1
2016.01.28 09:42:12 1: notify anaus: wait_timer: 28.01.2016 09:42:13 cmd_1_1 timer_1 repeatcmd 1 s
++++++++ 3.Runde
2016.01.28 09:42:13 1: notify anaus: wait_timer: no timer danach müsste wait1 kommen
2016.01.28 09:42:13 1: DOIF anaus: Einschalten
2016.01.28 09:42:13 1: notify anaus: cmd_nr: 1
2016.01.28 09:42:13 1: notify anaus: cmd_seqnr: 1
2016.01.28 09:42:13 1: notify anaus: cmd_event: timer_1
2016.01.28 09:42:13 1: notify anaus: cmd_1_1
2016.01.28 09:42:13 1: notify anaus: wait_timer: 28.01.2016 09:42:21 cmd_1_2 timer_1 wait2 8 s
2016.01.28 09:42:21 1: notify anaus: wait_timer: no timer
2016.01.28 09:42:21 1: DOIF anaus: Ausschalten
2016.01.28 09:42:21 1: notify anaus: cmd_nr: 1
2016.01.28 09:42:21 1: notify anaus: cmd_seqnr: 2
2016.01.28 09:42:21 1: notify anaus: cmd_event: timer_1
2016.01.28 09:42:21 1: notify anaus: cmd_1
2016.01.28 09:42:22 1: notify anaus: wait_timer: 28.01.2016 09:42:23 cmd_1_1 timer_1 repeatcmd 1 s
++++++++ 4.Runde
2016.01.28 09:42:23 1: notify anaus: wait_timer: no timer

Ergänzt: Testversion 0.7 zeigt das gleiche Verhalten