externe Funktionen - Initialisierung

Begonnen von Guest, 24 April 2011, 13:38:02

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hi,

ich habe einige Perl-Funktionen in eine 99_irgendwas.pm-Funktion
ausgegliedert. Funktioniert klasse, wird automatisch geladen, den
init-Block habe ich aus Unwissenheit, was da hinein soll, weggelassen.

Gleiches mit einer 98_irgendwas.pm-Funktion. Diese kann ich mittels
"reload" laden, dann geht alles. Vorher kennt er die von mir dort
definierten Befehle (natürlich) nicht. Wenn ich das richtig verstanden
habe, müsste ich doch in dem Init-Block irgendwie angeben können, welche
Befehle die Funktion zur Verfügung stellt, so dass er die bei Bedarf
automatisch laden kann, oder?

Gefunden habe ich die 98_dummy.pm. Definieren muss ich mir also
irgendwie sowas wie

dummy_Initialize($)
{
  my ($hash) = @_;

  $hash->{SetFn}     = "dummy_Set";
  $hash->{DefFn}     = "dummy_Define";
  $hash->{AttrList}  = "loglevel:0,1,2,3,4,5,6";
}

nur, was genau geben SetFn und DefFn an? Ist mir irgendwie unklar...

Gruß

Martin

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

> Wenn ich das richtig verstanden habe, müsste ich doch in dem Init-Block
> irgendwie angeben können, welche Befehle die Funktion zur Verfügung stellt,
> so dass er die bei Bedarf automatisch laden kann, oder?

Nicht ganz.

XXX_Initialize wird verwendet, um die korrekte Schreibweise des Modulnamens
festzustellen (falls fhem von einem  Case-Insensitive Dateisystem startet), und
natuerlich zum definieren der define/get/set Funktionen eines "richtigen"
fhem-Moduls. Fuer Hilfsfunktionen kann XXX_Initialize gerne leerbleiben, siehe
auch 99_Utils.pm.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

ok, danke für die Info. Was muss denn da rein, wenn ich z.B. im Modul
98_marte.pm die Funktionen fb_mail(rcpt,subject,test) und FHTrun() habe
und diese gerne ohne explizites Laden des Moduls nutzen möchte?

Danke & Gruß

Martin

Am 25.04.2011 09:46, schrieb Rudolf Koenig:
>> Wenn ich das richtig verstanden habe, müsste ich doch in dem Init-Block
>> irgendwie angeben können, welche Befehle die Funktion zur Verfügung stellt,
>> so dass er die bei Bedarf automatisch laden kann, oder?
>
> Nicht ganz.
>
> XXX_Initialize wird verwendet, um die korrekte Schreibweise des Modulnamens
> festzustellen (falls fhem von einem  Case-Insensitive Dateisystem startet), und
> natuerlich zum definieren der define/get/set Funktionen eines "richtigen"
> fhem-Moduls. Fuer Hilfsfunktionen kann XXX_Initialize gerne leerbleiben, siehe
> auch 99_Utils.pm.
>

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

rudolfkoenig

                                                   

On Tue, Apr 26, 2011 at 03:03:26PM +0200, marte wrote:
> ok, danke für die Info. Was muss denn da rein, wenn ich z.B. im
> Modul 98_marte.pm die Funktionen fb_mail(rcpt,subject,test) und
> FHTrun() habe und diese gerne ohne explizites Laden des Moduls
> nutzen möchte?

Die Datei in 99_marte.pm umbenennen.
Wenn ein Modul 99_xxx.pm heisst, dann wird beim startup automatisch geladen,
und alle Funktionen aus der Datei stehen damit zur Verfuegung.

Die anderen Dateien werden _nicht_ automatisch geladen, nur die Namen aller
NN_xxx.pm Dateien aus dem FHEM Verzeichnis wird beim startup eingelesen, und
beim definieren der ersten xxx wird das dazugehoerige Modul geladen.

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.

Guest

Originally posted by: <email address deleted>

Ah, ok. Dann hatte ich das falsch verstanden. Ich dachte, mittels der
Initialisierung liesse sich das umgehen. Dann bleibe ich bei der 99_er
Benennung...

Gruß

Martin

Am 26.04.2011 15:24, schrieb Rudolf Koenig:
> On Tue, Apr 26, 2011 at 03:03:26PM +0200, marte wrote:
>> ok, danke für die Info. Was muss denn da rein, wenn ich z.B. im
>> Modul 98_marte.pm die Funktionen fb_mail(rcpt,subject,test) und
>> FHTrun() habe und diese gerne ohne explizites Laden des Moduls
>> nutzen möchte?
>
> Die Datei in 99_marte.pm umbenennen.
> Wenn ein Modul 99_xxx.pm heisst, dann wird beim startup automatisch geladen,
> und alle Funktionen aus der Datei stehen damit zur Verfuegung.
>
> Die anderen Dateien werden _nicht_ automatisch geladen, nur die Namen aller
> NN_xxx.pm Dateien aus dem FHEM Verzeichnis wird beim startup eingelesen, und
> beim definieren der ersten xxx wird das dazugehoerige Modul geladen.
>

--
Sie haben diese Nachricht erhalten, da Sie der Google Groups-Gruppe FHEM users beigetreten sind.
Wenn Sie Nachrichten in dieser Gruppe posten möchten, senden Sie eine E-Mail an fhem-users@googlegroups.com.
Wenn Sie aus dieser Gruppe austreten möchten, senden Sie eine E-Mail an fhem-users+unsubscribe@googlegroups.com.
Besuchen Sie die Gruppe unter http://groups.google.com/group/fhem-users?hl=de, um weitere Optionen zu erhalten.