FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: justme1968 am 28 März 2016, 13:53:48

Titel: hinweis zu NOTIFYDEV
Beitrag von: justme1968 am 28 März 2016, 13:53:48
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Dr. Boris Neubert am 28 März 2016, 13:59:07
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: justme1968 am 28 März 2016, 14:03:05
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: justme1968 am 28 März 2016, 14:32:41
@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?
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Dr. Boris Neubert am 28 März 2016, 15:51:42
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: justme1968 am 28 März 2016, 15:56:49
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Dr. Boris Neubert am 28 März 2016, 16:02:44
Danke für den Hinweis.

Habe die betreffenden Zeilen aus _Initialize nach _Define verschoben (Calendar, Weather).

Viele Grüße
Boris
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: justme1968 am 28 März 2016, 16:04:23
ich glaube OWServer und OWDevice waren auch dabei.

gruss
  andre
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Dr. Boris Neubert am 28 März 2016, 16:08:32
Upsi, hätte nicht nur greppen sondern auch zurück scrollen sollen...  >:(

Ebenfalls repariert. Danke für den Hinweis.
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Markus Bloch am 28 März 2016, 18:13:25
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: rudolfkoenig am 29 März 2016, 10:42:24
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.
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Dr. Boris Neubert am 29 März 2016, 10:44:19
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
Titel: Antw:hinweis zu NOTIFYDEV
Beitrag von: Markus Bloch am 29 März 2016, 11:15:17
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