Hallo,
versuche mich gerade mal wieder an Perl, komme allerdings nicht weiter
Ich befülle die Variable message mit:
define Removal4Sonos notify Removal4Sonos {\
my $message = "Removal";;\
if (ReadingsVal("RemovalBlack", "state", "") eq "on") {$message .= "Black"};;\
if (ReadingsVal("RemovalBrown", "state", "") eq "on") {$message .= "Brown"};;\
if (ReadingsVal("RemovalBlue", "state", "") eq "on") {$message .= "Blue"};;\
if (ReadingsVal("RemovalYellow", "state", "") eq "on") {$message .= "Yellow"};;\
if ($message ne "Removal")\
{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp "???????????".mp3 35")}\
}
Damit will ich dann Sonos steuern über
set Sonos_Buero PlayURITemp \\192.200.100.95\SonosSpeak\????????.mp3 50
Was muss denn anstelle der Fragezeichen stehen ?
Danke für Eure Hilfe
Sowas?
{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp ".$message.".mp3 35")}\
Das funktioniert ja eben nicht, deshalb bin ich den Weg über die komplette Angabe der Freigabe gegangen
ein
set Sonos_Buero PlayURITemp \\192.200.100.95\SonosSpeak\RemovalBlack.mp3 50
funktioniert
Ich befürchte, ich habe das Problem immernoch nicht verstanden, aber evtl. hilft es message direkt so zu definieren:
my $message = "\\192.200.100.95\SonosSpeak\Removal";;\
Und das if, was später kommt, natürlich entsprechend anpassen.
In $message steht ja dann schon
RemovalYellow
und oder
RemovalBrown
RemovalBlack
RemovalYellow
drin
Es funktioniert so:
set Sonos_Buero PlayURITemp \\192.200.100.95\SonosSpeak\[color=red]????????[/color].mp3 50
Als ?????? dann also ".$message." ?
Hat denn keiner eine Idee wie es funktionieren könnte ?
Ersetze das fhem("define......" doch einfach mal durch ein Log 3 und schau, was du dann im Log stehn hast.
Also
define Removal4Sonos notify Removal4Sonos {
my $message = "Removal";
if (ReadingsVal("RemovalBlack", "state", "") eq "on") {$message .= "Black"};
if (ReadingsVal("RemovalBrown", "state", "") eq "on") {$message .= "Brown"};
if (ReadingsVal("RemovalBlue", "state", "") eq "on") {$message .= "Blue"};
if (ReadingsVal("RemovalYellow", "state", "") eq "on") {$message .= "Yellow"};
Log 3,"Before if: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp $message.mp3 35";
if ($message ne "Removal")
{Log 3,"Inside if: define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp $message.mp3 35"}
}
Bzw. würd ich das Log sogar erstmal vor dem if setzen.
Wenn du jetzt im Log das richtige stehn hast, kannst du dann auch den fhem-Befehl absetzen.
lg, Stefan