Hi!
Leider bekomme ich ein eigentlich einfaches DOIF nicht hin...
Kann mir bitte jemand helfen wo mein Problem ist? Es gibt nur 2 cmd auswahlmöglichkeiten und die 30sek wait funktionieren auch irgendwie nicht... Wenn Tor open ist bekomme ich nur die message tor geöffnet aber kein Bild...... wenn es wieder zu ist dann die geschlossen message...
Führe ich im DOIF cmd 1 set manuell aus dann klappt alles reibungslos...
Hier die Def:
([SENSOR_1_Tor:"open"] and [?Haus] eq "present")
(get CAMHof image)
(set Telegram message TOR geöffnet!!!)
(set Telegram sendPhoto /opt/fhem/www/snapshots/CAMHof_snapshot.jpg)
DOELSEIF
([SENSOR_1_Tor:"closed"] and [?Haus] eq "present") (set Telegram message TOR geschlossen)
List:
Internals:
DEF ([SENSOR_1_Tor:"open"] and [?Haus] eq "present")
(get CAMHof image)
(set Telegram message TOR geöffnet!!!)
(set Telegram sendPhoto /opt/fhem/www/snapshots/CAMHof_snapshot.jpg)
DOELSEIF
([SENSOR_1_Tor:"closed"] and [?Haus] eq "present") (set Telegram message TOR geschlossen)
MODEL FHEM
NAME DOIFTor
NR 43
NTFY_ORDER 50-DOIFTor
STATE cmd_2
TYPE DOIF
READINGS:
2018-04-07 21:03:21 cmd 2
2018-04-07 21:03:21 cmd_event set_cmd_2
2018-04-07 21:03:21 cmd_nr 2
2018-04-07 21:01:29 mode enabled
2018-04-07 21:03:21 state cmd_2
Regex:
condition:
0 EventDoIf('SENSOR_1_Tor',$hash,'open',1) and InternalDoIf($hash,'Haus','STATE') eq "present"
1 EventDoIf('SENSOR_1_Tor',$hash,'closed',1) and InternalDoIf($hash,'Haus','STATE') eq "present"
devices:
0 SENSOR_1_Tor
1 SENSOR_1_Tor
all SENSOR_1_Tor
do:
0:
0 get CAMHof image
1 set Telegram message TOR geöffnet!!!
2 set Telegram sendPhoto /opt/fhem/www/snapshots/CAMHof_snapshot.jpg
1:
0 set Telegram message TOR geschlossen
2:
helper:
DOIF_Readings_events
DOIF_eventas
globalinit 1
last_timer 0
sleeptimer -1
triggerDev
internals:
0 Haus:STATE
1 Haus:STATE
all Haus:STATE
itimer:
readings:
trigger:
all SENSOR_1_Tor
uiState:
uiTable:
Attributes:
devStateIcon cmd_2:fts_window_1w@green cmd_1:fts_window_1w_open@red
room 2 DOIF
wait 0,0,30:0
Hmm... hab den wait timer raus genommen... nun gehts... komisch...
Hatte den Timer vor gahebt auf eine Sekunde zu setzen um Fhem und ddem System zeit zu geben die Bilder zu speichern und dann zu senden... aber das klappt irgendwie nicht offenbar :-\
Du hast nur 2 cmd, den ersten aber unterteilt. Diese einzelnen Steps kannst du nicht einzeln aufrufen.
Wenn dein SENSOR_1_Tor öfter Meldungen schickt, kann es sein, dass dein Wait unterwandert wird.
Mein Vorschlag: stell auf
[SENSOR_1_Tor] eq "open"
um und ergänze
attr DOIFTor checkReadingEvent 1
Dann wieder melden ;).
okay, hab ich gemacht... und versucht es nachzuvollziehen.
Fakt ist: sobald cmd_2 (closed) vor dem versenden des Bildes kommt wird das Bild nicht mehr gesendet... Hmmm... irgendwie ist da der Wurm drin...
ZitatFakt ist: sobald cmd_2 (closed) vor dem versenden des Bildes kommt wird das Bild nicht mehr gesendet...
Das ist korrekt.
Zitat von: misux am 10 April 2018, 17:59:42irgendwie ist da der Wurm drin...
Nein, das Verhalten ist für ein DOIF korrekt. Wenn dein
closed immer in rund 30 Sek. folgt, setzt doch einfach die Zeit runter.
Oder prüf, ob die 30 Sekunden (state eq "cmd_1") um sind, ansonsten sendest du das Bild sofort.
Oder du erstellst ein at, das wird immer ausgeführt, egal was DOIF macht.
Nebenbei kannst du cmd, welche zur gleichen Zeit (wait 0) ausgeführt werden, in einer Klammer zusammenfassen. Senkt die Systemlast etwas.