Guten Tag zusammen,
sub test {
my $device = "test";
my $reading = ReadingsVal($device, "state", undef);
my $room = ReadingsVal($device, "room", "Unsorted");
fhem("setreading $device test $reading") if($reading);
}
Im state steht $room, nun wird mittels setreading auch $room in das Reading test geschrieben. Wie müsste ich das denn angeben, sodass $room ausgewertet wird?
Grüße
igami
Eine Möglichkeit wäre
sub test {
my $device = "test";
my $reading = ReadingsVal($device, "state", undef);
if ( $reading ) {
my $expr = "return $reading";
my $result = eval $expr;
fhem("setreading $device test $result") if($result);
}
}
Vielen Dank, eval ist die Funktion die ich gesucht habe.
Bitte gern geschehen!
So als Tipp:
Man kann auch mit Substitution und einem Platzhalter arbeiten, wie es z.B. in readingsGroup (sub Lookup und Lookup2) für
$ROOM, $DEVICE oder $READING gemacht wird. Das sieht dann so aus:
=~s/\$DEVICE/$device/g
Vielleicht hilft Dir das ja auch weiter.
Elektrolurch