Variablenübergabe an FHEM

Begonnen von raspklaus, 17 November 2015, 12:54:52

Vorheriges Thema - Nächstes Thema

raspklaus

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

ChrisK

Sowas?
{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp ".$message.".mp3 35")}\

raspklaus

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

ChrisK

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.

raspklaus

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."  ?

raspklaus

Hat denn keiner eine Idee wie es funktionieren könnte ?

Icinger

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
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho