FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: igami am 08 Dezember 2015, 07:49:16

Titel: (gelöst) Variablenname als Argument
Beitrag von: igami am 08 Dezember 2015, 07:49:16
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
Titel: Antw:Variablenname als Argument
Beitrag von: viegener am 08 Dezember 2015, 12:46:56
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);
}
}


Titel: Antw:(gelöst) Variablenname als Argument
Beitrag von: igami am 08 Dezember 2015, 13:00:11
Vielen Dank, eval ist die Funktion die ich gesucht habe.
Titel: Antw:(gelöst) Variablenname als Argument
Beitrag von: viegener am 08 Dezember 2015, 16:01:27
Bitte gern geschehen!
Titel: Antw:(gelöst) Variablenname als Argument
Beitrag von: Elektrolurch am 08 Dezember 2015, 16:13:53
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