FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Matthias am 22 Juli 2013, 19:34:51

Titel: Developer - NotifyFn
Beitrag von: Matthias am 22 Juli 2013, 19:34:51
<Offtopic>Dieses Thema gehört eigentlich in die Entwicklungs-Ecke. Dazu habe ich leider keinen Zugang. Vielleicht kann einer der Moderatoren das Thema ja verschieben</Offtopic>

Tag zusammen,

ich habe ein kleines Modul zum Senden von Updates per GCM gebastelt (http://andfhem.klass.li/installation/99_gcmsend.pm (//andfhem.klass.li/installation/99_gcmsend.pm)). Das Modul hängt sich per notifyFn in FHEM ein und sendet alle Aktualisierungen via GCM an beispielsweise andFHEM, wo die Aktualisierungen anschließend angezeigt werden können.

Allerdings würde ich gerne nicht alle Aktualisierungen senden, sondern nur tatsächliche _Änderungen_. Beispiel: Wenn ein FS20-Gerät bereits ausgeschaltet ist, und ein Weiteres "set <deviceName> off" erfolgt, dann ist das eigentlich keine Aktualisierung - der Zustand war ja schon aus. Über die notifyFn bekomme ich allerdings immer alle Aktualisierungen. Nun frage ich mich ob es irgendwo noch eine Möglichkeit gibt diese Aktualisierungen abzufangen und tatsächlich nur _Änderungen_ zu verwerten.

Vielen Dank,
Matthias
Titel: Aw: Developer - NotifyFn
Beitrag von: rudolfkoenig am 22 Juli 2013, 20:01:09
Auf notifyFn Ebene gibts das nicht, das darf der Programmierer selbst bauen.

Als Benutzer kann man event-on-change-reading & co verwenden, siehe http://fhem.de/commandref.html#readingFnAttributes (//fhem.de/commandref.html#readingFnAttributes)
Das Event-generierende Modul muss das zwar unterstuetzen (d.h. die readingsUpdate Funktionen verwenden), die meisten Module tun das aber.
Titel: Aw: Developer - NotifyFn
Beitrag von: Matthias am 22 Juli 2013, 20:03:28
Hi,

danke für die Info! Gibt es das denn irgendwo bereits in einem Gerät? Die Aktualisierungen können States, Attribute usw. umfassen. Sonst muss man händisch alle Möglichkeiten überprüfen ... es soll ja schließlich generisch sein ...

Viele Grüße,
Matthias
Titel: Aw: Developer - NotifyFn
Beitrag von: rudolfkoenig am 22 Juli 2013, 20:19:40
Verstehe Dich nicht wirklich, die Antwort ist vmtl. trotzdem nein, so ein Geraet gibt es nicht bzw. ja, du musst etliches Programmieren. Ich wuerde mir nicht die Muehe machen :), bzw. nach was anderes filtern.

Btw. mir ist nicht bewusst, dass man per notifyFn Attributs-Aenderungen mitkriegt, vlt. hast Du aber auch Readings gemeint.
Titel: Aw: Developer - NotifyFn
Beitrag von: Matthias am 22 Juli 2013, 20:24:16
Hi,

stimmt es sind nur Readings. Ich habe gerade noch versucht den aktuellen Reading-Zustand (vor dem Notify) mit ReadingsVal($name, $key, ""); auszulesen. Allerdings scheint dort immer schon der neue Zustand eingetragen zu sein. Bleibt die Frage wie man an den alten Zustand kommt - ansonsten ist ein Vergleich wieder nicht möglich ...

Sorry wenn ich nerve :-)

Viele Grüße,
Matthias
Titel: Aw: Developer - NotifyFn
Beitrag von: rudolfkoenig am 22 Juli 2013, 20:34:33
>  Bleibt die Frage wie man an den alten Zustand kommt

Schoen selbst abspeichern in einem privaten Datenstruktur :)

FHEMWEB/longpoll filtert nach Raum.