Squeezebox / Squeezeserver Skript

Hallo,

ich versuche mich gerade an den Skript, aber irgend was mache ich falsch, beim Ausführen im WF bekomme ich eine Fehlermeldung „Fehler“ und in der Verwaltungskonsole dieses:

IPS 2.6 beta

Gruß
Frank

IPS sagt, es kennt die Variable „$_IPSVALUE“ nicht. Aus der Hüfte geschossen würde ich sagen: IPS hat da Recht.

:smiley:
Nachtrag: die Doku kennt die variable übrigens auch nich: http://www.ip-symcon.de/service/dokumentation/konzepte/skripte/systemvariablen/

Da hat RS wieder mal recht.

Ich denke es handelt sich um das Auswerteskript und Zeile 4 sollte folgendermaßen aussehen.

$antwort = $_IPS['VALUE'];

Hi, erstmals 1000 Dank an alle, die am Script mitgewirkt haben. Läuft nun endlich nach ziemlich genau 24h. :slight_smile:
Ich war absoluter Squeezebox Neuling. Habe mir gestern eine Touch gekauft.
(IPS-Version 2.5)

Kurz ein paar Bemerkungen am Rande. Also wobei ich Probleme hatte.

– Also ich dachte anfangs das am Squeezebox Server der Port 9000 ist, weil dort das Webinterface lauft. Stimmt nicht
die CLI (Command Line Interface) sitz auf Port 9090.
– Der Cutter liegt unter „Splitter Instanzen“ und beim eintragen des Trennzeichen „0D“ auf Setzen klicken!
– Der Client Socket liegt unter „I/O Instanzen“ und ist bei mir fix geöffnet. (Hacken bei Socket öffnen.)
– Beim Wiedergabeliste_starten.php Script muss bei „case“ die Variable des „Wiedergabelisten Badezimmer“ rein. Das ist irgendwie nirgends gestanden. Vielleicht hilft es ja anderen.

Hier mal eine kurze Tabelle von den Variablen. Zu Beitrag 1 und 2. Wobei ich nur eine Squeezebox besitze.


----Musik Badezimmer
--akt. Position........String......Profil=Keine...........Aktion=Keine
--akt. Position........Float.......Profil=Keine...........Aktion=Keine
--Aktueller Titel......String......Profil=~Textbox........Aktion=Keine
--Cover................String......Profil=~HTMLBox........Aktion=Keine
--Länge................String......Profil=Keine...........Aktion=Keine
--Länge................Float.......Profil=Keine...........Aktion=Keine
--MAC..................String......Profil=Keine...........Aktion=Keine
--Position.............String......Profil=~HTMLBox...........Aktion=Keine
--Position Neu.........Integer.....Profil=.SQ_Slider......Aktion=Steuerskript (Beitrag 153)
--Power................Boolean.....Profil=~Switch.........Aktion=Steuerskript
--Steuerung............Integer.....Profil=.Squeeze_Status....Aktion=Steuerskript....Assozia=5
--Volume...............Integer.....Profil=.SQ_Volume.100.....Aktion=Steuerskript
--Wiederholung.........Integer.....Profil=.Squeeze_Wiederh...Aktion=Steuerskript....Assozia=3
--Zufallswiedergabe....Integer.....Profil=.Squeeze_Wiederh...Aktion=Steuerskript....Assozia=3
----Wiedergabelisten
--Wiedergabelisten Badezimmer....Integer.....Profil=.SQ_Playlist...Aktion=Wiedergabeliste_starten.php
----Wiedergabelisten Inhalte
--Wiedergabelisten (Rohdaten)....String......Profil=Keine..........Aktion=Keine
--Wiedergabelisten Badezimmer....String......Profil=~HTMLBox.......Aktion=Keine

So nun brauch ich mal ne kleine Pause.
PS: Hoffe ich hab mich in der Liste nicht geirrt, werde noch ein bisschen was ändern wenn ich dazu komme. Und eventuell noch ein paar Fotos hinzufügen.

– Nu eine Frage habe ich noch zu (–Position…String…Profil=~HTMLBox…Aktion=Keine).
Wo kommt der Wert her, bzw was steht eigentlich drinnen. Meine Variable ist leer und bleibt leer. :wink: Aber es funktioniert alles wunderbar. Konnte die Var im Auswerteskript finden bei den Sliders. Wobei ich nicht weiß wo der unterschied zwischen slider und slider2 ist.

Hi Kanne.

Fein das die komplizierte Installation soweit geklappt hat.

Deine Übersicht der Variablem nebst Profilen und Actionsskript ist gut.

Bzgl. deiner Frage

Nu eine Frage habe ich noch zu (–Position…String…Profil=~HTMLBox… …Aktion=Keine).
Wo kommt der Wert her, bzw was steht eigentlich drinnen. Meine Variable ist leer und bleibt leer. :wink: Aber es funktioniert alles wunderbar. Konnte die Var im Auswerteskript finden bei den Sliders. Wobei ich nicht weiß wo der unterschied zwischen slider und slider2 ist.

Die kannst Du eigentlich löschen, diese wurde zu Testzwecken bzgl. eines Slider mit Uhrzeit eingebaut da die IPS-eigene Slider nur Prozente anbietet. Letztendlich habe ich den IPS-Slider wegen Klickbarkeit trotzdem benutzt. Mit den %-Werten muss man halt leben.

bis zur 2.5 scheint dies aber wohl zu gehen, aber ab der 2.6 nicht mehr?

habe mich mal ein wenig an den Skripten versucht, die Box lässt sich auch steuern, aber es kommt im WF imer noch eine Meldung die sich Fehler nennt, aber ohne weiteren Inhalt außer der Uhrzeit.

Hier mal mein Auswerteskript

<?
include "47202.ips.php";  // Squeezefunktions-Sammlung und Variablendefinitionen

$antwort = $_IPS['VALUE'];
$array = explode ( ' ', $antwort ); // Antwortstring in Array umwandeln
$array[0] =  urldecode ( $array[0] ); // MAC in lesbares Format umwandeln

// Variablen aus der RegVar in die entsprechenden Variablen von IPS eintragen


// =============================
// SqueezeBox Radio Schlafzimmer
// =============================

if($array[0] == Schlafzimmer) {          // Schlafzimmer

	// Powertaste bei Änderung aktualisieren
	if($array[1] == 'power') {
		if ($array[2] == 1) {
			SetValue(28022 /*[Squeezbox\Schlafzimmer\Power]*/, true);
		} else {
			SetValue(28022 /*[Squeezbox\Schlafzimmer\Power]*/, false);
		}
	SetValue(11411 /*[Squeezbox\Schlafzimmer\MAC]*/, $array[0]); //MAC in Variable
	}

	//Lautstärke bei Änderung aktualisieren
	if($array[1]=='prefset' and $array[3]=='volume') {
		SetValue(21197 /*[Squeezbox\Schlafzimmer\Volume]*/, urldecode($array[4]));
		SetValue(11411 /*[Squeezbox\Schlafzimmer\MAC]*/, $array[0]); //MAC in Variable
	}

	// Repeat bei Änderung aktualisieren
	if($array[1]=='prefset' and $array[3]=='repeat') {
		SetValue(33707 /*[Squeezbox\Schlafzimmer\Wiederholung]*/, $array[4]);
	}

	// Shuffle bei Änderung aktualisieren
	if($array[1]=='prefset' and $array[3]=='shuffle') {
		SetValue(50349 /*[Squeezbox\Schlafzimmer\Zufallswiedergabe]*/, $array[4]);
	}

	//Titel-Tag aktualisieren
	if($array[1]=='playlist' and $array[2]=='newsong') {
		SetValue(15643 /*[Squeezbox\Schlafzimmer\Aktueller Titel]*/ , utf8_decode(urldecode($array[3])));
		SetValue(11411 /*[Squeezbox\Schlafzimmer\MAC]*/ , $array[0]); //MAC in Variable
	    SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 2); // Button auf play
  		cover(Schlafzimmer, 33854 /*[Squeezbox\Schlafzimmer\Cover]*/); // Cover anzeigen

		// Subscripe auf entsprechende Box für Anzeige des Laufzeitbalkens
		$box = Schlafzimmer;
        $cmd = "status - 1 subscribe:2";
		CSCK_SendText(SqueezeServer, $box." ".$cmd.chr(13));

	}

	// Steuerungstasten im Webfront aktualisieren
	if($array[1]=='play') {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 2);
	}
	if($array[1]=='stop') {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 0);

		// Subscribe ausschalten
		$box = Schlafzimmer;
        $cmd = "status - 1 subscribe:0";
		CSCK_SendText(SqueezeServer, $box." ".$cmd.chr(13));
	}
	if($array[1]=='pause' and $array[2]==1) {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 1);

		// Subscribe ausschalten
		$box = Schlafzimmer;
        $cmd = "status - 1 subscribe:0";
		CSCK_SendText(SqueezeServer, $box." ".$cmd.chr(13));
	}

	if($array[1]=='pause' and $array[2]==0) {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 2);
		$box = Schlafzimmer;
        $cmd = "status - 1 subscribe:2";
		CSCK_SendText(SqueezeServer, $box." ".$cmd.chr(13));
	}
	if($array[1]=='button' and $array[2]=='jump_rew') {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 4);
	}
	if($array[1]=='button' and $array[2]=='jump_fwd') {
	   SetValue(11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/, 3);
	}
	if($array[1]=='status' and $array[4]=='subscribe%3A2') {
		foreach($array as $item)
		{
			$item = utf8_decode(urldecode($item));
			$chunks = explode(":", $item);
			if($chunks[0] == "time")
			{
				SetValue(45906 /*[Squeezbox\Schlafzimmer\akt. Position]*/, date('i:s', $chunks[1]));
				SetValue(31806 /*[Squeezbox\Schlafzimmer\akt. Position]*/, sprintf('%01.0f', $chunks[1]));
			}
			if($chunks[0] == "duration")
			{
				SetValue(38451 /*[Squeezbox\Schlafzimmer\Länge]*/, date('i:s', $chunks[1]));
				SetValue(52011 /*[Squeezbox\Schlafzimmer\Länge]*/, sprintf('%01.0f', $chunks[1]));
			}
			if(GetValue(38451 /*[Squeezbox\Schlafzimmer\Länge]*/) !== "00:00") {
			    //slider(34996 /*[Objekt #34996 existiert nicht]*/, 100/GetValue(12610 /*[Objekt #12610 existiert nicht]*/)*GetValue(37989 /*[Objekt #37989 existiert nicht]*/), GetValue(40778 /*[Daten\KNX\Bergstrasse 1a EG\Rollo\Rollo Stop Küche 2]*/), GetValue(30117 /*[Objekt #30117 existiert nicht]*/));
				slider2(10256 /*[Squeezbox\Schlafzimmer\Position Neu]*/, 100/GetValue(52011 /*[Squeezbox\Schlafzimmer\Länge]*/)*GetValue(31806 /*[Squeezbox\Schlafzimmer\akt. Position]*/));
			}
		}

	}
}


?>

und das Steuerskript

<<?

include "47202.ips.php";      // Squeezefunktions-Sammlung

$box = Schlafzimmer;

if($_IPS['SENDER'] == "WebFront")
{
   SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	SqueezeInit(Schlafzimmer);
}


if($_IPS['VARIABLE'] == 28022 /*[Squeezbox\Schlafzimmer\Power]*/) {
	SqueezePower(Schlafzimmer, $_IPS['VALUE']);
}

if($_IPS['VARIABLE'] == 21197 /*[Squeezbox\Schlafzimmer\Volume]*/) {
	SqueezeVolume(Schlafzimmer, $_IPS['VALUE']);
}

if($_IPS['VARIABLE'] == 11547 /*[Squeezbox\Schlafzimmer\Steuerung]*/) {

	switch($_IPS['VALUE']) {

	   case 0:
	      SqueezeButton(Schlafzimmer, 'stop');
		break;
		case 1:
		   SqueezeButton(Schlafzimmer, 'pause');
		break;
		case 2:
		   SqueezeButton(Schlafzimmer, 'play');
		break;
		case 3:
		   SqueezeButton(Schlafzimmer, 'jump_fwd');
		break;
		case 4:
		   SqueezeButton(Schlafzimmer, 'jump_rew');
		break;
	}
}

if($_IPS['VARIABLE'] == 33707 /*[Squeezbox\Schlafzimmer\Wiederholung]*/) {
	   $cmd = " playlist repeat".$_IPS['VALUE'];
		CSCK_SendText(SqueezeServer,$box." ".$cmd.chr(13));
}

if($_IPS['VARIABLE'] == 50349 /*[Squeezbox\Schlafzimmer\Zufallswiedergabe]*/) {
      $cmd = " playlist shuffle".$_IPS['VALUE'];
		CSCK_SendText(SqueezeServer,$box." ".$cmd.chr(13));
}


?>

Gruß

Frank

wenn du " $IPS_VALUE" geschrieben hättest, hätte ich dir geglaubt :smiley: Mitunter hilft ein Blick in das Changelog, wenn sich die Software-Version ändert.

OK, gebe mich ja geschlagen, das wahr wohl ein Fehler von mir, der sich beim rückgängigmachen der Schreibweise von

„$_IPS[‚VALUE‘]“ zurück zu " $IPS_VALUE" eingeschlichen hat. dies habe ich aber auch nur gemacht nachdem diese blöde Meldung immer noch kommt:

Unbenannt.png

Gruß

Frank

Was führst Du eigentlich genau aus?

Ein Klick auf einen Button im WFE, oder das Auswerteskript?

Guten Morgen,

einen Klick auf ein Button im WFE

nochmal kurz zusammengefasst: Du baust einen Fehler in ein funktionierendes Script ein, suchst hier im Forum Hilfe - ohne diese Änderung zu erwähnen - und meinst nun, dass es an der IPS-Version liegt?

Ich wette mit dir, dass beide Schreibweisen ($IPS_Value und $_IPS[‚VALUE‘] ) in der 2.6 und in der 2.5 funktionieren (Changelog 2.5: http://www.ip-symcon.de/service/dokumentation/installation/migration-v24-v25/). Du wirst als bei deinen Änderungen noch irgend etwas geändert haben müssen, was jetzt zu dem Fehler führt.

Bei deinem Steuerskript sehe ich in Zeile 1

<<?

Das sollte so nicht sein.

Danke!!!
Das war der Fehler.

Gruß

Frank

Seitdem ich auf 2.6 Upgedatetet habe , habe ich Probleme mit Durchsagen auf meinem Squeezebox Radio. Ich habe alles genau so gemacht wie umten beschrieben , und es hat auch immer super klappt. Dann habe ich es länger nicht eingesetzt. Und jetzt habe ich das problem daher denke ich das mit dem Update Zutun hat. die Durchsagen werden wiederholt . Zum Beispiel ich will „hallo“ ausgeben und es kommt " hallo Hallo hal" oder bei längeren Durchsagen werden
Die Sätze mal nur halb wieder geben oder zweimal wiederholt.

Ich habe schon mit dem Offset Wert rum gespielt . Das ist aber nicht die Lösung. Ich habe einmal in den Ereignis Meldungen irgendwas vom "undefined Variable playtime " gelesen oder so ähnlich. Finde es aber nicht wieder .

Kann irgendjemand das bestätigen oder mir eine Lösung nennen.

Hallo Mastershort,

muss ich mir beizeiten mal ansehen, nutze es derzeit selbst nicht :smiley:

Hat mir keine Ruhe gelassen :rolleyes:

Habe den Testaufruf, so wie er im 2. Skript steht, gerade getestet, und der lief einwandfrei durch.

Wie erzeugst Du denn die wiederzugebende Sounddatei? So wie beschrieben mit TTS_GenerateFile() ?

Falls dies der Fall ist spiele diese Datei, liegt in dem Pfad der dort angegeben ist, mit deinem bevorzugten Mediaplayer ab. Die Ausgabe-Routine für die Squeezebox macht ja nichts anderes als die Sounddatei wiederzugeben.

Ich nutze zwar Werners Funktion nicht, da ich eine Eigenkreation betreibe, aber dieses Problem hatte ich glaube auch mal.
Da lag es daran das repeat an war.
Probiere mal vor der Sprachausgabe:


$cmd = " playlist repeat 0";
CSCK_SendText($id_sqb_client_socket, $box." ".$cmd.chr(13));

Danach kannst Du das ja zurücksetzen.

Danke Thomas das war der Richtige Input

Da ich in der Wiedergabeliste nur Radio Sender drin habe , habe ich den Schalter Wiederholung nicht beachtet.
Der Stand auf „Titel“ . Muss aber einfach nur auf „Aus“ stehen . Dann funktioniert auch die Durchsage Richtig.

Danke

Falls dies der Fall ist spiele diese Datei, liegt in dem Pfad der dort angegeben ist, mit deinem bevorzugten Mediaplayer ab. Die Ausgabe-Routine für die Squeezebox macht ja nichts anderes als die Sounddatei wiederzugeben.

Das war genau was mich so gewundert hatte Werner. Die abgelegte Datei war genau so wie ich sie erzeugen wollte. Daher war es so merkwürdig.

Hätte ich mir wieder zwei Schlaflose Nächte sparen können. :slight_smile:

Ich frage manchmal auch zu spät :slight_smile:

Werde aber die Funktion entsprechend erweitern damit er beim Abspielen den Repeat ausschaltet und anschließend wieder einschaltet.

Danke Thomas für den Hinweis.

Hätte ich mir wieder zwei Schlaflose Nächte sparen können. :slight_smile:

Da werde ich wohl demnächst auch ohne IPS einige haben wenn meine Kleine auf die Welt kommt.:slight_smile: