Nachdem ich in Wiki und Forum nichts dazu finde versuche ichs mal im Forum...
Ich versuche die Anzahl der gefeuerten Events mit event-on-change-reading und :threshold zu limitieren. Mein Device (S7_ARead) hat ein Reading mit dem Namen state.
Das Attribut habe ich folgendermaßen definiert:
event-on-change-reading state:100
Sobald ich die :100 anhänge bekomme ich kein Event mehr - Obwohl sich das Reading um mehr als 100 geändert hat.
Lege ich ein user Reading an und definiere :100 als threshold für dieses Reading funktioniert alles wie erwartet
event-on-change-reading state,user_sec:100
userReadings user_sec { ReadingsVal($name,"state",0)}
Auszug aus Eventlog bei der funktionierenden Variante
2017-11-24 10:01:43 S7_ARead seconds 23470
2017-11-24 10:01:43 S7_ARead seconds user_sec: 23470
2017-11-24 10:01:53 S7_ARead seconds 23490
2017-11-24 10:02:03 S7_ARead seconds 23510
2017-11-24 10:02:13 S7_ARead seconds 23530
2017-11-24 10:02:24 S7_ARead seconds 23550
2017-11-24 10:02:34 S7_ARead seconds 23570
2017-11-24 10:02:34 S7_ARead seconds user_sec: 23570
2017-11-24 10:02:44 S7_ARead seconds 23590
2017-11-24 10:02:54 S7_ARead seconds 23610
2017-11-24 10:03:04 S7_ARead seconds 23630
2017-11-24 10:03:14 S7_ARead seconds 23650
2017-11-24 10:03:24 S7_ARead seconds 23670
2017-11-24 10:03:24 S7_ARead seconds user_sec: 23670
Ok. Es scheint wohl so zu sein, dass ein :threshold auf das Reading state nicht funktioniert, bzw sogar dazu führt, dass überhaupt kein Event mehr durchkommt. Das Reading state hat ja eine mir noch nicht ganz einleuchtende Sonderstellung innerhalb von FHEM.
Für mich stellt sich jetzt allerdings die Frage: Ist das ein Bug oder ein Feature?
Falls es ein Feature / Systemverhalten ist sollte man das im Wiki https://wiki.fhem.de/wiki/Event-on-change-reading (https://wiki.fhem.de/wiki/Event-on-change-reading) auf jeden Fall dokumentieren. Als Anfänger verzweifelt man sonst an dem Feature :-)
Vollständige Device Definition
Internals:
ADDRESS 86
AREA db
CPU015_MSGCNT 623
CPU015_TIME 2017-11-24 09:43:18
DATATYPE u16
DB 5017
DEF db 5017 86 u16
IODev CPU015
LASTInputDev CPU015
LENGTH 2
MSGCNT 623
NAME seconds
NR 72
STATE 21258
TYPE S7_ARead
READINGS:
2017-11-24 09:43:18 state 21258
Attributes:
IODev CPU015
event-on-change-reading state:10
Ich habe das gerade mal mit einem Dummy ohne user readings ausprobiert und bei mir funktioniert ein threshold auf state ohne probleme.
Internals:
NAME testdummy
NR 942
STATE 2
TYPE dummy
Helper:
DBLOG:
state:
logdb:
TIME 1511617529.60442
VALUE 2
READINGS:
2017-10-02 09:30:40 reading1 tttt
2017-11-25 14:45:29 state 2
Attributes:
event-on-change-reading state:5
readingList reading1 reading2
setList reading1:textField reading2:1,2,3,4
Wenn ich den wert auf 6 ändere kommt kein event bei 7 kommt ein event auch wenn ich das in mehreren Schritten mache
Oooook :-\
Danke für die Antwort.
Jetzt stellt sich für mich jedoch die Frage: Was mache ich falsc, bzw was kann ich tun um rauszufinden was schief läuft?
TYPE S7_ARead
beim modul entwickler nachfragen. siehe maintainer.txt => "44_S7_ARead.pm charlie71 Sonstige Systeme"
Das Problem ist mit dem nächsten Update gelöst.
Danke charlie71.