hinweis zu NOTIFYDEV

Begonnen von justme1968, 28 März 2016, 13:53:48

Vorheriges Thema - Nächstes Thema

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

@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?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dr. Boris Neubert

Danke für den Hinweis.

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

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

justme1968

ich glaube OWServer und OWDevice waren auch dabei.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Dr. Boris Neubert

Upsi, hätte nicht nur greppen sondern auch zurück scrollen sollen...  >:(

Ebenfalls repariert. Danke für den Hinweis.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

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.

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Markus Bloch

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
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)