Hallo Zusammen
Der status_di DOIF führt wie erwartet seinen Refresh alle 5 Sekunden durch.
Der alarm_di sollte alle 15 Sekunden ein Reading aktualisieren, was er machmal aber nicht immer rechtzeitig tut.
Ist der wait-Befehl so ungenau ?
Kann man beide DOIF's in einen mergen ?
Gruss Peter
Demo-Beispiel: Aktualisierung (alle 5s) mit Alarmfunktion (alle 15s)
define demo dummy
attr demo eventMap on:on off:off
attr demo room demo
define status_di DOIF ([demo] eq "on")\
(setreading demo action on)\
DOELSEIF ([demo] eq "on" and [+5])\
(setreading demo action refesh)\
DOELSEIF ([demo] eq "off")\
(setreading demo action off)
attr status_di room demo
attr status_di do always
define alarm_di DOIF ([demo] eq "on")\
(setreading demo alarm on)\
DOELSE\
(setreading demo alarm off)
attr alarm_di do always
attr alarm_di room demo
attr alarm_di wait 15
1. Wait greift nicht bei Timern
2. auch mit Attribut waitWithTimer würde wait nicht unterbrochen werden, solange es läuft
3. Triggerung alle 5 Sekunden halte ich nicht für sinnvoll, solche Sachen sollte man ereignisgesteuert lösen
Zitat von: Damian am 22 Januar 2017, 22:14:55
1. Wait greift nicht bei Timern
2. auch mit Attribut waitWithTimer würde wait nicht unterbrochen werden, solange es läuft
3. Triggerung alle 5 Sekunden halte ich nicht für sinnvoll, solche Sachen sollte man ereignisgesteuert lösen
Hallo Damian. Danke für die Info.
Der 5/15 Sekundentakt ist nur zum Testen gedacht.
Wie realisiere ich am Besten in DOIF eine verzögerte, wiederkehrende Alarmierung, wenn ein Ereignis eingetroffen ist.
Bisher hatte ich eine notify getriggert, welche ein at beinhaltet hatte. Wenn das Ereignis nicht mehr vorlag, wurde der at gelöscht ;-)
Gruss Peter
https://fhem.de/commandref_DE.html#DOIF_repeatcmd
Hallo Damian
Ich habe mein Demoszenario nun wie folgt geändert.
Gruss Peter
define demo dummy
attr demo eventMap on:on off:off
attr demo room demo
define status_di DOIF ([demo] eq "on")\
(setreading demo action on)\
DOELSEIF ([demo] eq "on" and [+5])\
(setreading demo action refesh)\
DOELSEIF ([demo] eq "off")\
(setreading demo action off)
attr status_di do always
attr status_di room demo
define alarm_di DOIF ([demo] eq "on")\
(setreading demo alarm on)\
DOELSE\
(setreading demo alarm off)
attr alarm_di repeatcmd 60
attr alarm_di room demo
attr alarm_di wait 60