FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Risiko am 10 April 2015, 20:59:24

Titel: zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: Risiko am 10 April 2015, 20:59:24
Hallo Entwickler,

ich würde gern die Registrierung von Submodulen (üblicherweise mittels AssignIoPort) im Hauptmodul mit bekommen.
Also ich möchte im Hauptmodul sofort wissen welche Submodule mit welcher Definition registriert sind.

Gibt es dafür bereits eine Möglichkeit oder wäre dafür eine Erweiterung in beispielsweise in AssignIoPort notwendig?

Es wäre gut, wenn man nicht immer wieder neu "kontrollieren" muss - also nicht z.B. immer wieder das ".clientArray" durchgehen muss.

Danke.

Risiko

Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: rudolfkoenig am 11 April 2015, 08:45:45
Do koenntest dich an "global DEFINED" haengen, allerdings bin ich der Ansicht, dass man sowas nicht wissen soll, da geht naemlich die Trennung floeten.
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: Risiko am 11 April 2015, 19:24:34
@Rudi.
Danke für den Tipp.
Du meinst sicherlich innerhalb von X_Notify.

Das Problem ist, dass ich im Hauptmodul sehr viele Messages rein bekomme, die dann im Dispatch keinen Abnehmer finden.
Aktuell habe ich im Hauptmodul dafür eine IgnoreList, die aber sehr lang werden kann.
Idee war jetzt, nur geparste Meldungen an Dispatch zu geben, wenn auch ein Abnehmer da ist.

Aber du hast recht, die strikte Trennung geht dabei verloren.

Risiko.
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: rudolfkoenig am 12 April 2015, 12:30:43
ZitatDas Problem ist, dass ich im Hauptmodul sehr viele Messages rein bekomme, die dann im Dispatch keinen Abnehmer finden.

Eine moegliche Loesung ist alle benoetigten Abnehmer anzulegen, und diese mit ignore zum Stillschweigen zu bringen.
Alternativ in deinem Modul manuell definieren (via Attribut oder define Parameter), an welche Daten man interessiert ist.
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: Risiko am 12 April 2015, 13:08:26
Danke für die Hinweise\Ideen.

Zitat von: rudolfkoenig am 12 April 2015, 12:30:43
Eine moegliche Loesung ist alle benoetigten Abnehmer anzulegen, und diese mit ignore zum Stillschweigen zu bringen.
Das geht leider nicht. Es sind einfach zu viele Mögliche.

Zitat von: rudolfkoenig am 12 April 2015, 12:30:43
Alternativ in deinem Modul manuell definieren (via Attribut oder define Parameter), an welche Daten man interessiert ist.
Das sind implizit eben genau die Daten, für die Submodule definiert sind. Manuell --> dann müsste der User an zwei Stellen das angeben.
Ich rede übrigens über diese Module: http://forum.fhem.de/index.php/topic,34632.0.html

Ich denke, ich werde es mal über das global DEFINE probieren.  Entsprechend Architektur ist es ja zulässig, wenn auch wegen der Trennung evtl. nicht die optimalste Variante.

Danke.

Risiko.
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: Risiko am 29 April 2015, 17:17:04
Hallo Rudi,
Zitat von: rudolfkoenig am 11 April 2015, 08:45:45
Do koenntest dich an "global DEFINED" haengen ....

dass geht leider nicht. Der Trigger wird erst nach dem fhem initialisiert ist aufgerufen.

DoTrigger("global", "DEFINED $name", 1) if($init_done);

Somit bekomme ich im Modul nur Notify für global DEFINED im laufenden Betrieb. Für alle über cfg-Datei definierten Devices eben nicht.

Risiko. 
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: justme1968 am 29 April 2015, 21:07:30
du hängst dich an global:INITIALIZED und gehst ein mal alle devices durch und über global:DEFINED erfährst du was zur laufzeit noch dazu kommt.

gruss
  andre
Titel: Antw:zweistufigen Module Registrierung (AssignIoPort)
Beitrag von: Risiko am 01 Mai 2015, 10:12:08
Danke Andre.
Hätte man auch allein drauf kommen können. ::)

Risiko