Liebe FHEM-Gemeinde
Wie kann ich einem Perl-Block einen Parameter übergeben? ich würde gerne aus aus FHEM folgendes aufufen:
fhem set NN.xx.XX.Test2.di test 3000
und dann im entsprechenden Perl-Block daraufeingehen, eigentlich so, wie es bei den Subs mit Parametern funktioniert.
Bis jetzt habe ich das nur sehr umständlich in der Art wie im nachfolgenden Test-DOIF angegeben hingekriegt. Kennt jemand einen eleganteren Weg?
Vielen herzlichen Dank für etwaige Hilfestellungen im voraus!
Liebe Grüsse, Boris
defmod NN.xx.XX.Test2.di DOIF setTestReading {\
x637a6969_doSomething([$SELF:test]);;\
}\
\
subs {\
\
sub x637a6969_doSomething($) {\
my ($testReadingValue) = @_;;\
Log 1, "$testReadingValue"\
}\
\
}\
attr NN.xx.XX.Test2.di readingList test
attr NN.xx.XX.Test2.di room DEV
attr NN.xx.XX.Test2.di setList test:slider,0,100,9000
setstate NN.xx.XX.Test2.di initialized
setstate NN.xx.XX.Test2.di 2024-04-11 09:32:55 block_setTestReading executed
setstate NN.xx.XX.Test2.di 2024-04-11 09:32:55 e_NN.xx.XX.Test2.di_test 1200
setstate NN.xx.XX.Test2.di 2024-04-11 09:30:14 mode enabled
setstate NN.xx.XX.Test2.di 2024-04-11 09:30:14 state initialized
setstate NN.xx.XX.Test2.di 2024-04-11 09:32:55 test 1200
Ist bisher nicht vorgesehen. Die Lösung, die du gebaut hast, finde ich ok. Du brauchst dabei nicht über eine Subroutine zu gehen.
Es reicht einfach am Anfang des Blocks einzufügen:
{
my $param=[$SELF:test];
...
}
Der Block wird ja bei set test ... automatisch aufgerufen und der Inhalt des Parameters steht in $param.
Danke, Damian für deine schnelle Antwort.
Weiterhin einen tollen Tag wünsche ich dir,
Liebe Grüsse, Boris