FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: raspklaus am 17 November 2015, 12:54:52

Titel: Variablenübergabe an FHEM
Beitrag von: raspklaus am 17 November 2015, 12:54:52
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
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: ChrisK am 17 November 2015, 13:44:42
Sowas?
{fhem("define SonosRemoval at 19:30:00 set Sonos_Buero PlayURITemp ".$message.".mp3 35")}\
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: raspklaus am 17 November 2015, 13:55:13
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
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: ChrisK am 17 November 2015, 14:05:02
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.
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: raspklaus am 17 November 2015, 14:35:21
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."  ?
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: raspklaus am 18 November 2015, 10:11:15
Hat denn keiner eine Idee wie es funktionieren könnte ?
Titel: Antw:Variablenübergabe an FHEM
Beitrag von: Icinger am 18 November 2015, 10:29:19
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