Der Inhalt ist auch falsch der sollte vom Skript gesetzt werden. Es soll nur in PioneerAVR_Const und PioneerAVR Inhalt reinkopiert werden.
Achte beim include darauf das die Dateinamen richtig angegeben sind wenn Du diese nicht umbenannt hast dann lauten diese xxxxx.ips.php xxxxx ist die Objekt ID des Skripts.
Ansonsten nimm noch mal dies Skript und achte drauf das ganz oben auch der Webfront angegeben wird. Dieser kann so wie im Skript ursprünglich angegeben nicht gefunden werden sobald der User den Webfront umbenannt haben sollte.
<?
//ID des Webfront ermitteln
$ID_WebFront = 33420 /*[WebFront]*/; // Id Webfront eintragen
$IP_HOST="192.168.0.48";
/* //was für Module gibt es?
foreach(IPS_GetModuleList() as $guid)
{
$module = IPS_GetModule($guid);
echo $module['ModuleName']." = ".$guid."
";
}
*/
$object = IPS_GetObject($IPS_SELF);
$parentID = $object['ParentID'];
// dummy instanz erstellen
$ID_INSTANZ= IPS_CREATEINSTANCE("{485D0419-BE97-4548-AA9C-C083EB82E61E}");
IPS_SetParent($ID_INSTANZ, $parentID);
IPS_SETName($ID_INSTANZ,"AV Reciever");
// cutter instanz erstellen
$ID_INSTANZ_CUTTER= IPS_CREATEINSTANCE("{AC6C6E74-C797-40B3-BA82-F135D941D1A2}");
IPS_SETName($ID_INSTANZ_CUTTER,"AV_CUTTER");
// registervariable instanz erstellen
$ID_INSTANZ_REGISTER= IPS_CREATEINSTANCE("{F3855B3C-7CD6-47CA-97AB-E66D346C037F}");
IPS_SetParent($ID_INSTANZ_REGISTER, $ID_INSTANZ);
IPS_SETName($ID_INSTANZ_REGISTER,"AV_REGISTER");
// client socket instanz erstellen
$ID_INSTANZ_SOCKET= IPS_CREATEINSTANCE("{3CFF0FD9-E306-41DB-9B5A-9D06D38576C3}");
IPS_SETName($ID_INSTANZ_SOCKET,"AV_SOCKET");
CSCK_SetHost($ID_INSTANZ_SOCKET,$IP_HOST);
CSCK_SetPort($ID_INSTANZ_SOCKET,8102);
//dummy pioneer script anlegen in das dann der inhalt einkopiert werden muss
$ID_PIONEER_SCRIPT= CreateScriptByName("PioneerAVR", $ID_INSTANZ, "<?\r\r?>", false);
//dummy pioneer script für konstanten anlegen in das dann der inhalt einkopiert werden muss
$ID_PIONEER_SCRIPT_CONF= CreateScriptByName("PioneerAVR_Const", $ID_INSTANZ, "<?\r\r?>", true);
// timer der das script zykisch aufruft für power in abfrage
$ID_EVENT = IPS_CreateEvent (1);
IPS_SetEventCyclic($ID_EVENT, 2, 1, 0, 0, 2, 1); //Jeden Tag jede Minute
IPS_SetParent($ID_EVENT, $ID_PIONEER_SCRIPT);
IPS_SetEventActive($ID_EVENT, true); // Aktivert Ereignis
// cutter,socket und register einrichten
IPS_ConnectInstance($ID_INSTANZ_REGISTER, $ID_INSTANZ_CUTTER);
RegVar_SetRXObjectID($ID_INSTANZ_REGISTER, $ID_PIONEER_SCRIPT);
Cutter_SetParseType($ID_INSTANZ_CUTTER, 0);
Cutter_SetRightCutChar($ID_INSTANZ_CUTTER, "
");
IPS_ConnectInstance($ID_INSTANZ_CUTTER, $ID_INSTANZ_SOCKET);
IPS_ApplyChanges($ID_INSTANZ_SOCKET);
IPS_ApplyChanges($ID_INSTANZ_CUTTER);
IPS_ApplyChanges($ID_INSTANZ_REGISTER);
// eigene profile anlegen, dafür das vorhandene löschen
if (IPS_VariableProfileExists("AVR_VOLUME"))
IPS_DeleteVariableProfile("AVR_VOLUME");
IPS_CreateVariableProfile ("AVR_VOLUME", 1 );
IPS_SetVariableProfileText ("AVR_VOLUME", "", "%" );
IPS_SetVariableProfileValues ("AVR_VOLUME", 0, 161 , 1 );
IPS_SetVariableProfileIcon("AVR_VOLUME", "Speaker");
// eigene profile anlegen, dafür das vorhandene löschen
if (IPS_VariableProfileExists("AVR_LISTENINGMODE"))
IPS_DeleteVariableProfile("AVR_LISTENINGMODE");
IPS_CreateVariableProfile ("AVR_LISTENINGMODE", 1 );
//IPS_SetVariableProfileAssociation("Temperatur", 1, "Wert 1", "Speaker", 0xFFFFFF);
IPS_SetVariableProfileAssociation("AVR_LISTENINGMODE", 0, "Auto/ALC/Direct", "", -1);
IPS_SetVariableProfileAssociation("AVR_LISTENINGMODE", 1, "Stereo", "", -1);
IPS_SetVariableProfileAssociation("AVR_LISTENINGMODE", 2, "Standard", "", -1);
IPS_SetVariableProfileAssociation("AVR_LISTENINGMODE", 3, "Adv. Surround", "", -1);
// eigene profile anlegen, dafür das vorhandene löschen
// TODO: anpassen falls mehr funktionen gewünscht sind.
IPS_DeleteVariableProfile("AVR_FUNCTION");
IPS_CreateVariableProfile ("AVR_FUNCTION", 1 );
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 0, "DIVERES", "", -1);
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 2, "Tuner", "", -1);
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 10, "Video 1", "", -1);
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 17, "iPod", "", -1);
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 19, "HDMI 1", "", -1);
IPS_SetVariableProfileAssociation("AVR_FUNCTION", 26, "Internetradio", "", -1);
IPS_SetVariableProfileIcon("AVR_FUNCTION", "Shutter");
// power
$VarID_Power= IPS_CreateVariable(0);
// instanz zufügen
IPS_SetParent($VarID_Power, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_Power, "Power");
// profil nutzen
IPS_SetVariableCustomProfile($VarID_Power, "~Switch");
// aktion, script zuweisen
IPS_SetVariableCustomAction($VarID_Power, $ID_PIONEER_SCRIPT);
// reihenfolge setzen
IPS_SetPosition($VarID_Power, 1);
// display string
$VarID_Display= IPS_CreateVariable(3);
// instanz zufügen
IPS_SetParent($VarID_Display, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_Display, "Display");
// profil nutzen
IPS_SetVariableCustomProfile($VarID_Display, "~String");
// kein aktion, script zuweisen
// reihenfolge setzen
IPS_SetPosition($VarID_Display, 2);
// icon zuweisen
IPS_SetIcon($VarID_Display, "Information");
// lautstärke
$VarID_Vol= IPS_CreateVariable(1);
// instanz zufügen
IPS_SetParent($VarID_Vol, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_Vol, "Lautstärke");
// eigenes profil nutzen
IPS_SetVariableCustomProfile($VarID_Vol, "AVR_VOLUME");
// aktion, script zuweisen
IPS_SetVariableCustomAction($VarID_Vol, $ID_PIONEER_SCRIPT);
// reihenfolge setzen
IPS_SetPosition($VarID_Vol, 3);
// mute
$VarID_Mute= IPS_CreateVariable(0);
// instanz zufügen
IPS_SetParent($VarID_Mute, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_Mute, "Mute");
// profil nutzen
IPS_SetVariableCustomProfile($VarID_Mute, "~Switch");
// aktion, script zuweisen
IPS_SetVariableCustomAction($VarID_Mute, $ID_PIONEER_SCRIPT);
// reihenfolge setzen
IPS_SetPosition($VarID_Mute, 4);
// funktion
$VarID_Fkt= IPS_CreateVariable(1);
// instanz zufügen
IPS_SetParent($VarID_Fkt, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_Fkt, "Funktion");
// eigenes profil nutzen
IPS_SetVariableCustomProfile($VarID_Fkt, "AVR_FUNCTION");
// aktion, script zuweisen
IPS_SetVariableCustomAction($VarID_Fkt, $ID_PIONEER_SCRIPT);
// reihenfolge setzen
IPS_SetPosition($VarID_Fkt, 5);
// active listening mode
$VarID_ALM= IPS_CreateVariable(3);
// instanz zufügen
IPS_SetParent($VarID_ALM, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_ALM, "Active Listening Mode");
// profil nutzen
IPS_SetVariableCustomProfile($VarID_ALM, "~String");
// kein aktion, script zuweisen
// reihenfolge setzen
IPS_SetPosition($VarID_ALM, 6);
// icon zuweisen
IPS_SetIcon($VarID_ALM, "Distance");
// listening mode
$VarID_LM= IPS_CreateVariable(1);
// instanz zufügen
IPS_SetParent($VarID_LM, $ID_INSTANZ);
// Namen setzen
IPS_SetName($VarID_LM, "Listening Mode");
// eigenes profil nutzen
IPS_SetVariableCustomProfile($VarID_LM, "AVR_LISTENINGMODE");
// aktion, script zuweisen
IPS_SetVariableCustomAction($VarID_LM, $ID_PIONEER_SCRIPT);
// reihenfolge setzen
IPS_SetPosition($VarID_LM, 7);
// pioneer script für variablen anlegen in das dann der inhalt einkopiert werden muss
$SText="<?\r";
$SText.="// statusvariablen des verstärkers\r";
$SText.="define (\"ID_POWER\", ".$VarID_Power.");\r";
$SText.="define (\"ID_DISPLAY\", ".$VarID_Display.");\r";
$SText.="define (\"ID_MUTE\", ".$VarID_Mute.");\r";
$SText.="define (\"ID_VOL\", ".$VarID_Vol.");\r";
$SText.="define (\"ID_FUNCTION\", ".$VarID_Fkt.");\r";
$SText.="define (\"ID_LISTENING_MODE\", ".$VarID_ALM.");\r";
$SText.="define (\"ID_CHANGE_LISTENING_MODE\", ".$VarID_LM.");\r";
//$SText.="// IP des Verstärkers\r";
$SText.="\$IP_DEVICE=\"".$IP_HOST."\";\r";
$SText.="// statusvariablen webfront und socket\r";
$SText.="define (\"ID_SOCKET\", ".$ID_INSTANZ_SOCKET.");\r";
$SText.="define (\"ID_WEBFRONT\", ".$ID_WebFront.");\r";
$SText.="?>\r";
$ID_PIONEER_SCRIPT_VARS= CreateScriptByName("PioneerAVR_Vars", $ID_INSTANZ, $SText);
// Funktion zum erstellen eines Scripts
//
// Parameter:
// ScriptNAME = Name wie das Script im Objektbaum heissen soll
// ParentID = Objekt ID unter der das Script untergehangen wird
// ScriptTEXT = Inhalt der Scriptdatei
function CreateScriptByName($ScriptNAME, $ParentID, $ScriptTEXT)
{
global $IPS_SELF;
$ScriptID = @IPS_GetScriptIDByName($ScriptNAME, $ParentID);
if ($ScriptID == 0){
$ScriptID = IPS_CreateScript(0);
IPS_SetName($ScriptID, $ScriptNAME);
IPS_SetParent($ScriptID, $ParentID);
IPS_SetInfo($ScriptID, "This script was created by: #$IPS_SELF#");
IPS_SetScriptContent($ScriptID, $ScriptTEXT);
IPS_SetHidden($ScriptID, true);
IPS_SetPosition($ScriptID, 98);
}
return $ScriptID;
}
?>