Hi,
inzwischen habe ich mir auch einen IKEA Sonos Clone zugelegt und er läuft auch in FHEM.
Das Abspielen von Streams klappt - auch eigene - und auch das Abspielen von einzelnen MP3 Dateien über eine Samba Freigabe.
(Hat einige Zeit gedauert, bis ich kapiert hatte, dass dazu ein Samba Client auf dem FHEM Server installiert sein muss und bis ich die Einstellungen auf dem Samba Server richtig hatte, dass FHEM darauf auch zugreifen kann)
Das Abspielen mittels:
set Sonos_Wohnzimmer PlayURl \\servername\share\directory\mp3-file.mp3 30
klappt.
Nun möchte ich je nach Situation eine laufende Streamwiedergabe mittels "PlayURlTemp" unterbrechen und die entsprechende Meldung ausgaben.
Klappt im Grundsatz auch.
Jetzt zur eigentlichen Frage:
Ist es möglich statt der URL auch einen userattr Wert zu verwenden.
Idee dahinter.
Ich möchte verschiedenen MP3 Dateien mit Nachrichten in verschiedenen userattr speichern und dann in dem "PlayURlTemp-Befehl" statt der URL den Namen das userattr verwenden - quasi als eine Variable.
Versucht habe ich z.B.: set Sonos_Wohnzimmer PlayURlTemp $userattr1
In userattr1 ist eine URL die für sich auch funktioniert abgespeichert.
Leider klappt das aber nicht.
Gibt es da einen Weg? Ich habe es bisher nicht hin bekommen.
Für jeden Tipp wäre ich dankbar.
Gruß
Michael
statt $userattr1 AttrVal("DeviceName","AttributName","Ersatzwert")...
Und da AttrVal ein Perl-Befehl ist -> nach Perl wechseln...
https://wiki.fhem.de/wiki/Klammerebenen
Gruß, Joachim
Hallo,
es gibt die Funktion AttrVal() (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#AttrVal) in FHEM, damit könntest du die userattr in Variablen schreiben und im set-Befehl aufrufen.
Beispiel (für die Kommandozeile):
{my $v= AttrVal("du","bla","ersatzwert");; fhem ("set Sonos_Wohnzimmer PlayURITemp $v")}
Gruß
Thomas
Hi,
ich finde userattr ist der falsche Weg diese Information zu speichern! Ist doch zu kompliziert?
Ich wurde einfach ein Reading setzen (setreading Gerät Reading MP3DateinAufruf), dann geht einfach (set magic):
set Sonos_Wohnzimmer PlayURlTemp [Gerät:Reading]
Gruß Otto
Zitat von: Otto123 am 26 September 2020, 19:05:45
Hi,
ich finde userattr ist der falsche Weg diese Information zu speichern! Ist doch zu kompliziert?
Ich wurde einfach ein Reading setzen (setreading Gerät Reading MP3DateinAufruf), dann geht einfach (set magic):
set Sonos_Wohnzimmer PlayURlTemp [Gerät:Reading]
Gruß Otto
Die Antwort hatte ich auch schon überlegt, bzw. würde ich das wohl auch so machen...
War aber ja nicht die Frage... ;) ;) ;)
Gruß, Joachim
Ich hatte überlegt darauf einzugehen und ein komplexeres Beispiel zu zeigen:
ZitatIch möchte verschiedenen MP3 Dateien mit Nachrichten in verschiedenen userattr speichern
Doch auf die Perl-Ebene wechseln, die Urls in ein Array stupsen (mit oder ohne Reading) und in_den_set_Befehlen auf die einzelnen Elemente zugreifen.
Bin aber am kochen :P, später vlt. wenn keiner zuvorkommt.
Danke für die Tipps.
Nur irgendwie klappt es auch damit noch nicht.
Entsprechend des Tipps von MadMax (so ich ihn denn richtig verstanden habe) habe ich es so versucht:
set Sonos_Wohnzimmer PlayURlTemp {AttrVal("Sonos_Wohnzimmer","userattr1","1")}
In "userattr1" steht die URL der MP3 Datei.
Weder mit noch ohne Hochkommas klappt das.
Habe ich da einen Denkfehler oder etwas falsch verstanden ?
Ja :)
Perl bei set magic erfordert {(PerlAusdruck)}
Es fehlen mMn die beiden Klammern () das sollte so auch im FHEM Log stehen.
Oder Du schreibst es so:
set Sonos_Wohnzimmer PlayURlTemp [Sonos_Wohnzimmer:userattr1]
Siehe auch https://fhem.de/commandref_DE.html#set
Gruß Otto
Funktioniert - danke Otto.
set Sonos_Wohnzimmer PlayURlTemp [Sonos_Wohnzimmer:userattr1]
Das war das was ich gesucht habe.