Mit FHEM Device perl-sub aufrufen und Variable übergeben?

Begonnen von AnBad, 20 Januar 2023, 13:23:52

Vorheriges Thema - Nächstes Thema

betateilchen

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

JoWiemann

Zitat von: AnBad am 23 Januar 2023, 20:12:24
FHEM kenne ich mich nicht aus, das alleine schon zu begreifen, ist schwierig. Deswegen habe ich mich von Anfang an auf Perl hier bei FHEM konzentriert, und mach auch möglichst alles damit. Ob durch die Eingabe ins Inputfeld ein Event und Device weitergegeben wird, weiß ich nicht, meinen Zweifel hatte ich. Perl kenn ich ganz gut, dass ist der Vorteil. Die Sub funktioniert.
Trotzdem, dass dann bei meinem gedankenlosen Schnelltest gleich das ganze FHEM zerreißt, fand ich jetzt suboptimal.

Alles gut und schön, aber was soll eine Code Zeile nach einem return? Und, $DEVICE gibt es wohl nur - klein geschrieben, also $device - bei DOIF. $NAME und $EVENT gibt es beim notify. Ansonsten existieren die Variablen nicht.

Von daher, wenn Du Perl beherrschst, dann erkläre bitte, was Dein Code im userReadings machen soll, mir erschließt sich das nicht. Wie schon gesagt, der Code wird evaluiert. Direkt im Perl Programm würde das dann so aussehen:

eval {
   return ReadingsVal("Logging_Energy", "Messungname", "Fehler");
   sub_Strommesser_V23_01_19("$DEVICE", "$EVENT", "dummy");
};

Und das man bei falscher Codierung ein Programm zum Absturz bringen kann ist nicht ungewöhnlich.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

betateilchen

Und man braucht Variablennamen in einem Funktionsaufruf auch nicht in Anführungszeichen setzen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!