Squeezebox / Squeezeserver Skript

**** Hier bitte nur Fragen und Antworten auf das Squeezeskript von mir einstellen. Danke ****

Hallo zusammen,

nachdem einige User angefragt haben ob ich meine Skripte für die Squeezebox veröffentlichen möchte hier das Ergebnis meiner Basteleien.

Basteleien aus dem Grund da in meinen Skripten keine automatische Installation irgendeiner Variable vorgesehen ist, aber was nicht ist kann ja noch werden.

D.h. letztendlich es muss jede Variable manuell angelegt werden, jeder Variable ein Aktionskript zugeordnet werden sowie manchen Variablen Assoziationen zugeteilt werden.

Warum so umständlich? Meine Skripte sind über 1 Jahr Stück für Stück gewachsen und waren eigentlich nie für die Öffentlichkeit gedacht.

Aber nun geht es los.

  1. Client Socket anlegen, als IP-Adresse die IP des Squeezeserver und als Port den CLI-Port der überlicherweise 9090 lautet.

  2. Cutter anlegen und auf den Client-Socket verbinden. (übergeordnete Instanz)

  3. Register-Variable anlegen und auf den Cutter verbinden (übergeordnete Instanz). Das Zielskript (Auswerteskript) folgt später.

  4. Include-Skript in IPS anlegen. (siehe ZIP-Datei). Darin befindet sich für die Coveranzeige in der Function Cover die URL:Port eures Servers. Bitte entsprechend ändern.

  5. Variablen für eine Squeezebox anlegen.

  6. Auswerteskript in IPS anlegen (ZIP-Datei) und alle ID der Variablen entsprechend der die ihr angelegt habt ändern. Jetzt könnt Ihr das Auswerteskript als Zielskript in die Register-Variable (Punkt 3) eintragen.

  7. Steuerskript anlegen (ZIP-Datei) und wieder alle Variablen-ID´s anpassen.

  8. Bei allen Variablen die im Steuerskript aufgeführt sind als Aktionskript das Steuerskript einstellen. (Siehe Beispiel 8_Variable_Steuerskript.png)

Die Profile und evtl. Assoziationen habe ich hoffentlich vollständig als Grafiken beigelegt.

Skripte sind im ZIP-Paket und sollten über Copy-Paste in ein neues Skript kopiert werden.

Ich habe die Skripte und Variablen alle in einem Unterverzeichnis ausserhalb des sichtbaren Webfront und habe dann die Variablen in eine Dummy-Instanz verlinkt (X_Verlinkung.png) um ein wenig Ordnung zu bekommen. Mittlerweile hat ja das Projekt über 50 Variablen.

Ich weiß es ist kompliziert und viel Aufwand aber ihr wolltet es ja nicht anders. :smiley: Wer es sich zutraut kann es machen, allen anderen wünsche ich viel Spaß. Als Ideensammlung kann man manches ja gebrauchen.

Was ich jetzt noch nicht veröffentlicht habe ist die Wiedergabeliste. Die kommt in den kommenden Tagen.

Nun viel Spass beim anlegen, Fehler suchen und hoffentlich ein wenig Freude.

Nachtrag: getestet mit Squeezeserver 7.5.1 bis 7.6.1 / Logitech Media Server (LMS) 7.7, auf Microsoft SBS2008 und WHS mit Squeezebox Classic, Squeezebox Radio, Squeezeplay und SqueezePad

Update 30.12.2011: Vorschlag und Vorgehensweise für neues Design per WFC
09.01.2012: Addon => Durchsage

Squeezebox.zip (495 KB)

Part 2 wie versprochen.

Sollte der erste Teil erfolgreich absolviert worden sein geht es nur an die Wiedergabelisten aus dem Squeezeserver.

Als erstes zur Logik. Ich steuere den Inhalt meiner Squeezeboxen rein über Wiedergabelisten, sei es eine mit 100 einzelnen Titeln, sei es ein komplettes Album oder auch ein Webradio. Alles wird bei mir mit den Wiedergabelisten im Squeezeserver arangiert, d.h. ich stelle mir im Squeezeserver alles so zusammen wie ich es brauche und IPS liest nach dem erstellen, ändern oder löschen einer Playliste diese sofort in eine Variable ein die anschließend allen Squeezeboxen zur Auswahl zur Verfügung steht.

Gebraucht wird, wie sollte es anderes sein, wieder eine handvoll Variablen in IPS, die erweiterten Funktionen für das Auswerteskript sowie Skript das die entsprechende Wiedergabeliste in einer HTML-Box darstellt.

Wie im ersten Post alles wieder in einem ZIP-Paket.

  1. Variablen anlegen (die markierten für die eine Box aus Post 1 1_Variablen_Wiedergabelisten.png)

  2. Die Erweiterung für das Auswerteskript in selbiges hinzufügen. (Bitte die <? ?> am Anfang und Ende der Erweiterung löschen, sind ja schon da)

  3. Der Integer-Variable „Wiedergabelisten Wohnzimmer“ oder wie ihr sie genannt habt ein neues Profil „.SQ_Playlist“ ohne Assoziationen geben (die werden später automatisch gefüllt) und als Aktionskript „Wiedergabeliste starten“ einfügen.

Nun solltet Ihr, wenn noch keine Wiedergabelisten im Squeezeserver vorhanden sind, im Squeezeserver eine neue Wiedergabeliste nach euren Wünschen anlegen und speichern. Danach noch ein kurzer Reload des Webfronts, es reicht ein Klick auf einen unteren Reiter, und schon sollte die Wiedergabeliste in der entsprechenden Variable erscheinen und durch Klick auf Selbige gestartet werden.

Wie auch im vorherigen Post, achtet auf sämtliche Variablen oder Skripte, sie müssen entsprechend eurer IDs angepasst werden.

Update für IPS ab 2.4 beachten. http://www.ip-symcon.de/forum/f53/squeezebox-squeezeserver-skript-12934/index6.html#post115579

Wiedergabeliste_ab_2.4.zip (84.4 KB)

Wiedergabeliste_bis 2.3.zip (83.3 KB)

Hi,
habe da leider schon sehr früh eine Frage…

Wie erstelle ich denn die Register-Variable in Schritt drei?
Eine normale Variable ist das ja wohl nicht.

Dank und Gruß
Nicolai

wie eine Instanz: Objekt hinzufügen/Instanz hinzufügen / Haken „alle Module“ setzen und unter Hersteller „none“ rechts „Register Variable“ auswählen.,

Hallo Nicolai,

wie von Raketenschnecke :stuck_out_tongue: (super Name) beschrieben.

Den Haken alle „Alle Module“ braucht es nicht unbedingt.

RegVar.png

@werner,

stimmt, sehe ich auch gerade :stuck_out_tongue:

Hallo Werner,

funktioniert alles soweit perfekt nur bei den Wiedergabelisten komme ich nicht weiter. An welcher Stelle muss ich die Erweiterung des Auswertscriptes einfügen ? Komplett am Ende oder vor einer der Klammern ?

Die Liste wird aus der Box nicht an IPS übertragen und ich befürchte, dass ich in einem der Scripte einen Fehler habe.

danke

Thomas

Hallo Thomas,

muß mich gerade um ein anderes Problem kümmern.

Seit dem Update des SQS auf 7.5.3 hab ich ein paar kleinere Probleme. Melde mich wenn das System wieder stabil läuft.

Bis dahin, wenn es um die 3 Auswertungen geht die in das Auswertskript müssen dann am Ende, natürlich vor der ?>.

Hallo Werner!

Ich schiebe das Update der offiziellen Rel. 7.5.2 schon ne Weile vor mir her, weil ich noch die Beta 7.5.2 in Nutzung habe (Memoryleaks waren beseitigt)… nun ist die 7.5.3. offiziell released und Du berichtest von „kleineren Problemen“… darf ich erfahren, wo die Probleme bei Dir derzeit liegen?
Liegt das Thema eher hardware-(Firmware) oder softwarenahe?

Hallo nancilla,

Die 7.5.3 läuft soweit ich das seit gestern Abend beobachten konnte serverseitig und auch hardwareseitig ohne erkennbare Fehler.

Mein Problem liegt im Auslesen der Wiedergabelisten. Laut Changelog hat sich dort eigentlich nicht geändert aber es werden im Moment die Playlisten aus dem Squeezeserver nicht korrekt nach IPS in das Variablenprofil übertragen.

Muss morgen mal die Skripte checken.

Hallo noch mal,
also ich setze die 7.5.3 ohne jegliche Probleme ein…

Aber ich habe dafür ein anderes Problem. Habe alles soweit umgesetzt aber leider weiß ich nicht was sich bei dir hinter der Variable 43269 befindet und weiß daher nicht was ich eintragen soll.
Die Variable steht im Script „Wiedergabeliste starten“ in Zeile 50.
Kann mir das irgendwie auch nicht ausm Kontext herleiten…

Die Steuerung funktioniert bei mir auch noch nicht aber das bekomm ich schon noch hin :wink:

Ich danke dir auf jeden Fall vielmals dass du uns deine Scripts samt Anleitung zur Verfügung gestellt hast!
Das ganze werd ich mir nur noch etwas umbauen weil ich das wenig praktikabel finde jede Variable zig mal eingeben zu müssen.
Aber gut das ist wohl einfach alles so gewachsen nehme ich an.

LG
Nicolai

Hallo Nicolai,

könntest Du hier mal den Skriptauszug einstellen.

Bin den ganzen Tag unterwegs und komme nicht an mein IPS.

Das ganze werd ich mir nur noch etwas umbauen weil ich das wenig praktikabel finde jede Variable zig mal eingeben zu müssen.
Aber gut das ist wohl einfach alles so gewachsen nehme ich an.

Ja so ist das mit den gewachsenen Skripten. Mal sehen ob ich mal dazukomme das zu automatisieren.

Hi Werner,
gerne. Habe zu Testzwecken mal alles mögliche ausprobiert und jetzt steht die Playlist drinnen. Die hat damit zwar nichts zu tun aber gestern wars wohl schon spät als ich rum probiert habe :wink:


	// ==========================================================
	// Wiedergabeliste starten und Meldung an Webfront
	// ==========================================================

	$cmd = "playlist loadtracks playlist.id=";
	$SQ_Playlist = IPS_GetVariableProfile(".SQ_Playlist");                       // Variablenprofil in Array schreiben
	$SQ_Playlist_ID = $SQ_Playlist['Associations'][$IPS_VALUE-1]['Icon'];        // Playlist.ID aus der Spalte Icon holen


   CSCK_SendText(SqueezeServer, $box. " ". $cmd . $SQ_Playlist_ID . chr(13));
	WFC_SendNotification(43611, "Playlist", $SQ_Playlist['Associations'][$IPS_VALUE-1]['Name']." wird im $boxname gestartet.", "Speaker", 5);

Hi,

ich habs mal andersrum gemacht als sonst: esrt die Software (Werners Squeezebox-Lösung) eingebaut und dann die Hardware gekauft :slight_smile: Mit anderen Worten: Squeezebox ist für mich relativ neu - und ich hab auch glkeich ein

Problem für Euch:
nach Installation des Squeezebox-Servers (Version: 7.5.3 - r31792 ) und Verküpfung mit einer Squeezebox „Schlafzimmer“ klappt die Kommunikation zwischen Server und Squeezebox perfekt. Nur mit IPS scheints nicht zu klappen. Das Auswertescript wird bei Änderungen an der Box oder im SQ-Server nicht getriggert (müsste es doch, - um die IPS-Variablen zu aktualisieren?), noch scheinen Befehle aus dem WFE an die Box zu gehen.

Hat jemand eine Idee oder einen Tipp wie ich das Problem eingrenzen kann?

Was hab ich bisher gemacht?
Scripte, Variablen (Variablen alle in einem Unterordner „Schlafzimmer“), Cutter, Register-Variable und ClientSocket nach Werners Anleitung erstellt und konfiguriert,
alle Variablen in den Scripts durch meine Variablen ersetzt, MAC-Adresse im Include-Schript für „Schlafzimmer“ angepasst, im Auswertescript und Steuerscript „Wohnzimmer“ gegen „Schlafzimmer“ getauscht (die Box heisst auch „Schlafzimmer“).

Was mir noch nicht ganz klar ist:

  • [li]muss dann für jede Box jeweils ein Auswerte- und Steuerscript angelegt und auf die Box angepasst werden?
    [/li][li]werden die Variablen für jede Box neu angelegt (innerhalb dazugehöriger Kategorieen)?
    [/li]

Nachtrag: muss auf dem Squeezebox-Server noch irgend ein Plugin Installiert werden?

Befehlszeilenschnittstelle (CLI) muss aktiv sein und Port sollte übereinstimmen

Was siehst du im Debug?

Stellt sich die erste Frage…

…kommt am ClientSocket bzw. der Registervarialbe etwas an. Begriff DEBUG ist hier dein Freund.

Des Weiteren wären die Einstellung im ClientSocket interessant. Es hört sich an als ob da nichts ankommt und auch nicht rausgeht.

Könntest Du die Infos mal per Grafik nachliefern.

Bezüglich weiterer Boxen: Ja je Box habe ich eine Kategorie in der die entsprechenden Variablen sind (siehe aufgeklappten Baum, das sind nur 4 Boxen). Diese sind alle in einem Ordner der nicht im Webfront zu sehen ist. Das was sichtbar sein soll verlinke ich dann in einen sichtbaren Bereich.

P.S. Damit IPS vom Server was empfangen kann muss einmal der Versand per Sendeskript klappen, dort steht nämlich der magische „listen 1“ drin der den Server dazu bewegt auch nach Aussen zu rufen.

P.S.S. Ich habe euch gewarnt das es eine Worklife-Version ist die nicht sehr installationsfreudig ist :smiley:

CSK.png

Hi Ralf,

ich hab das auf dem SQ-Server gecheckt: die CLI-Schnittstelle ist aktiv, Port ist auch korrekt (9090).
hab mal eben folgenden Befehl abgesetzt:


$box1_mac = '00:04:20:28:12:C2';
$squeeze_clientsocket = 19143;

CSCK_SendText($squeeze_clientsocket, $box1_mac.' playlist play '.rawurlencode('http://streams.br-online.de/bayern3_2.asx').chr(13));

Im Debug (Client Socket) kommt folgendes:


26.01.2011 18:38:32.00 |          TRANSMITTED | 00:04:20:28:12:C2 playlist play http%3A%2F%2Fstreams.br-online.de%2Fbayern3_2.asx

26.01.2011 18:38:32.00 |             RECEIVED | 00%3A04%3A20%3A28%3A12%3AC2 playlist play http%3A%2F%2Fstreams.br-online.de%2Fbayern3_2.asx

Nachtrag: hier noch ein Debug nachdem ich „Pause“ im WFE geclickt habe:


26.01.2011 18:43:33.00 |          TRANSMITTED | 00:04:20:28:12:C2 listen 1

26.01.2011 18:43:33.00 |          TRANSMITTED | 00:04:20:28:12:C2 button pause

26.01.2011 18:43:33.00 |             RECEIVED | 00%3A04%3A20%3A28%3A12%3AC2 listen 1

26.01.2011 18:43:33.00 |             RECEIVED | 00%3A04%3A20%3A28%3A12%3AC2 button pause

OK. Senden geht.

Schick per Skript mal ein „listen 1“ an den Server.

$squeeze_clientsocket = 19143;
$cmd = "listen 1";
CSCK_SendText($squeeze_clientsocket, $box." ".$cmd.chr(13));

OK. Kommt der Recieve-Teil auch im Debug der Registervariable an?

GEFUNDEN!

die MAC-Adresse ist case-sensitive!

statt ‚00:04:20:28:12:C2‘

hab ich nun ‚00:04:20:28:12:c2‘ eingesetzt und es klappt!