set mit Variable ausführen

Begonnen von Philipp1596, 27 Dezember 2016, 00:02:43

Vorheriges Thema - Nächstes Thema

Philipp1596

Hallo Forengemeinde,

ich habe ein Problem mit meiner Rückmeldung. Und zwar möchte ich, dass wenn ich eine Taste, zum einschalten einer Heizungspumpe, drücke, mir die Akzeptanz des Befehls durch ein Rückmelden mittels LED-Streifen angezeigt wird.
Mit folgendem Code habe ich es bereits versucht:
(FS20_R2) {
my $Taster_R2=Value("FS20_R2");;
my $State_RGB_Bel_Schreibtisch=ReadingsVal("Bel_Off_Warn_Backup","RGB_Schreibtisch",0);;
my $RGB_Schreibtisch=ReadingsVal("Bel_Schreibtisch","RGB",0);;
if ($Taster_R2 eq "dimdown") {
fhem "set HZ_UG off; setreading Bel_Off_Warn_Backup RGB_Schreibtisch $RGB_Schreibtisch; set Bel_Schreibtisch RGB FF0000; sleep 1; set Bel_Schreibtisch RGB ReadingsVal('Bel_Off_Warn_Backup','RGB_Schreibtisch','0'); sleep 1; set Bel_Schreibtisch RGB FF0000; sleep 1; set Bel_Schreibtisch RGB ReadingsVal('Bel_Off_Warn_Backup','RGB_Schreibtisch','0')"
}
if ($Taster_R2 eq "dimup") {
fhem "set HZ_UG on"
}
}

Wenn ich nun die Taste betätige, wird die aktuelle RGB Farbe gespeichert und dann auf Rot umgeschalten. Danach passiert nichts mehr. Im LogFile wird folgendes angezeigt:
After sleep: RGB is required hex RRGGBB

Wenn ich dann im gespeicherten Dummy nachschau, dann wird mir ein sechsstelliger Hex Code angezeigt.

Was mache ich falsch?

Danke im Vorraus :)

rudolfkoenig

Perl fuehrt Funktionen in einem String nicht aus, die sets bekommen sie als String vorgesetzt, und koennen damit nichts anfangen. Also statt
...set Bel_Schreibtisch RGB ReadingsVal('Bel_Off_Warn_Backup','RGB_Schreibtisch','0');...
lieber sowas wie
...set Bel_Schreibtisch RGB $RGB_Bel_Schreibtisch;...
Achtung, Semantik habe ich nicht beachtet, nur Syntax.

Das gezeigte Code-Stueck stammt aus FHEMWEB, Definition Bearbeiten mit DEF.
Da ist ;; nicht notwendig, ; reicht.