Hallo,
Hat jemand ein schönes Beispiel für eine Integration von Sonos Lautsprechern?
Ich habe aktuell 3 Lautsprecher Gruppen die ich auch schon in FHEM eingebunden habe und auch über einen Button starten und stoppen kann.
Allerdings fehlt mir noch ein Beispiel wie man es schön und elegant lösen könnte.
Ich würde gerne unterschiedliche Radiosender oder Playlisten auswählen können und sehen ob der Lautsprecher gerade aktiv oder gestoppt ist.
Warum nimmst Du nicht das Sonos Modul?
Gesendet von meinem iPhone mit Tapatalk
Ich habe die Geräte ja schon mit dem Sonos Modul integriert. Mir geht es jetzt um eine ansprechende Visu in TabletUI.
So hab ich es gelöst.
<li class="transparent50" data-row="1" data-col="5" data-sizex="3" data-sizey="2">
<header>SONOS Schlafzimmer</header>
<div data-type="image" data-device="Sonos_Schlafzimmer" data-get="currentAlbumArtURL" data-size="65%" class="top-space"></div>
</li>
<li class="transparent50" data-row="3" data-col="5" data-sizex="3" data-sizey="1">
<div class="container cell top-space-2x">
<div data-type="label" class="" data-device="Sonos_Schlafzimmer" data-get="infoSummarize1"></div><br>
<div data-type="label" class="darker" data-device="Sonos_Schlafzimmer" data-get="infoSummarize3"></div><br>
</div>
</li>
<li class="transparent50" data-row="4" data-col="5" data-sizex="3" data-sizey="1">
<div class="cell top-space">
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-step-backward" data-background-icon="-"
data-set-on="Previous" class="inline">
</div>
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-stop" data-background-icon="-"
data-set-on="Stop" class="inline">
</div>
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-play" data-background-icon="-"
data-set-on="Play" class="inline">
</div>
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-step-forward" data-background-icon="-"
data-set-on="Next" class="inline">
</div>
</div>
<div class="cell">
<div data-type="push"
data-set-on="VolumeD"
data-icon="fa-volume-off"
data-background-icon="-"
data-device="Sonos_Schlafzimmer"
class="inline"></div>
<div data-type="push"
data-set-on="VolumeU"
data-icon="fa-volume-up"
data-background-icon="-"
data-device="Sonos_Schlafzimmer"
class="inline"></div>
</div>
</li>
<li class="transparent50" data-row="5" data-col="5" data-sizex="3" data-sizey="1">
<div class="cell wider left top-space-2x">
<div data-type="select" data-device="Sonos_Schlafzimmer" data-list="FavTabletUI" data-set="startFavourite" class="cell w2x" ></div>
<div data-type="label" class="cell">Favouriten</div>
</div>
<div class="right top-space-2x right-space">
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-volume-down"
data-set-on="Volume 8"
class="cell inline">
</div>
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-volume-off"
data-set-on="Volume 15"
class="cell inline">
</div>
<div data-type="push" data-device="Sonos_Schlafzimmer"
data-icon="fa-volume-up"
data-set-on="Volume 30"
class="cell inline">
</div>
<div data-type="label" class="cell">Lautstärke</div>
</div>
</li>
<li class="transparent50" data-row="1" data-col="8" data-sizex="3" data-sizey="2">
<header>SONOS Büro</header>
<div data-type="image" data-device="Sonos_Buero" data-get="currentAlbumArtURL" data-size="65%" class="top-space"></div>
</li>
<li class="transparent50" data-row="3" data-col="8" data-sizex="3" data-sizey="1">
<div class="container cell top-space-2x">
<div data-type="label" class="" data-device="Sonos_Buero" data-get="infoSummarize1"></div><br>
<div data-type="label" class="darker" data-device="Sonos_Buero" data-get="infoSummarize3"></div><br>
</div>
</li>
<li class="transparent50" data-row="4" data-col="8" data-sizex="3" data-sizey="1">
<div class="cell top-space">
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-step-backward" data-background-icon="-"
data-set-on="Previous" class="inline">
</div>
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-stop" data-background-icon="-"
data-set-on="Stop" class="inline">
</div>
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-play" data-background-icon="-"
data-set-on="Play" class="inline">
</div>
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-step-forward" data-background-icon="-"
data-set-on="Next" class="inline">
</div>
</div>
<div class="cell">
<div data-type="push"
data-set-on="VolumeD"
data-icon="fa-volume-off"
data-background-icon="-"
data-device="Sonos_Buero"
class="inline"></div>
<div data-type="push"
data-set-on="VolumeU"
data-icon="fa-volume-up"
data-background-icon="-"
data-device="Sonos_Buero"
class="inline"></div>
</div>
</li>
<li class="transparent50" data-row="5" data-col="8" data-sizex="3" data-sizey="1">
<div class="cell wider left top-space-2x">
<div data-type="select" data-device="Sonos_Buero" data-list="FavTabletUI" data-set="startFavourite" class="cell w2x" ></div>
<div data-type="label" class="cell">Favouriten</div>
</div>
<div class="right top-space-2x right-space">
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-volume-down"
data-set-on="Volume 8"
class="cell inline">
</div>
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-volume-off"
data-set-on="Volume 15"
class="cell inline">
</div>
<div data-type="push" data-device="Sonos_Buero"
data-icon="fa-volume-up"
data-set-on="Volume 30"
class="cell inline">
</div>
<div data-type="label" class="cell">Lautstärke</div>
</div>
</li>
Hi,
super Sache, wie du Sonos in der UI integriert hast.
Bei mir klappt nur die Anzeige der Favoriten nicht.
Bin dankbar für jeden Tip
Viele Grüße
Detlef
Ja das mit den Favoriten würde mich auch interessieren (funktioniert bei mir auch nicht so).
Habe es zwar nun hinbekommen, dass die Liste angezeigt wird, allerdings funktioniert die Auswahl nicht bzw. ich bekomme das nicht vernünftig ausgelesen.
Würde das dann gerne mit Favoriten, Playlists und Radios bei mir anwenden. Das wäre schon recht genial.
So etwas brauche ich auch noch: eine Media-List für Playlists, Alben oder Favoriten für das MPD Modul oder für Mopidy direkt.
Ist aber noch nichts geworden, steht aber noch auf der ToDo Liste.
Das Problem liegt wohl am auslesen (Reading) der Playlists.
Die Formatierung der Liste ist nicht gegeben, dass muss wohl noch irgendwie getan werden.
Hab aber keine Idee wie ich das anpassen soll. Dachte wenn ich schon ein Reading auf die Playlist mache, dass mir eine Liste mit genau den Infos untereinander angezeigt wird.
Er macht irgendwo willkürlich einen Umbruch in der Liste.
Zitat von: Dedi75 am 23 März 2016, 13:30:39
Das Problem liegt wohl am auslesen (Reading) der Playlists.
Die Formatierung der Liste ist nicht gegeben, dass muss wohl noch irgendwie getan werden.
Hab aber keine Idee wie ich das anpassen soll. Dachte wenn ich schon ein Reading auf die Playlist mache, dass mir eine Liste mit genau den Infos untereinander angezeigt wird.
Er macht irgendwo willkürlich einen Umbruch in der Liste.
Die Beipiele hier sind leicht fehlerhaft.
Erzeuge bei Deinem SONOS ein userReadings (hier am Beispiel mit Namen:userReadings)
FavTabletUI:LastActionResult.*?GetFavourites.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/,/:/g;
$returnvalue =~ s/"//g;
return $returnvalue;
}
}
... dann wird dadurch eine Liste erzeugt , die durch ":" getrennt ist (und es werden auch die \" entfernt).
Die Liste (bzw. das reading FavTabletUI) kannst Du in tabletUI dann mit ...
<div data-type="select" data-device="Sonos_Kueche" data-list="FavTabletUI" data-get="FavTabletUI" data-set="startFavourite" class="cell w2x" ></div>
<div data-type="label" class="cell">Favoriten</div>
</div>
... auslesen und auch setzen.
Damit funktionierts.
Viele Grüße!
Andreas
Ok Danke - werde das heute Abend dann mal ausprobieren.
Momentan ist bei mir im userReading folgendes definiert:
Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }
Da werde ich dann mal deinen Code anhängen.
Ist es nun auch machbar das ich diesen direkt in Fhem anzeigen lassen kann?
Aktuell sind z.B. die Playlists, Favoriten und Radios über als Listen über ReadingGroups angelegt mit folgender DEF:
Sonos_Wohnzimmer:<{SONOS_getListRG($DEVICE,"Playlists")}@Playlists>
Gruß
Dedi
Zitat von: fhem-challenge am 31 März 2016, 14:51:45
FavTabletUI:LastActionResult.*?GetFavourites.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/,/:/g;
$returnvalue =~ s/"//g;
return $returnvalue;
}
}
Vielen Dank für deinen Code :) :) :) Ich hab ihn noch um eine Zeile erweitert:
$returnvalue =~ s/ /%20/g;
Damit werden die Leerzeichen für Sonos richtig ersetzt =) mein Sonos mag zumindest keine Leerzeichen.
Beste Grüße
Andy
Zitat von: Andy89 am 01 April 2016, 18:31:52
Vielen Dank für deinen Code :) :) :) Ich hab ihn noch um eine Zeile erweitert:
$returnvalue =~ s/ /%20/g;
Damit werden die Leerzeichen für Sonos richtig ersetzt =) mein Sonos mag zumindest keine Leerzeichen.
Beste Grüße
Andy
Ja das ist einen gute Variante, ich habe es umgekehrt gemacht. Ich habe "uri_escape" verwendet und dann alle "%22" gelöscht bzw. "%2C" durch ":" ersetzt.
Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } },
Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } },
Radios:LastActionResult.*?GetRadios.* { if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } },
Playlists:LastActionResult.*?GetPlaylists.* { if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } },
Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } },
FavTabletUI:LastActionResult.*?GetFavourites:.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = uri_escape($1);
$returnvalue =~ s/%22//g;
$returnvalue =~ s/%2C/:/g;
return $returnvalue;
}
}
Ich werde mir noch etwas ausdenken müssen, dass in den Favourites im FTUI nicht die %20 in der Auswahl zusehen ist.
Viele Grüße!
Andreas
Habt ihr für das Anzeigen der Covers etwas machen müssen, bei mir kommt da immer so eine ganz wirre Url bei raus und da findet er dann immer kein Bild.
Zitat von: fhem-challenge am 04 April 2016, 13:39:01
Ich werde mir noch etwas ausdenken müssen, dass in den Favourites im FTUI nicht die %20 in der Auswahl zusehen ist.
Du könntest "data-alias" verwenden.
Zitat von: zap am 11 April 2016, 07:32:55
Du könntest "data-alias" verwenden.
Hmm ... leider nicht. data-alias ist eine statische Liste, die dann nicht mehr mit der dynamischen Liste in "data-list" korrelliert, wenn diese sich ändert. Ich sehe zumindest keine Möglichkeit, bei data-alias ein "reading" als Liste anzugeben. Zumindest funktioniert es nicht.
Viele Grüße!
Andreas
Also ich hab es nun doch anders gelöst.
1.) Ich detze via userReadings das reading "FavTabletUI" mit den Favouriten, die dann ":" getrennt sind und entferne das \".
2.) In TabletUI verwende ich dann die in 1.) erzeugte data-list="FavTabletUI" zur Auswahl
3.) Damit setze ich ein dummy "sonos_play_fav"
4.) Mit dem notify sonos_play_favourites trenne ich dann den jeweiligen SONOS Player ab sowie den Favouriten der gespielt werden soll, uri_escape diesen, und setze "startFavourite" auf mein gewählten Favouriten. zusätzlich setze ich ich noch reading am jeweiligen SONOS Player "lasPlayedFav", der dann im TabletUI als "aktiv" angezeigt wird.
... das ist für mich die beste Lösung, da ich in TabletUI nicht die uri_escap'tenEinträge habe und es gleichermassen für alle meine Player funktioniert.
Anbei meine Lösung:
userRading am SONOS Player:
# userReadings für jeden SONOS Play setzen
set Sonos_Kueche userReadings FavTabletUI:LastActionResult.*?GetFavourites:.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/","/:/g;
$returnvalue =~ s/\"//g;
return $returnvalue;
}
}
Dummy definieren:
# Dummy definieren
define sonos_play_fav dummy
Auswahl (select) in TabletUI:
<!-- in TabletUI select der Favouriten -->
<div
data-type="select"
data-device="Sonos_Kueche"
data-list="FavTabletUI"
data-get="lastPlayedFav"
data-cmd="set sonos_play_fav"
class="cell w2x">
notify zum abspielen des Favouriten:
# SONOS Favouriten spielen
define sonos_play_favourites notify sonos_play_fav {
my $player=substr($EVENT,0,index($EVENT, " "));
my $part2=substr($EVENT,index($EVENT, " ")+1,length($EVENT)-index($EVENT, " "));
my $fav=substr($part2,index($part2, " ")+1,length($part2)-index($part2, " "));
my $favourite=uri_escape($fav);
fhem ("set $player startFavourite $favourite");
fhem ("setreading $player lastPlayedFav $fav");
Log 0,"Play on $player the favourite:$fav"
}
Viele Grüße!
Andreas
Zitat von: uniqueck am 11 April 2016, 00:31:58
Habt ihr für das Anzeigen der Covers etwas machen müssen, bei mir kommt da immer so eine ganz wirre Url bei raus und da findet er dann immer kein Bild.
Was heißt wirr ?
Bei mir zum Beispiel
http://192.168.1.64:1400/getaa?u=x-file-cifs%3a%2f%2fHOMESERVER%2fMusik%2fPassport%20On%20Stage%2f1%20-%2001%20-%20Doldinger,%20Klaus%20-%20Ataraxia.flac&v=587
und da kommt dann ein Bild
PS hier ist das Cover Bestandteil des flac ... bei dir auch? oder hast du die Cover außerhalb der Musik-Datei als JPG ?
Zitat von: Nobby1805 am 11 April 2016, 10:39:32
Was heißt wirr ?
Bei mir zum Beispiel http://192.168.1.64:1400/getaa?u=x-file-cifs%3a%2f%2fHOMESERVER%2fMusik%2fPassport%20On%20Stage%2f1%20-%2001%20-%20Doldinger,%20Klaus%20-%20Ataraxia.flac&v=587
und da kommt dann ein Bild
PS hier ist das Cover Bestandteil des flac ... bei dir auch? oder hast du die Cover außerhalb der Musik-Datei als JPG ?
Naja das ist die Musik welche ich als auto rip bei amazon habe. Bei meinen eigenen habe ich das noch gar nicht getestet. Es sieht ja nur dumm aus, wenn er es aufrund was weiß ich nicht laden kann. Dann wäre natürlich ein Standard Bild schön. Ähnlich itunes widget von nesges, aber das funktioniert irgendwie auch nicht mehr.
Gesendet von meinem GT-N7100 mit Tapatalk
Also in der App von Sonos zeigt er mir auch für die bei Amazon gekauften Alben die Covers an, warum also nicht im TabletUI per image widget.
Wie kann ich da versuchen, dem Fehler auf die Schliche zu kommen, für meine eigene Musik, welche ich bei Amazon hochgeladen habe, bzw. welche ich auf meine NAS geladen habe, werden korrekt angezeigt.
Constantin
Ich benutze das itunes Widget von nesges in der FTUi version 2.* so wie auch schon zu 1.* Zeiten mit dieser Definition:
<div data-type="itunes_artwork"
data-device="MPD1"
data-get='["artist","album","title"]'
data-size='200'
class="top-space">
</div>
Eine angepasste Version für die ftui 2.2 ist hier im ersten Post zu finden: https://forum.fhem.de/index.php/topic,50945.0.html
Danke setstate,
mich hätte natürlich auch mal interessiert warum das nicht funktioniert. In der FHEM Oberfläche wird das Cover nämlich auch nicht richtig angezeigt.
Dann werde ich mal schauen was ich für tablet ui 2.1 bzw. 2.2 tun muss.
Gruß Constantin
Gesendet von meinem GT-N7100 mit Tapatalk
Wird das Cover denn in der "normalen" Fhem-Oberfläche gezeigt ?
poste doch mal die URL die bei dir angezeigt wird wenn du mit rechtsklick > Eigenschaften auf das (nicht angezeigte) Cover klickst
Ne in der normalen fhem Oberfläche wird sie auch nicht angezeigt. Wenn ich zu Hause bin reiche ich sie nach.
Gesendet von meinem GT-N7100 mit Tapatalk
Hier wie gesagt die URL:
http://192.168.178.61:1400/getaa?s=1&u=x-sonos-http%3aamz%3atr%3a3b8d75d8-ef86-4b39-8f37-26ccbf93f456.mp3%3fsid%3d26%26flags%3d8224%26sn%3d1
Zitat von: uniqueck am 14 April 2016, 19:15:01
Ne in der normalen fhem Oberfläche wird sie auch nicht angezeigt. Wenn ich zu Hause bin reiche ich sie nach.
Gesendet von meinem GT-N7100 mit Tapatalk
Dann würde ich die Anfrage in dem Sonos-Thread im Multimedia-Unterform stellen ... vermutlich hast du im Sonos-Modul etwas falsch eingestellt
Zitat von: fhem-challenge am 11 April 2016, 09:41:54
Anbei meine Lösung:
userRading am SONOS Player:
# userReadings für jeden SONOS Play setzen
set Sonos_Kueche userReadings FavTabletUI:LastActionResult.*?GetFavourites:.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/","/:/g;
$returnvalue =~ s/\"//g;
return $returnvalue;
}
}
Viele Grüße!
Andreas
Hallo Andreas,
ich versuche auch die Favoriten einzubinden. Ich habe z.Z. in der userReadings bereits einen Eintrag drin. Wenn ich nun deinen userReadings mache, lösche ich dann den aktuellen Eintrag? Oder kann ich den bestehenden userReadings nutzen?
Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal("Sonos_Wohnzimmer", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1; } }
danke für die Hilfe.
lg c
Ich würde die bestehenden userReadings drin lassen, wer weiß ob du die Readings dazu später nochmals verwenden möchtest und dann tust du dich leichter, wenn du sie noch hast ;)
Ich ersetze die Leerzeichen übrigens durch Punkte (=Regex für "jedes Zeichen", also auch Leerzeichen) statt %20. Damit ist die Liste dann wieder lesbar. 8)
FavTabletUI:LastActionResult.*?GetFavourites:.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { my $v = $1; $v =~ s/","/:/g; $v =~ s/"//g; $v =~ s/ /./g; return $v; } },
Außerdem setze ich in TabletUI data-quote="/". Dann wird der gesamte String als Regex vom Sonos Modul interpretiert und es klappt mit allen Listeneinträgen wunderbar.
Zitat von: Loredo am 07 August 2016, 15:34:41
Ich würde die bestehenden userReadings drin lassen, wer weiß ob du die Readings dazu später nochmals verwenden möchtest und dann tust du dich leichter, wenn du sie noch hast ;)
Ich ersetze die Leerzeichen übrigens durch Punkte (=Regex für "jedes Zeichen", also auch Leerzeichen) statt %20. Damit ist die Liste dann wieder lesbar. 8)
FavTabletUI:LastActionResult.*?GetFavourites:.* { if (ReadingsVal($name, "LastActionResult", "") =~ m/.*?: (.*)/) { my $v = $1; $v =~ s/","/:/g; $v =~ s/"//g; $v =~ s/ /./g; return $v; } },
Außerdem setze ich in TabletUI data-quote="/". Dann wird der gesamte String als Regex vom Sonos Modul interpretiert und es klappt mit allen Listeneinträgen wunderbar.
Danke für deine Hilfe. Wenn ich das userReadings nicht ändern soll, wo kann ich dann deinen Code resp das userReading von Andreas ergänzen? Danke für die Hilfe
Du musst genau lesen: Du solltest es nicht überschreiben, aber erweitern geht natürlich :-)
Man kann die Einträge mit Komma voneinander trennen.
Hallo Leute,
in meinem bestehenden Userreadings steht das drinne:
attr Sonos_Wohnzimmer_SW userReadings Favourites:LastActionResult.*?GetFavouritesWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_SW", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, Radios:LastActionResult.*?GetRadiosWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_SW", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, Playlists:LastActionResult.*?GetPlaylistsWithCovers.* { if (ReadingsVal("Sonos_Wohnzimmer_SW", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }, currentTrackPosition:LastActionResult.*?GetCurrentTrackPosition.* { if (ReadingsVal("Sonos_Wohnzimmer_SW", "LastActionResult", "") =~ m/.*?: (.*)/) { return $1;; } }
Wenn ich nun den Code:
FavTabletUI:LastActionResult.*?GetFavourites:.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/","/:/g;
$returnvalue =~ s/\"//g;
return $returnvalue;
}
}
dahinter hängen soll - wie mache ich das? Wo kommen Leerzeichen hin... etc... will den eigentlich nur in die fhem.cfg bekommen - aber bekomme beim speichern immer Error Meldungen.
Auch der letzte Block erschliesst sich mir nicht - wie soll man den - und wo hinschreiben?
Danke Simon
Zitat von: fhem-challenge am 31 März 2016, 14:51:45
Die Beipiele hier sind leicht fehlerhaft.
Erzeuge bei Deinem SONOS ein userReadings (hier am Beispiel mit Namen:userReadings)
FavTabletUI:LastActionResult.*?GetFavourites.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/,/:/g;
$returnvalue =~ s/"//g;
return $returnvalue;
}
}
... dann wird dadurch eine Liste erzeugt , die durch ":" getrennt ist (und es werden auch die \" entfernt).
Die Liste (bzw. das reading FavTabletUI) kannst Du in tabletUI dann mit ...
<div data-type="select" data-device="Sonos_Kueche" data-list="FavTabletUI" data-get="FavTabletUI" data-set="startFavourite" class="cell w2x" ></div>
<div data-type="label" class="cell">Favoriten</div>
</div>
... auslesen und auch setzen.
Damit funktionierts.
Viele Grüße!
Andreas
Hi,
ich versuche dieses Reading zu setzen:
attr Sonos_Kueche userReadings FavTabletUI:LastActionResult.*?GetFavourites.* {
if (ReadingsVal("Sonos_Kueche", "LastActionResult", "") =~ m/.*?: (.*)/) {
my $returnvalue = $1;
$returnvalue =~ s/,/:/g;
$returnvalue =~ s/"//g;
return $returnvalue;
}
}
Bekomme aber beim rereadcfg
Unknown command if, try help.
Unknown command my, try help.
Unknown command $returnvalue, try help.
Unknown command $returnvalue, try help.
Unknown command return, try help.
Unknown command }, try help.
Unknown command }, try help.
Hat jemand eine Idee, oder muss ich das anders schreiben?
Gruss
lewej