Hallo,
mir fehlt irgendwie die Erleuchtung, wie ich mein notify mit den neuen Variablen anpassen muss.
Ich habe bisher mit sub_%NAME eine Unterroutine der 99_myUtils.pm aufgerufen und die Ausgabe mit split weiter verarbeitet.
Ich hab schon einiges mit $NAME probiert, aber ich bekomme es nicht hin, dass die Unterroutine aufgerufen wird.
relais.. {
my ($block,$port1) = split(" ",sub_%NAME);
if ("%EVENT" eq "on" && ReadingsVal("$block","$port1","none") eq "on") {
fhem ("set $block $port1 off");
} elsif ("%EVENT" eq "off" && ReadingsVal("$block","$port1","none") eq "off") {
fhem ("set $block $port1 on");
}
}
%EVENT muss ich auch noch anpassen, das ist mir schon klar, aber so weit komme ich momentan gar nicht.
Wäre schön, wenn mir da jemand einen Tipp geben könnte.
Danke
Den Hinweis oben rechts in rot hast du gelesen? Die commandref zu notify sicher auch!? Dann ist unklar, was noch unklar ist.
%NAME -> $NAME
%EVENT -> $EVENT
wenn ich einfach nur %NAME gegen $NAME austausche, wird die Subroutine nicht aufgerufen.
Perl Handbuch lesen. Das hier hilft vielleicht:
http://stackoverflow.com/questions/1915616/how-can-i-elegantly-call-a-perl-subroutine-whose-name-is-held-in-a-variable
Aber warum nicht nur eine allgemeine sub und die Unterscheidung über Parameter machen? Also so:
my ($block,$port1) = split(" ",subTEST($NAME));
In der sub dann sowas wie
sub subTest($) {
my ($dev)=@_;
if ($dev eq "TESTDEVICE) {
...
}
elsif ($dev eq "TESTDEVICE2") {
...
}
}
Alternativ mit switch arbeiten.
nur eine sub zu machen und $NAME zu übergeben war ein super Hinweis.
danke