ich habe gerade zufällig gesehen das inzwischen schon eine ganze menge module NOTIFYDEV verwenden, aber nicht alle korrekt.
NOTIFYDEV ist device spezifisch (nicht modul spezifisch). es muss deshalb in der DefFn gesetzt werden und nicht in _Initialize.
da das vermutlich ein typischer copy&paste fehler ist wäre es gut das überall zu reparieren bevor es sich noch mehr verbreitet.
gruss
andre
Hallo Andre,
ich benutze das in zwei Modulen, wobei ich jeweils auf Events von global reagiere. Spricht etwas dagegen, das NOTIFYDEV im _Initialize zu haben? Da ist ja nichts Device-spezifisches dabei.
Grüße
Boris
hallo borris,
events und auch der aufruf der NotifyFn sind device/instanz spezifisch. d.h. fhem.pl greift nur auf $defs{$d}{NOTIFYDEV} zu. wenn du es in _Initialize setzt wird es aber in $modules{$m}{NOTIFYDEV} geschrieben. da bleibt es wirkungslos.
gruss
andre
@rudi: wie wäre es vor dem aufruf der DefFn den inhalt von NOTIFYDEV ein mal aus dem modul hash in den device hash zu kopieren?
Zitat von: justme1968 am 28 März 2016, 14:03:05
events und auch der aufruf der NotifyFn sind device/instanz spezifisch. d.h. fhem.pl greift nur auf $defs{$d}{NOTIFYDEV} zu. wenn du es in _Initialize setzt wird es aber in $modules{$m}{NOTIFYDEV} geschrieben. da bleibt es wirkungslos.
Meinst Du mit wirkungslos, dass es nicht als Filter wirkt und ich somit in meiner NotifyFn die Events für alle Devices bekomme? Ich bekomme jedenfalls die Events von global in meiner NotifyFn.
Grüße
Boris
ja. genau. es ist nicht im decode gesetzt und greift somit nicht als filter. deine NotifyFn wird also für alles und somit zu oft aufgerufen.
gruss
andre
Danke für den Hinweis.
Habe die betreffenden Zeilen aus _Initialize nach _Define verschoben (Calendar, Weather).
Viele Grüße
Boris
ich glaube OWServer und OWDevice waren auch dabei.
gruss
andre
Upsi, hätte nicht nur greppen sondern auch zurück scrollen sollen... >:(
Ebenfalls repariert. Danke für den Hinweis.
Bei der Gelegenheit möchte ich auch nochmal darauf hinweisen, dass man in NOTIFYDEV mittlerweile mehr als nur einen Definitionsnamen angeben kann.
Man kann mehrere Definitionen, für welche man in der NotifyFn benachrichtigt werden möchte, durch Komma getrennt angeben:
$hash->{NOTIFYDEV} = "global,Definition_A,Definition_B"
Nutze ich bspw in FB_CALLLIST.
Gruß
Markus
Zitat@rudi: wie wäre es vor dem aufruf der DefFn den inhalt von NOTIFYDEV ein mal aus dem modul hash in den device hash zu kopieren?
Wenn noch jemand "das waere gut" schreibt, dann mache ich es.
Ich selbst finde es nur im DefineFn besser.
Zitat von: rudolfkoenig am 29 März 2016, 10:42:24
Wenn noch jemand "das waere gut" schreibt, dann mache ich es.
Ich selbst finde es nur im DefineFn besser.
Ich finde es nicht gut. Ich denke, wir Entwickler sollten es von vorneherein richtig machen. Nochmals Danke für Deinen Hinweis, Andre.
Viele Grüße
Boris
Ich sehe es ähnlich wie Rudi. In der DefineFn ist NOTIFYDEV besser aufgehoben.
Eine Ersparnis zwischen InitializeFn und DefineFn hat man codezeilentechnisch eh nicht, von daher bringt es meiner Meinung nach keine Vorteile.
Gruß
Markus