Hauptmenü

Neues FHEM Modul

Begonnen von Janvi, 22 August 2024, 17:50:05

Vorheriges Thema - Nächstes Thema

Janvi

Habe ein FHEM Installation unter Ubuntu und konnte dortselbst auch schon eines der eingebauten Module starten indem ich es in der Fhem Kommandozeile mit def definiert habe. Danach ist das Modul als "Raum" erschienen. Ich konnte die Readings als Ausgabe sehen und im Log weitere Ausgaben des Moduls.

Jetzt habe ich einen Perl Quelltext datei.pm welche ich ausprobieren möchte. Bislang weis ich nur, daß man Perl nicht compilieren braucht. Wo muß ich diese Datei ablegen, damit Fhem sie findet bzw. daß ich sie starten kann? In Edit-Files sehe ich nur gplot bzw. css Dateien. Gerne auch ein Link auf passenden Lesestoff, denn sicher steht das irgendwo erklärt.

betateilchen

#1
Was soll denn mit der Datei passieren und was soll der Code in der Datei tun?

Lesestoff z.B. hier: https://www.fhemwiki.de/wiki/DevelopmentGuidelines

Wenn es etwas einfacher/leichtgewichtiger sein soll, bietet sich die 99_myUtils.pm an.
Auch dazu gibt es Dokumentation.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Das steht alles in der Doku, z.B. im Wiki. Oder in meinem Buch aus dem Jahr 2020.

Ausnahmsweise: Kurzanleitung für ein Modul, das beliebige eigene Perl-Routinen enthält:

1. Dateiname sollte sein 99_IRGENDWAS.pm, Ablageort /opt/fhem/FHEM zusammen mit den anderen Modulen.
2. Am Anfang der Datei sollte stehen
package main;
use strict;
use warnings;
use POSIX;

sub IRGENDWAS_Initialize($$)
{
}
Gefolgt von beliebigem Perl-Code.
Ferner am Ende der Datei eine Zeile
1;3. Dieses Modul wird dann beim Start von FHEM _automatisch_ mit geladen. Wenn man auf einen FHEM-Neustart verzichten will, einfach in der FHEM-Kommandozeile eingeben:
Zitatreload 99_IRENDWAS.pm
4. Ausführen von eigenen Perl-Routinen durch Eingabe von
Zitat{... Perl-Befehle, z.B. Funktionsaufruf ...}

LG

pah

betateilchen

Das "use POSIX;" würde ich grundsätzlich erstmal weglassen, solange man nicht genau weiß, warum man es einbindet.

Ansonsten entspricht der Vorschlag von Peter weitgehend dem mit FHEM standardmäßig ausgelieferten Template für 99_myUtils.pm, das für eigene Zwecke genutzt werden kann.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Janvi

Aha, vielen Dank mal. Von 99_myUtils.pm habe ich auch schon hier gelesen und das scheint der korrekte Tipp zu sein.  Wenn es mit 99_irgendwas.pm auch geht, umso besser. Hauptsache man verwechselt es nicht mit einem eingebauten Modul. Das Modul ist nicht von mir. Es verschiebt nur serielle Daten über einen TCP Socket hin und her, sollte also auch ohne Posix gehen.

Gibts die "1007 Tricks auf einen Blick" von Prof. Dr. Henning auch als freies PDF?

betateilchen

Es gibt schon Unterschiede zwischen 99_xxxUtils.pm und 99_irgendwas.pm - die Namensgebung ist nicht willkürlich.

Dateien mit dem Namen 99_.*Utils.pm können direkt über "Edit files" bearbeitet werden und werden von FHEM nach dem Speichern automatisch neu geladen. Das hat den Vorteil, dass auch sofort Syntax-Fehler im perl Code ausgegeben werden, sofern welche vorhanden sind.

Bei 99_irgendwas.pm muss man sich um das Bearbeiten und das anschließende Neuladen selbst kümmern.

Dateien, die mit 99_ anfangen, werden beim FHEM Start alle einmalig automatisch geladen, auch dann, wenn die Datei gar nicht gebraucht wird. Man sollte sich immer überlegen, ob man wirklich eine 99_ Datei anlegen möchte oder ob man das Laden der Datei nicht z.B. in einem notify auf global:INITIALIZED ausführt, wenn man die Datei wirklich benötigt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

Die Synthese ist natürlich, als Dateinamen
99_IRGENDWASUtils.pm
zu nehmen. Bei mir gibt es deshalb alleine in einer Installation
Zitat99_BabbleUtils.pm
99_EnergyUtils.pm
99_HeatingUtils.pm
99_LightUtils.pm
99_PlotUtils.pm
99_RemoteUtils.pm
99_RollUtils.pm
99_SecUtils.pm
99_TimeUtils.pm
LG

pah

betateilchen

Du darfst diesen Dateianhang nicht ansehen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

Hmmm...

Vielleicht habe ich es im Laufe der Zeit etwas übertrieben? :-[

Du darfst diesen Dateianhang nicht ansehen.

Aber die meisten definieren ihren eigenen Namespace (Package) und werden i.d.R. auch in FHEM mit komplettem Package-Namen verwendet. Das macht mir die spätere Zuordnung, bspw. bei Verwendung in notify leichter und die einzelnen Files sind relativ klein und daher auch übersichtlich bei der Bearbeitung direkt im FHEM-Editor.

gb#
 

Prof. Dr. Peter Henning

Zitat von: Benni am 24 August 2024, 09:52:23Vielleicht habe ich es im Laufe der Zeit etwas übertrieben?
Könnte sein.  8)

LG

pah