Ich habe jetzt mal 2 kleine Scripte gebastelt, um die Steuerung und das Auslesen der Squeezeboxen zu erleichtern, um evtl. das ganze über vorhandene eDips zu realisieren.
Damit können sowohl die Daten zu den abgespielten Titel angezeigt werden, als auch die Box über Tasten des eDips ferngesteuert werden, wobei das Menu (Display der Box) dann auch wiederum in den eDips angezeigt werden kann, um das Navigieren aus der Ferne zu vereinfachen.
Ist nichts wirklich neues, aber vielleicht kann es jemand gebrauchen.
Script zum Abfragen von Informationen:
<?
// Abfragescript Box Schlafzimmer
// Trigger PlayListItem auf update
include("44008.ips.php"); //Configscript der Boxen
$MAC = $MAC_Box1;
//IPS_Sleep(500);
// Album abfragen
CSCK_SendText($ID_sqc, $MAC.' album ?'.chr(13));
IPS_Sleep(200);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
SetValue(54819 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Album]*/, vokal(str_replace('album ', '', strstr($result, 'album '))));
}
// Titel abfragen
CSCK_SendText($ID_sqc, $MAC.' title ?'.chr(13));
IPS_Sleep(70);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
SetValue(27231, vokal(str_replace('title ', '', strstr($result, 'title '))));
}
// Artist abfragen
CSCK_SendText($ID_sqc, $MAC.' artist ?'.chr(13));
IPS_Sleep(70);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
SetValue(50103 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Artist]*/, vokal(str_replace('artist ', '', strstr($result, 'artist '))));
}
// Genre abfragen
CSCK_SendText($ID_sqc, $MAC.' genre ?'.chr(13));
IPS_Sleep(70);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
SetValue(27838 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Genre]*/, vokal(str_replace('genre ', '', strstr($result, 'genre '))));
}
// Duration abfragen
CSCK_SendText($ID_sqc, $MAC.' duration ?'.chr(13));
IPS_Sleep(70);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
$Duration = str_replace('duration ', '', strstr($result, 'duration '));
$Duration = date("i:s", $Duration);
SetValue(16344 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Duration]*/, $Duration);
}
// Anzahl Playlist Tracks abfragen
CSCK_SendText($ID_sqc, $MAC.' playlist tracks ?'.chr(13));
IPS_Sleep(70);
$result = rawurldecode(GetValue($ID_RegVar_StringVar));
if (substr_count($result, $MAC) == 1) { //prüfen ob richtige MAC
SetValue(57576 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\PlayListTracks]*/, str_replace('playlist tracks ', '', strstr($result, 'playlist tracks ')));
}
// -----------------------------------------------------------------------------------
function vokal($text) {
$text = str_replace("Ä","Ä",$text); // Sonderzeicher definieren
$text = str_replace("ä","ä",$text);
$text = str_replace("Ö","Ö",$text);
$text = str_replace("ö","ö",$text);
$text = str_replace("%F6","ö",$text);
$text = str_replace("%FC","ü",$text);
$text = str_replace("Ãœ","Ü",$text);
$text = str_replace("ü","ü",$text);
$text = str_replace("ß","ß",$text);
return $text;
}
?>
… und zum steuern mit Rückgabe der Displayinformationen (trigger Stringvariable):
<?
include("44008.ips.php"); //Configscript der Boxen
$MAC = $MAC_Box1;
$Data = $IPS_VALUE;
// Daten extrahieren
$Data = explode("|", $Data);
$action = $Data[0];
$cmd1 = $Data[1];
$cmd2 = $Data[2];
$cmd3 = $Data[3];
switch ($action)
{
// Power|on/off
case "Power";
{
if ($cmd1 == 'off')
{
CSCK_SendText($ID_sqc, $MAC.' power 0 '.chr(13));
}
if ($cmd1 == "on")
{
CSCK_SendText($ID_sqc, $MAC.' power 1 '.chr(13));
}
}
break;
// Button|play,stop,pause,power,left,right,up,down,knop,ref,fwd,home,volup,voldown,preset1..6
case "Button";
{
If ($cmd1 == "play") CSCK_SendText($ID_sqc, $MAC.' button play.single'.chr(13));
If ($cmd1 == "stop") CSCK_SendText($ID_sqc, $MAC.' button stop'.chr(13));
If ($cmd1 == "pause") CSCK_SendText($ID_sqc, $MAC.' button pause.single'.chr(13));
If ($cmd1 == "power") CSCK_SendText($ID_sqc, $MAC.' button power'.chr(13));
If ($cmd1 == "left") CSCK_SendText($ID_sqc, $MAC.' button arrow_left'.chr(13));
If ($cmd1 == "right") CSCK_SendText($ID_sqc, $MAC.' button arrow_right'.chr(13));
If ($cmd1 == "up") CSCK_SendText($ID_sqc, $MAC.' button arrow_up'.chr(13));
If ($cmd1 == "down") CSCK_SendText($ID_sqc, $MAC.' button arrow_down'.chr(13));
If ($cmd1 == "knop") CSCK_SendText($ID_sqc, $MAC.' button knop_push'.chr(13));
If ($cmd1 == "rev") CSCK_SendText($ID_sqc, $MAC.' button rew.single'.chr(13));
If ($cmd1 == "fwd") CSCK_SendText($ID_sqc, $MAC.' button fwd.single'.chr(13));
If ($cmd1 == "home") CSCK_SendText($ID_sqc, $MAC.' button home'.chr(13));
If ($cmd1 == "volup") CSCK_SendText($ID_sqc, $MAC.' button volup'.chr(13));
If ($cmd1 == "voldown") CSCK_SendText($ID_sqc, $MAC.' button voldown'.chr(13));
If ($cmd1 == "preset1") CSCK_SendText($ID_sqc, $MAC.' button preset_1.single'.chr(13));
If ($cmd1 == "preset2") CSCK_SendText($ID_sqc, $MAC.' button preset_2.single'.chr(13));
If ($cmd1 == "preset3") CSCK_SendText($ID_sqc, $MAC.' button preset_3.single'.chr(13));
If ($cmd1 == "preset4") CSCK_SendText($ID_sqc, $MAC.' button preset_4.single'.chr(13));
If ($cmd1 == "preset5") CSCK_SendText($ID_sqc, $MAC.' button preset_5.single'.chr(13));
If ($cmd1 == "preset6") CSCK_SendText($ID_sqc, $MAC.' button preset_6.single'.chr(13));
}
break;
// Volume|0..100
case "Volume";
{
CSCK_SendText($ID_sqc, $MAC.' mixer volume '.$cmd1.chr(13));
}
break;
// Sleep|xx sec.
case "Sleep";
{
CSCK_SendText($ID_sqc, $MAC.' sleep '.$cmd1.chr(13));
}
break;
// Display|line1|line2|time(s)
case "Display";
{
CSCK_SendText($ID_sqc, $MAC." display ".rawurlencode($cmd1)." ".rawurlencode($cmd2)." ".$cmd3.chr(13));
}
break;
// Webradio|URL
case "Webradio";
{
CSCK_SendText($ID_sqc, $MAC.' playlist play '.rawurlencode($cmd1).chr(13));
}
break;
}
// Display Daten auswerten
CSCK_SendText($ID_sqc, $MAC.' display ? ?'.chr(13));
for ($i=0; $i<200; $i++) { // max. 2 Sekunden (200 x 10ms) auf Displaydaten warten
IPS_Sleep(10);
$string = GetValue($ID_RegVar_StringVar);
$data = explode(" ", $string);
if ((substr_count(rawurldecode($data[0]), $MAC) == 1) and ($data[1] == 'display')) { // prüfen ob Displaydaten und richtige MAC
$line1 = rawurldecode($data[2]);
$line2 = rawurldecode($data[3]);
SetValue(42364 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Squeezebox Steuerung\Display Line1]*/, vokal($line1));
SetValue(53401 /*[Programme\Squeezebox\Squeezebox Schlafzimmer\Squeezebox Steuerung\Display Line2]*/, vokal($line2));
break;
}
}
// ---------------------------------------------
function vokal($text) {
$text = str_replace("Ä","Ä",$text); // Sonderzeicher definieren
$text = str_replace("ä","ä",$text);
$text = str_replace("Ö","Ö",$text);
$text = str_replace("ö","ö",$text);
$text = str_replace("%F6","ö",$text);
$text = str_replace("%FC","ü",$text);
$text = str_replace("Ãœ","Ü",$text);
$text = str_replace("ü","ü",$text);
$text = str_replace("ß","ß",$text);
return $text;
}
?>