Hauptmenü

DOIF Weihnachtspaket

Begonnen von Damian, 22 Dezember 2014, 19:11:23

Vorheriges Thema - Nächstes Thema

Damian

Hallo zusammen,

ich habe einige Features ins Modul eingebaut. Bevor ich es einchecke, kann man das neue Modul hier herunterladen und ausprobieren. Bitte nur Anmerkungen oder Probleme zu neuen Funktionen hier posten.

-relative Zeitangaben [+<time>] oder [+<begin>-+<end>] natürlich kombinierbar mit Funktionen in geschweiften Klammern wie bisher.

Automatisches Speichern der Konfiguration im Stundentakt:

define di_save DOIF ([+01:00]) (save)
attr di_save do always



-do resetwait   im Gegensatz zu do always wird ein Waittimer auch dann zurückgesetzt, wenn die gleiche Bedingung zuschlägt

Meldung beim Ausbleiben eines Events:

define di_push DOIF ([Tempsensor])
  (set pushmeldung "Sensor wiedermal ausgefallen")
attr di_push wait 600
attr di_push do resetwait


-Zeitintervalle, Readings und Stati ohne Trigger mit [?....]

Licht soll zwischen 06:00 und 10:00 angehen, getriggert wird nur durch den Sensor nicht um 06:00 bzw. 10:00 Uhr

define di_motion DOIF ([?06:00-10:00] and [BM] eq "motion")(set licht on)

Attribut: initialize für Vorbelegung des Status nach dem Neustart

Nach dem Neustart soll der Zustand des di_licht DOIF-Moduls mit cmd_1 vorbelegt werden. cmd_nr wird auf 0 gesetzt, damit wird das Modul scharf gestellt - das nächste Event führt zum Ausführen eines Kommandos.

attr di_licht intialize cmd_1

Attribut: cmdpause sec1:sec2:.. Zwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderung

Attribut: repeatsame  max1:max2:... Hiermit kann die maximale Anzahl für die Wiederholung eines Kommandos definiert werden

Die Meldung soll maximal drei mal erfolgen mit einer Pause von mindestens 10 Minuten:

define di_fertig DOIF ([Watt]<2)
(set pushmeldung "Waschmaschine fertig")

attr di_fertig repeatsame 3
attr di_fertig cmdpause 600


Attribut waitsame sec1:sec2.... führt ein Kommando erst aus, wenn innerhalb einer definierten Zeitspanne die entsprechende Bedingung zwei mal zuschlägt

Rollladen hoch, wenn innerhalb einer Zeitspanne von 2 Sekunden ein Taster betätigt wird:

define di_fensterhoch DOIF ([Taster])(set Rollladen hoch)
attr di_fensterhoch waitsame 2
attr di_fensterhoch do always



-Reading und Statusangaben in [] sowie Berechnungen in {} innerhalb des Perlcodes in geschweiften Klammern im Ausführungsteil

define di_mail DOIF ([08:00]) ({system("wmail 'Es ist [Tempsens:temperature] Grad draußen. Die Durchschnittliche Feuchtigkeit der
Badezimmer beträgt {([Bad1:humidity]+[Bad2:humidity])/2} Prozent'"})
attr di_mail do always


Zeitspanne in Sekunden seit der letzten Änderung mit sec:

Licht soll angehen, wenn der Status von BM in den letzten fünf Sekunden upgedatet wurde.

define di_licht DOIF ([BM:state:sec] < 5)(set Licht on)

Viel Spaß beim Ausprobieren.

Gruß

Damian

Edit: Diese Version ist bereits eingecheckt
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Brockmann

Ja, ist denn heute schon Weihnachten?  :D

Danke für die schöne Überraschung.
Allerdings werde ich die neuen Funktionen lieber erst NACH dem Weihnachtsurlaub testen. ;)

Aber schon mal zwei Fragen dazu:

1,) Man kann die Datei einfach einspielen, ohne die vorhandenen DOIFs einmal neu DEFinieren zu müssen?

2.)
Zitat von: DamianAttribut: cmdpause sec1:sec2:.. Zwangspause für das Ausführen eines Kommandos seit der letzten Zustandsänderung
Wie verhält sich das in Kombination mit do always, wenn ein DOIF seinen Zustand quasi niemals ändert (sondern einfach immer nur auf das Eintreten eines bestimmten Ereignisses reagiert, ohne dass die Kondition unwahr werden könnte)? Also so etwas (nur als Beispiel):
define temp_logger DOIF ([sensor:temperatur])(trigger global Temperatur [sensor:temperatur])
attr temp_logger do always
attr temp_logger cmdpause 600


Würde bei dieser Definition die Aktion dauerhaft alle 10 Minuten (frühestens) ausgeführt?

Damian

Zitat von: Brockmann am 23 Dezember 2014, 10:52:06
Ja, ist denn heute schon Weihnachten?  :D

Danke für die schöne Überraschung.
Allerdings werde ich die neuen Funktionen lieber erst NACH dem Weihnachtsurlaub testen. ;)
ja, Weihnachtsgeschenke niemals vor Weihnachten auspacken ;)

Zitat
Aber schon mal zwei Fragen dazu:

1,) Man kann die Datei einfach einspielen, ohne die vorhandenen DOIFs einmal neu DEFinieren zu müssen?

Vorgehensweise zum Einspielen:

save config, shutdown, 98_DOIF.pm einspielen, System hochfahren.

Das Modul ist abwärtskompatibel, daher bleiben alle Definitionen erhalten. Intern sieht es natürlich etwas anders aus, daher kein reload zur Laufzeit machen.

Zitat
2.)Wie verhält sich das in Kombination mit do always, wenn ein DOIF seinen Zustand quasi niemals ändert (sondern einfach immer nur auf das Eintreten eines bestimmten Ereignisses reagiert, ohne dass die Kondition unwahr werden könnte)? Also so etwas (nur als Beispiel):
define temp_logger DOIF ([sensor:temperatur])(trigger global Temperatur [sensor:temperatur])
attr temp_logger do always
attr temp_logger cmdpause 600


Würde bei dieser Definition die Aktion dauerhaft alle 10 Minuten (frühestens) ausgeführt?

ja, cmdpause ist mit do always kombinierbar. Ausgewertet wird der Zeitpunkt von "state" des Moduls.

Gruß

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

holzwurm83

Hallo Damian,

ich wolle diesen Teil für meine Jalousien gerne verwenden.

Zitat von: Damian am 22 Dezember 2014, 19:11:23

Rollladen hoch, wenn innerhalb einer Zeitspanne von 2 Sekunden ein Taster betätigt wird:

define di_fensterhoch DOIF ([Taster])(set Rollladen hoch)
attr di_fensterhoch waitsame 2
attr di_fensterhoch do always


Allerdings soll das nicht über einen Taster sonder über die Fenterkontakte gesteuert werden.

so funktioniert das leider nicht, da wenn ich das Fenster Kippen möchte die Jalousie hoch fährt.

define G_WZ_Fenster_OST_L DOIF ([WZ_Fenster_OST_L])(set WZ_J_OST auf)
attr G_WZ_Fenster_OST_L do always
attr G_WZ_Fenster_OST_L room Wohnzimmer
attr G_WZ_Fenster_OST_L waitsame 2


Die Fensterkontake sind wie folgt definiert:
define WZ_Fenster_OST_L DOIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "on" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "off") DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "off" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "on") DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "on" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "on")
attr WZ_Fenster_OST_L alias OST L
attr WZ_Fenster_OST_L cmdState zu|gekippt|offen
attr WZ_Fenster_OST_L devStateIcon zu:fts_window_1w offen:fts_window_1w_open@red gekippt:fts_window_1w_tilt@red
attr WZ_Fenster_OST_L group Fenster
attr WZ_Fenster_OST_L icon fts_door_right
attr WZ_Fenster_OST_L room Wohnzimmer


im Grunde soll die Jalousie hochfahren wenn das Fenster zwei mal offen meldet innerhalb der Zeit.

Ich habe das damit versucht, aber das funktioniert damit leider auch nicht.

define G_WZ_Fenster_OST_L DOIF ([WZ_Fenster_OST_L] eq "offen")(set WZ_J_OST auf)
attr G_WZ_Fenster_OST_L do always
attr G_WZ_Fenster_OST_L room Wohnzimmer
attr G_WZ_Fenster_OST_L waitsame 2
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 01 April 2015, 20:29:53
Hallo Damian,

ich wolle diesen Teil für meine Jalousien gerne verwenden.

Allerdings soll das nicht über einen Taster sonder über die Fenterkontakte gesteuert werden.

so funktioniert das leider nicht, da wenn ich das Fenster Kippen möchte die Jalousie hoch fährt.

define G_WZ_Fenster_OST_L DOIF ([WZ_Fenster_OST_L])(set WZ_J_OST auf)
attr G_WZ_Fenster_OST_L do always
attr G_WZ_Fenster_OST_L room Wohnzimmer
attr G_WZ_Fenster_OST_L waitsame 2


Die Fensterkontake sind wie folgt definiert:
define WZ_Fenster_OST_L DOIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "on" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "off") DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "off" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "on") DOELSEIF ([HMW_Sen_SC_12_DR_JEQ0545703_07:SENSOR] eq "on" and [HMW_Sen_SC_12_DR_JEQ0545703_08:SENSOR] eq "on")
attr WZ_Fenster_OST_L alias OST L
attr WZ_Fenster_OST_L cmdState zu|gekippt|offen
attr WZ_Fenster_OST_L devStateIcon zu:fts_window_1w offen:fts_window_1w_open@red gekippt:fts_window_1w_tilt@red
attr WZ_Fenster_OST_L group Fenster
attr WZ_Fenster_OST_L icon fts_door_right
attr WZ_Fenster_OST_L room Wohnzimmer


im Grunde soll die Jalousie hochfahren wenn das Fenster zwei mal offen meldet innerhalb der Zeit.

Ich habe das damit versucht, aber das funktioniert damit leider auch nicht.

define G_WZ_Fenster_OST_L DOIF ([WZ_Fenster_OST_L] eq "offen")(set WZ_J_OST auf)
attr G_WZ_Fenster_OST_L do always
attr G_WZ_Fenster_OST_L room Wohnzimmer
attr G_WZ_Fenster_OST_L waitsame 2


Dann poste mal die Ausgabe von Event-Monitor von diesem Vorgang.

Gruß

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

holzwurm83

Hallo Damian,

hier der Event-Monitor:

Events:
2015-04-01 21:29:26 DOIF G_WZ_Fenster_OST_L waitsame: cmd_1
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L cmd_nr: 3
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L offen
2015-04-01 21:29:26 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: on
2015-04-01 21:29:26 HM485 HMW_LC_Sw2_DR_LEQ0116818_01 PRESS_SHORT: PRESS_SHORT 4
2015-04-01 21:29:27 HM485 HMW_LC_Sw2_DR_LEQ0116818_02 PRESS_SHORT: PRESS_SHORT 26
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_nr: 2
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_event: WZ_Fenster_OST_L
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_2
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L cmd_nr: 1
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L zu
2015-04-01 21:29:27 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: off
2015-04-01 21:29:28 DOIF G_WZ_Fenster_OST_L waitsame: cmd_1
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L cmd_nr: 3
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L offen
2015-04-01 21:29:28 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: on
2015-04-01 21:29:28 HM485 HMW_LC_Sw2_DR_LEQ0116818_03 STATE: on
2015-04-01 21:29:28 HM485 HMW_LC_Sw2_DR_LEQ0116818_04 STATE: on
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_nr: 2
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_event: WZ_Fenster_OST_L
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_2
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L cmd_nr: 1
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L zu
2015-04-01 21:29:29 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: off

- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 01 April 2015, 21:32:32
Hallo Damian,

hier der Event-Monitor:

Events:
2015-04-01 21:29:26 DOIF G_WZ_Fenster_OST_L waitsame: cmd_1
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L cmd_nr: 3
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:26 DOIF WZ_Fenster_OST_L offen
2015-04-01 21:29:26 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: on
2015-04-01 21:29:26 HM485 HMW_LC_Sw2_DR_LEQ0116818_01 PRESS_SHORT: PRESS_SHORT 4
2015-04-01 21:29:27 HM485 HMW_LC_Sw2_DR_LEQ0116818_02 PRESS_SHORT: PRESS_SHORT 26
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_nr: 2
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_event: WZ_Fenster_OST_L
2015-04-01 21:29:27 DOIF G_WZ_Fenster_OST_L cmd_2
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L cmd_nr: 1
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:27 DOIF WZ_Fenster_OST_L zu
2015-04-01 21:29:27 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: off
2015-04-01 21:29:28 DOIF G_WZ_Fenster_OST_L waitsame: cmd_1
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L cmd_nr: 3
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:28 DOIF WZ_Fenster_OST_L offen
2015-04-01 21:29:28 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: on
2015-04-01 21:29:28 HM485 HMW_LC_Sw2_DR_LEQ0116818_03 STATE: on
2015-04-01 21:29:28 HM485 HMW_LC_Sw2_DR_LEQ0116818_04 STATE: on
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_nr: 2
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_event: WZ_Fenster_OST_L
2015-04-01 21:29:29 DOIF G_WZ_Fenster_OST_L cmd_2
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L cmd_nr: 1
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L cmd_event: HMW_Sen_SC_12_DR_JEQ0545703_08
2015-04-01 21:29:29 DOIF WZ_Fenster_OST_L zu
2015-04-01 21:29:29 HM485 HMW_Sen_SC_12_DR_JEQ0545703_08 SENSOR: off


Das Problem ist, dass WZ_Fenster_OST_L  den Zustand zwischendurch wechselt, es kommt eben innerhalb der zwei Sekunden nicht der selbe Befehl. Ich werde im DOIF per Attribut evtl. einstellbar einbauen, dass Definitionen nur mit einem Zustand, wie hier:

define G_WZ_Fenster_OST_L DOIF ([WZ_Fenster_OST_L] eq "offen")(set WZ_J_OST auf)

bei Nichterfüllung nicht auf cmd_2 wechseln. Dann würde die Konstruktion auch funktionieren.

Gruß

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

holzwurm83

ah, sehr schön! Danke! Ich dachte schon ich kapiere das wieder nicht! ;D
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

holzwurm83

Hallo Damian,

ich habe heute ein Fhemupdate gemacht. Die Konstellation geht leider noch nicht. Hast du das schon passen können?

Gruß
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

Damian

Zitat von: holzwurm83 am 03 April 2015, 11:59:47
Hallo Damian,

ich habe heute ein Fhemupdate gemacht. Die Konstellation geht leider noch nicht. Hast du das schon passen können?

Gruß

Ich habe noch nach einer geschickten Anpassung gesucht, daher habe ich noch nichts geändert.

Ich denke, ich werde den imaginären cmd_2 Zustand bei do always einfach nicht setzen, wenn es keinen DOELSE-Fall gibt.

Wahrscheinlich gibt´s dann morgen ein Update inkl. neuer Zeit-Features von hier: http://forum.fhem.de/index.php/topic,35638.msg279620.html#msg279620

Gruß

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

Damian

So, jetzt wird cmd_2 nicht mehr bei do always, do resetwait, und repeatsame gesetzt, wenn es keinen DOELSE-Fall gibt. Ich habe die Änderung gerade hier http://forum.fhem.de/index.php/topic,35638.msg279620.html#msg279620 hochgeladen. Du kannst die neue Version testen und Bescheid geben.

Gruß

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

holzwurm83

Super, danke! Jetzt funktioniert das!  ;D
- Fhem auf einem MacMini Server
- CUL; HMLAN; CUNO2 für FS20; HM-Wired RS485 LAN Gateway
- HMW_Sen_SC_12_FM; HMW_LC_Sw2_DR; HMW_LC_Bl1_DR; HMW_IO_12_Sw7; HMW_IO_12_Sw14_DR; HMW_IO_12_FM; HBW_1W_T10
- HM-TC-IT-WM-W-EU; HM-CC-RT-DN

dominik

Hallo Damian,

kann es sein, dass resetwait nicht den gesamten wait Timer zurück setzt sondern nur den wait timer vom letzten Command? Ich lasse mich alle 3h an ein Ereignis erinnern wenn ich in der Zwischenzeit dieses nicht nochmals ausgelöst habe. Danach kommen weitere Erinnerungen jede halbe Stunde bis 4,5h nach dem Ereignis.

DOIF
([ereignis] eq "on" and [?Residents:presence] eq "present")
((set BOSE_84EB18B89 speak "...3 Stunden..." 45))
((set BOSE_84EB18B89 speak "...3,5 Stunden..." 45))
((set BOSE_84EB18B89 speak "...4 Stunden..." 45))
((set BOSE_84EB18B89 speak "...4,5 Stunden..." 45))


attr DI_ereignis.next do resetwait
attr DI_ereignis.next wait 10800,1800,1800,1800

3 Stunden nach dem Ereignis kommt bei mir eine Sprachausgabe am Bose Lautsprecher. Nach 3,5 Stunden kommt eine Ausgabe mit 3,5h usw. bis 4,5h. Tritt das Ereignis zwischen 3h Ansage und 3,5h Ansage ein, so wird nur der 1800 Timer zurück gesetzt, nicht aber der gesamte Timer um dann wieder 3h (10800) zu warten.

Ist das so gewollt? Wenn ja, gibt es eine Möglichkeit den gesamten Timer zurück zu setzen?

Danke & Gruß,
Dominik
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Damian

Zitat von: dominik am 07 Januar 2017, 16:26:21
Hallo Damian,

kann es sein, dass resetwait nicht den gesamten wait Timer zurück setzt sondern nur den wait timer vom letzten Command? Ich lasse mich alle 3h an ein Ereignis erinnern wenn ich in der Zwischenzeit dieses nicht nochmals ausgelöst habe. Danach kommen weitere Erinnerungen jede halbe Stunde bis 4,5h nach dem Ereignis.

DOIF
([ereignis] eq "on" and [?Residents:presence] eq "present")
((set BOSE_84EB18B89 speak "...3 Stunden..." 45))
((set BOSE_84EB18B89 speak "...3,5 Stunden..." 45))
((set BOSE_84EB18B89 speak "...4 Stunden..." 45))
((set BOSE_84EB18B89 speak "...4,5 Stunden..." 45))


attr DI_ereignis.next do resetwait
attr DI_ereignis.next wait 10800,1800,1800,1800

3 Stunden nach dem Ereignis kommt bei mir eine Sprachausgabe am Bose Lautsprecher. Nach 3,5 Stunden kommt eine Ausgabe mit 3,5h usw. bis 4,5h. Tritt das Ereignis zwischen 3h Ansage und 3,5h Ansage ein, so wird nur der 1800 Timer zurück gesetzt, nicht aber der gesamte Timer um dann wieder 3h (10800) zu warten.

Ist das so gewollt? Wenn ja, gibt es eine Möglichkeit den gesamten Timer zurück zu setzen?

Danke & Gruß,
Dominik

Es gibt nur einen Timer, nämlich den aktuellen, der gerade läuft und genau dieser wird zurückgesetzt. Wenn deine komplette Sequenz von vorn anfangen soll, dann muss die Bedingung zuerst unwahr werden, wenn sie dann wieder wahr wird, dann fängt er wieder von vorne an.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

dominik

Ok, verstehe. Aber dann agiert "do resetwait" nicht gleich wie "do always" oder? Weil bei do always würde er ja immer von vorne anfangen meines Wissens. Gibt es eine Möglichkeit das zu kombinieren?
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik