ich habe auch noch ein Fehlereintrag im Log wenn der optische Eingang aktiv ist:
IPSymcon-Err-PHP 2016-02-25 00:00:05.829 Notice: Undefined variable: image
Error in Script /mnt/data/symcon/scripts/44773.ips.php on Line 158
134 in /mnt/data/symcon/IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)
44 in /mnt/data/symcon/IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
158 in /mnt/data/symcon/44773.ips.php (call IPSLogger_PhpErrorHandler)
Ich würde mir eine Option in der Konfiguration wünschen, welche die in Sonos ‚Importierten Playlisten‘ anzeigt anstatt der in Sonos angelegten Playlisten. Hintergrund: Ich verwalte meine Playlisten innerhalb eines extra Programms und nicht im Sonos selbst.
Das dürfte recht einfach machbar sein:
Option in die Konfiguration
Soap Parameter in sonosAccess.php / BrowseContentDirectory(…) entsprechend der Option verändern
Kosmetik bei der Darstellung des Playlistnamens (.m3u etc. substituieren)
Habe auf das neue Sonos Modul umgestellt. Macht Spass, Danke allen.
Gibt es eine Möglichkeit, die Radiostationen auch ohne Nachfrage über dieses Board anzupassen?
Ich komme aus einer anderen Region, da sind die bereits vordefinierten Stationen nicht ganz so gefragt.
Sollte keine deiner Radiostationen im Modul verfügbar sein, dann einfach Name des Radiosenders + Stream URL hier posten und kugelberg nett bitten das einzubauen und dann macht er das auch meistens ruck zuck
Selbst einbauen geht theoretisch auch, wird aber beim nächsten Modul-Update überschrieben…ist deshalb nicht zu empfehlen.
Du hast auch die Möglichkeit die Favoriten aus der Konfiguration in Sonos zu importieren.
Schau Dir mal in der Doku fast ganz unten die Erläuterung zu „SNS_UpdateRadioStations(integer $InstanceID)“ an.
Bzw. unter Konfiguration die Beschreibung von „Include TuneIn favorites“ und „Stations in WebFront“.
Wenn Du Deine Favoriten nicht im WebFront anzeigen willst, kannst Du sie auch mit „SNS_SetRadio(integer $InstanceID, string $radio)“, indem Du für $radio einfach den Namen Deines Favoriten angibts. Das sollte auf jeden Fall gehen.
$this->RegisterPropertyString("PlaylistSelection", "sonos");
public function SetPlaylist($name){
$ip = $this->ReadPropertyString("IPAddress");
$timeout = $this->ReadPropertyString("TimeOut");
if ($timeout && Sys_Ping($ip, $timeout) != true)
throw new Exception("Sonos Box ".$ip." is not available");
if(@GetValue($this->GetIDForIdent("MemberOfGroup")))
$this->SetGroup(0);
include_once(__DIR__ . "/sonosAccess.php");
$sonos = new SonosAccess($ip);
$uri = '';
switch ($this->ReadPropertyString("PlaylistSelection")) {
case 'sonos':
$queryObject = "SQ:";
break;
case 'import':
$queryObject = "A:PLAYLISTS";
break;
default:
$queryObject = "SQ:";
break;
}
$replace = array(
'.m3u' // to be extended on demand
);
foreach ((new SimpleXMLElement($sonos->BrowseContentDirectory($queryObject)['Result']))->container as $container) {
if (str_replace($replace, '', $container->xpath('dc:title')[0]) == $name){
$uri = (string)$container->res;
break;
}
}
if($uri === '')
throw new Exception('Playlist \''.$name.'\' not found');
$sonos->ClearQueue();
$sonos->AddToQueue($uri);
$sonos->SetAVTransportURI('x-rincon-queue:'.$this->ReadPropertyString("RINCON").'#0');
$sonos->Play();
}
public function UpdatePlaylists()
{
$ip = $this->ReadPropertyString("IPAddress");
$timeout = $this->ReadPropertyString("TimeOut");
if ($timeout && Sys_Ping($ip, $timeout) != true)
throw new Exception("Sonos Box ".$ip." is not available");
include_once(__DIR__ . "/sonosAccess.php");
$sonos = new SonosAccess($ip);
$Associations = Array();
$Value = 1;
switch ($this->ReadPropertyString("PlaylistSelection")) {
case 'sonos':
$queryObject = "SQ:";
break;
case 'import':
$queryObject = "A:PLAYLISTS";
break;
default:
$queryObject = "SQ:";
break;
}
$replace = array(
'.m3u' // to be extended on demand
);
foreach ((new SimpleXMLElement($sonos->BrowseContentDirectory($queryObject)['Result']))->container as $container) {
$Associations[] = Array($Value++, (string)str_replace($replace, '', $container->xpath('dc:title')[0]), "", -1);
// associations only support up to 32 variables
if( $Value === 33 ) break;
}
if(IPS_VariableProfileExists("Playlist.SONOS"))
IPS_DeleteVariableProfile("Playlist.SONOS");
$this->RegisterProfileIntegerEx("Playlist.SONOS", "Database", "", "", $Associations);
}
Die Option beides zu Kombinieren könnte Problematisch werden, speziell dann wenn die Playlisten zufällig den gleichen Namen haben. Deshalb habe ich die Option bewusst erst einmal weg gelassen.
Ich würd Dir die Lösung mit den eigenen Radiofavoriten empfehlen:
[IMG]https://www.symcon.de/forum/images/misc/quote_icon.png[/IMG] Zitat von [b]Schablone[/b] [[IMG]https://www.symcon.de/forum/images/buttons/viewpost-right.png[/IMG]](https://www.symcon.de/forum/showthread.php?p=280329#post280329)
Ich habe da in deiner Konfiguration eine Auswahlliste mit Radiosendern die mich nicht die Bohne interressieren.
Wie kann ich die in die Tonne kloppen. Kann ich nicht automatisch meine Favoriten einlesen lassen?
Doch, geht.
In dem Parameter „Stations in Webfront“ nichts (auch nicht „<all>“) eintragen
Ich habe die Detaildarstellung verbessert und verschönert, sieht dann folgendermaßen aus (mein Farbschema mal außen vor):
Das Cover wird nach Verfügbarkeit ein/aus-geblendet.
Den hässlichen (Sorry!) und eigentlich ja auch sinnlosen Positionsbalken habe ich mal weggelassen. Warum ist der überhaupt drin, wenn man doch die Playtime eingeblendet hat ? Verstehe ich nicht so ganz. Wenn man anhand des Positionsbalkens Vor- und Zurück- Spulen könnte würde ich sagen: Okay, aber so verschandelt der nur das Bild meiner Meinung nach.
Die aufgehüschte Grafik finde ich prima das gleiche habe ich bei mir auch gemacht wenn das Einzug in das Release bekommen würde fände ich das toll. Den Positionsbalken finde ich nützlich. Im Webfront mag dieser ja nicht so hübsch aussehen vielleicht wäre da ja eine Option zum Ein/Ausblenden sinnvoll. Zumindest würde ich gerne eine Variable um einen Slider anzeigen zu lassen behalten denn es gibt ja auch Leute die zur Visualisierung z.B. IPSView oder NEO benutzten, da kannst Du den „hässlichen“ Slider dann so anpassen wie Du willst.
Ja danke, das hatte ich schon gesehen und ausprobiert. Es funktioniert, jedoch sind die Stationsnamen in SONOS arg lang (z.B. „WDR 2 (Ostwestfalen Lippe)“) und sprengen das Webfront.
Auch lassen sich die Sender nicht als „Favorite radio station“ festlegen.
Daher fände ich es schön, wenn es die beiden Sender in den Standard schaffen:)