Es gibt ja schon einige Scripts für die Box.
Hier mal ein kleines Script, welches die Box über Webfront, Fernbedienung einfach steuert.
Ganz simpel gehalten. 4 Variablen, Clientsocket auf Port 9090 und eine Registervariable, mehr wird nicht gebraucht.
Das Steuerscript kann von überall über include eingebunden werden. Das Steuerscript enthält die Steuerung und Auswertung der Box.
Functionsscript:
<?
define('mediaserver', 37859 /*[Mediaserver Squezzebox]*/); // Client Socket
#############################Funktionen#########################################
//Box init
function SqueezeInit($box)
{
$chr = "listen 1";
return CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
//Kurzwahltasten 1-6
function SquezzePresetButton($box, $button)
{
$chr = "button preset_".$button.".single";
CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
//Textmeldungen an Box senden
function SquezzeDisplay($box, $text, $time)
{
$chr = "display ".rawurlencode($text)." ".$time;
CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
//Playlist über Url
function SqueezePlayUrl($box, $url)
{
$chr = "playlist play ".$url;
CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
//Box Ein/Ausschalten
function SqueezePower($box, $switch)
{
$chr = "power ";
$chr .= $switch ? 1:0;
CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
//Variablen setzen
function SquezzeSetValue($varID, $value)
{
SetValue($varID, $value);
}
//Box Lautstärke
function SqueezeVolume($box, $vol)
{
$chr = "mixer volume ".$vol;
CSCK_SendText(mediaserver, $box." ".$chr.chr(10));
}
############################Ende Funktionen#####################################
?>
Steuerscript:
<?
include 'funcSquezzebox.ips.php';
//MAC-Adressen Boxen
$wohnzimmer = '00:04:20:2a:1c:84'; //MAC-Adresse muss klein geschrieben werden!
$buero = '00:04:20:2a:1c:7f';
######################Steuerung über Webfront###################################
if($_IPS['SENDER'] == "WebFront")
{
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
switch($_IPS['VARIABLE'])
{
case 28831:
SqueezePower($wohnzimmer, $_IPS['VALUE']);
if(!$_IPS['VALUE']) SetValue(26151 /*[Squezzeboxen\Wohnzimmer\Titel]*/, "");
break;
case 31761:
SqueezeVolume($wohnzimmer, $_IPS['VALUE']);
break;
case 21020:
SqueezePower($buero, $_IPS['VALUE']);
if(!$_IPS['VALUE']) SetValue(59823 /*[Squezzeboxen\Büro\Titel]*/, "");
break;
case 56095:
SqueezeVolume($buero, $_IPS['VALUE']);
break;
}
}
######################Ende Steuerung Webfront###################################
######################Aufruf über ein Script####################################
if($_IPS['SENDER'] == "RunScript")
{
if(GetValue(19357 /*[Etagen\Obergeschoss\Büro\Bewegungsmelder\Status]*/))
{
SqueezePower($buero, 1);
}
else
{
SqueezePower($buero, 0);
}
}
######################Ende Aufruf Script########################################
######################Daten von Squezzebox######################################
if($_IPS['SENDER'] == "RegisterVariable")
{
$mac = strstr(urldecode($_IPS['VALUE']), " ", true);
$value = trim(stristr(urldecode($_IPS['VALUE']), " "));
if(strpos($value, "playlist newsong") !== false)
{
$befehl = substr($value, 0, 16);
$play = substr(utf8_decode($value), 16);
if(strrpos($play, "0") !== false)
{
$sender = substr($play, 0, -1);
if($mac == $wohnzimmer) SetValue(25596 /*[Squezzeboxen\Wohnzimmer\Sender]*/, $sender." # ");
if($mac == $buero) SetValue(57152 /*[Squezzeboxen\Büro\Sender]*/, $sender." # ");
}
else
{
$titel = $play;
}
}
else
{
$data = strrchr($value, " ");
$befehl = substr($value, 0, -strlen($data));
}
switch($befehl)
{
case "prefset server power":
if($mac == $wohnzimmer) SetValue(28831 /*[Squezzeboxen\Wohnzimmer\Power]*/, (int)$data);
if($mac == $buero) SetValue(21020 /*[Squezzeboxen\Büro\Power]*/, (int)$data);
break;
case "prefset server volume":
if($mac == $wohnzimmer) SquezzeSetValue(31761 /*[Squezzeboxen\Wohnzimmer\Volume]*/, (int)$data);
if($mac == $buero) SetValue(56095 /*[Squezzeboxen\Büro\Volume]*/, (int)$data);
break;
case "playlist newsong":
if(!isset($titel)) $titel = "";
if($mac == $wohnzimmer) SquezzeSetValue(26151 /*[Squezzeboxen\Wohnzimmer\Titel]*/, GetValue(25596 /*[Squezzeboxen\Wohnzimmer\Sender]*/).$titel);
if($mac == $buero) SetValue(59823 /*[Squezzeboxen\Büro\Titel]*/, GetValue(57152 /*[Squezzeboxen\Büro\Sender]*/).$titel);
break;
}
}
##########################Ende Daten von Squezzebox#############################
###################Steuerung über Homematic Fernbedienung#######################
if($_IPS['SENDER'] == "Variable")
{
$state = (int)GetValue(28831 /*[Squezzeboxen\Wohnzimmer\Power]*/);
switch($_IPS['VARIABLE'])
{
case 59720: // Taste Ein
if(!$state)
{
SetValue(28831 /*[Squezzeboxen\Wohnzimmer\Power]*/, true);
SqueezePower($wohnzimmer, true);
SqueezeVolume($wohnzimmer, 25);
}
break;
case 47423: // Taste Aus
if($state)
{
SetValue(28831 /*[Squezzeboxen\Wohnzimmer\Power]*/, false);
SqueezePower($wohnzimmer, false);
}
break;
case 46102: // Taste leiser
$vol = GetValue(31761 /*[Squezzeboxen\Wohnzimmer\Volume]*/);
if($vol == 0) return;
SqueezeVolume($wohnzimmer, $vol -= 5);
SetValue(31761 /*[Squezzeboxen\Wohnzimmer\Volume]*/, $vol);
break;
case 24537: // Taste lauter
$vol = GetValue(31761 /*[Squezzeboxen\Wohnzimmer\Volume]*/);
if($vol <0) $vol = 0;
SqueezeVolume($wohnzimmer, $vol += 5);
SetValue(31761 /*[Squezzeboxen\Wohnzimmer\Volume]*/, $vol);
break;
case 10903:
SquezzePresetButton($wohnzimmer, 1); //FFH
break;
case 19109:
SquezzePresetButton($wohnzimmer, 2); //Radio Paloma
break;
}
}
#########################Ende Steuerung Fernbedienung###########################
?>