FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Jamo am 03 Oktober 2019, 15:44:50

Titel: dummy - event trotz 'attr disable 1’
Beitrag von: Jamo am 03 Oktober 2019, 15:44:50
Hi,
ich habe folgenden dummy Schalter. Wenn ich das "attr disable 1" setze, und 'on' oder 'off' schalte, ändert sich zwar der dummy state nicht mehr, aber es wird trotzdem ein Event generiert (e.g. im "Event monitor"), und mein nachfolgendes notify reagiert. Ich kann das nachfolgende notify nicht auf disabled setzten, weil das Suchmuster des nachfolgenden Notify mehrere Schalter enthält.

Ich hätte erwartet, dass, wenn 'attr disable = 1' gesetzt ist, kein Event mehr generiert wird. In der Comandref oder Wiki ist das nicht beschrieben, soll das so sein oder ist das ein Fehler?

defmod test1 dummy
attr test1 disable 1
attr test1 event-on-change-reading state
attr test1 room Test
attr test1 webCmd on:off
Titel: Antw:dummy - event trotz 'attr disable'
Beitrag von: rudolfkoenig am 03 Oktober 2019, 16:46:17
Das ist zwar keine Absicht, aber es zu fixen wuerde einen groesseren Umbau mit Nebenwirkungen nach sich ziehen.
Mir faellt nur ein cmdalias als Workaround ein.
Titel: Antw:dummy - event trotz 'attr disable'
Beitrag von: Jamo am 03 Oktober 2019, 17:58:00
OK, danke, dann weiss ich Bescheid, und werde mir dann einen Workaround bauen.
Titel: Antw:dummy - event trotz 'attr disable'
Beitrag von: frank am 03 Oktober 2019, 18:13:32
setze doch zb
attr test1 event-on-change-reading blabla
damit sollten keine events mehr kommen.
Titel: Antw:dummy - event trotz 'attr disable'
Beitrag von: Jamo am 03 Oktober 2019, 18:44:02
'blabla' funktioniert auch nicht, gerade probiert ...
Titel: Antw:dummy - event trotz 'attr disable 1’
Beitrag von: Damian am 03 Oktober 2019, 19:14:14
Du könntest einen Event-Handler nehmen, der den Status auswertet, statt das Event.
Titel: Antw:dummy - event trotz 'attr disable 1’
Beitrag von: Jamo am 03 Oktober 2019, 22:59:46
Hallo Damian,
falls Du sowas meinst:
defmod testfhem1_n notify test1:.* {
my $state = ReadingsVal ("test1","state","nA");
if ($state eq "on") {...}
}

das hier funktioniert für den Fall, das der gegenwärtige state 'off' ist (der sich durch das disable ja dann auch nicht mehr ändert), ich ein 'on' auslöse, und und ich dann prüfe, ob der Status 'on' ist. Also für den Fall das der Schalter aus ist.
Aber für den Fall das der state schon 'on' ist, wird das Event immer noch durchgelassen.

Wahrscheinlich meinst Du aber folgendes: Bei jedem Event den aktuellen state separat abspeichern (zum beispiel in einem seperaten Reading), und schauen ob dieses Reading und der Event unterschiedlich sind. Ja, das funktioniert wenn man ein event-on-change-reading state gesetzt hat ....
Danke für die Idee!
Titel: Antw:dummy - event trotz 'attr disable 1’
Beitrag von: Damian am 03 Oktober 2019, 23:10:51
Im Prinzip das Gleiche nur etwas kürzer und ohne mehrfache Ausführung (erst wieder wenn test1 zwischendurch off war):

defmod testfhem1 DOIF ([test1:state] eq "on") (set ...)
Titel: Antw:dummy - event trotz 'attr disable 1’
Beitrag von: DeeSPe am 07 Oktober 2019, 13:40:19
Eine weitere Lösung wäre z.B. den disabled Status im notify abzufragen:
defmod testfhem1_n notify test1:.* {
return if (IsDisabled($NAME));
if ($state eq "on") {...}
}


Gruß
Dan