Developer - NotifyFn

Begonnen von Matthias, 22 Juli 2013, 19:34:51

Vorheriges Thema - Nächstes Thema

Matthias

<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). 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

rudolfkoenig

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
Das Event-generierende Modul muss das zwar unterstuetzen (d.h. die readingsUpdate Funktionen verwenden), die meisten Module tun das aber.

Matthias

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

rudolfkoenig

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.

Matthias

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

rudolfkoenig

>  Bleibt die Frage wie man an den alten Zustand kommt

Schoen selbst abspeichern in einem privaten Datenstruktur :)

FHEMWEB/longpoll filtert nach Raum.