FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Philipp1596 am 27 Dezember 2016, 00:02:43

Titel: set mit Variable ausführen
Beitrag von: Philipp1596 am 27 Dezember 2016, 00:02:43
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 :)
Titel: Antw:set mit Variable ausführen
Beitrag von: rudolfkoenig am 27 Dezember 2016, 07:34:22
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.