hier noch mal das ganze Script.
Unten werden die Variablen geschrieben.
//Onkyo lesesktipt
$data=$IPS_VALUE;
$maincat = substr($data,0,3); //Eventidentifikation
//$zonecat= substr($data,0,1); //Zoneneventidentifikation
switch($maincat)
{
case "PWR": //MainPower
$item = "Power";
$vtype = 0;
if ($data == "PWR01")
{
$value = true;
}
if ($data == "PWR00")
{
$value = false;
}
OnkyoSetValue($item, $value, $vtype);
break;
case "MVL": //Mastervolume
// if (substr($data,3) =="MAX")
// {
// }
// else
// {
$item = "MasterVolume";
$vtype = 2; //2
$itemdata=substr($data,3); // hier kommt hex raus
$value = hexdec ($itemdata); //hex in dec
// $valuetemp = hexdec ($itemdata); //hex in dec
// $valuetemp=str_pad ( $valuetemp, 3, "0" ); // 0 anhängen
// $value = (intval($valuetemp)/10) -82; // in db umrechnen
// }
OnkyoSetValue($item, $value, $vtype);
// }
break;
case "AMT": //MainMute
$item = "MainMute";
$vtype = 0;
if ($data == "AMT01")
{
$value = true;
}
if ($data == "AMT00")
{
$value = false;
}
OnkyoSetValue($item, $value, $vtype);
break;
case "IFA":
$item = "Display audio";
$vtype = 3;
$itemdata=substr($data,3);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "IFV":
$item = "Display video";
$vtype = 3;
$itemdata=substr($data,3);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SLI": //Source Input
$item = "MainInput";
$vtype = 3;
$itemdata=substr($data,3);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "PRS": //Tuner Input
// if (substr($data,3) =="MAX")
// {
// }
// else
// {
$item = "TunerInput";
$vtype = 2; //2
$itemdata=substr($data,3); // hier kommt hex raus
$value = hexdec ($itemdata); //hex in dec
// $valuetemp = hexdec ($itemdata); //hex in dec
// $valuetemp=str_pad ( $valuetemp, 3, "0" ); // 0 anhängen
// $value = (intval($valuetemp)/10) -82; // in db umrechnen
// }
OnkyoSetValue($item, $value, $vtype);
// }
break;
case "SV": //Video Select
$item = "Video Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "LMD": //Surroound
$item = "Surround Mode";
$vtype = 3; //3
$itemdata=substr($data,3);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "DC": //Digital Input Mode
$item = "Digital Input Mode";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SD": //Input Mode
$item = "Input Mode";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SR": //Record Selection
$item = "Record Selection";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "VS": //Videosignal
$vssub=substr($data,2,2);
switch($vssub)
{
case "MO": //HDMI Monitor
$item = "HDMI Monitor";
$vtype = 3;
$itemdata=substr($data,5);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "AS": //Aspect
$item = "Aspect";
$vtype = 3;
$itemdata=substr($data,5);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SC": //Scaler
$item = "Scaler";
$vtype = 3;
$itemdata=substr($data,4);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
}
break;
case "LMD": //Sound
$pssub=substr($data,3,2);
switch($pssub)
{
case "TO": //Tone Defeat
$item = "ToneDefeat";
$vtype = 0;
if ($data == "PSTONE DEFEAT ON")
{
$value = true;
}
if ($data == "PSTONE DEFEAT OFF")
{
$value = false;
}
OnkyoSetValue($item, $value, $vtype);
break;
case "CI": //Cinema EQ
$item = "Cinema EQ";
$vtype = 0;
if ($data == "PSCINEMA EQ.ON")
{
$value = true;
}
if ($data == "PSCINEMA EQ.OFF")
{
$value = false;
}
OnkyoSetValue($item, $value, $vtype);
break;
case "SB": //Suround Back Mode
$item = "Suround Back Mode";
$vtype = 3;
$itemdata=substr($data,5);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "RO": //Room EQ Mode
$item = "Room EQ Mode";
$vtype = 3;
$itemdata=substr($data,10);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
}
break;
//Zone 2 Integration
case "Z": //Source Input
switch ($zonecat)
{
case "PHONO": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "CD": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "TUNER": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "DVD": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "HDP": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "TV/CBL": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SAT": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "VCR": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "DVR": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "V.AUX": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "NET/USB": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "USB": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "IPOD": //Source Input Z2
$item = "Zone2Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "ON": //Zone 2 ON
$item = "Zone2";
$vtype = 0;
$value = true;
OnkyoSetValue($item, $value, $vtype);
break;
case "OFF": //Zone 2 OFF
$item = "Zone2";
$vtype = 0;
$value = False;
OnkyoSetValue($item, $value, $vtype);
break;
case "MUON": //Zone 2 Mute ON
$item = "Zone2 Mute";
$vtype = 0;
$value = true;
OnkyoSetValue($item, $value, $vtype);
break;
case "MUOFF": //Zone 2 Mute OFF
$item = "Zone2 Mute";
$vtype = 0;
$value = False;
OnkyoSetValue($item, $value, $vtype);
break;
}
if (intval($zonecat) <100 and intval($zonecat) >9){
$item = "Zone2Volume";
$vtype = 2;
$itemdata=substr($data,2);
if ( $itemdata == "99")
{
$value = "";
}
else
{
$itemdata=str_pad ( $itemdata, 3, "0" );
$value = (intval($itemdata)/10) -80;
}
OnkyoSetValue($item, $value, $vtype);
}
break;
//Zone 3 Integration
case "Z3": //Source Input
switch ($zonecat)
{
case "PHONO": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "CD": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "TUNER": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "DVD": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "HDP": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "TV/CBL": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "SAT": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "VCR": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "DVR": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "V.AUX": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "NET/USB": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "USB": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "IPOD": //Source Input Z2
$item = "Zone3Input";
$vtype = 3;
$itemdata=substr($data,2);
$value = $itemdata;
OnkyoSetValue($item, $value, $vtype);
break;
case "ON": //Zone 2 ON
$item = "Zone3";
$vtype = 0;
$value = true;
OnkyoSetValue($item, $value, $vtype);
break;
case "OFF": //Zone 2 OFF
$item = "Zone3";
$vtype = 0;
$value = False;
OnkyoSetValue($item, $value, $vtype);
break;
case "MUON": //Zone 2 Mute ON
$item = "Zone3 Mute";
$vtype = 0;
$value = true;
OnkyoSetValue($item, $value, $vtype);
break;
case "MUOFF": //Zone 2 Mute OFF
$item = "Zone3 Mute";
$vtype = 0;
$value = False;
OnkyoSetValue($item, $value, $vtype);
break;
}
if (intval($zonecat) <100 and intval($zonecat) >9){
$item = "Zone3Volume";
$vtype = 2;
$itemdata=substr($data,2);
if ( $itemdata == "99")
{
$value = "";
}
else
{
$itemdata=str_pad ( $itemdata, 3, "0" );
$value = (intval($itemdata)/10) -80;
}
OnkyoSetValue($item, $value, $vtype);
}
break;
}
function OnkyoSetValue($item, $value, $vtype) //Function welche Variablen anlegt und updated
{
$OnkyoID = IPS_GetCategoryIDByName("Onkyo",0); //Prüft ob Hauptkategorie angelegt ist
if ($OnkyoID == 0)
{
$OnkyoID = IPS_CreateCategory();
IPS_SetName($OnkyoID, "Onkyo");
}
$itemID = IPS_GetVariableIDByName($item, $OnkyoID); //Prüft ob Variable vorhanden ist
if ($itemID ==0)
{
$itemID= IPS_CreateVariable($vtype); //Variable neu anlegen
IPS_SetName($itemID, $item);
IPS_SetParent($itemID, $OnkyoID);
}
switch($vtype) //Variable updaten
{
case 0: //Boolean
SetValueBoolean($itemID, $value);
break;
case 1: //Integer
SetValueInteger($itemID, $value);
break;
case 2: //Float
SetValueFloat($itemID, $value);
break;
case 3: //String
SetValueString($itemID, $value);
break;
}
}