habe mir selber beholfen, indem ich den script von Brownson geplündert habe. Ds Problem mit der programmatischen Vergabe der ENO-IDs löst es allerdings nicht.
<?
CreateInst('17004243,Reedkontakt');
CreateInst('16803335,Reedkontakt');
CreateInst('8807545,Reedkontakt');
CreateInst('8807837,Reedkontakt');
CreateInst('8788967,Reedkontakt');
CreateInst('8796954,Reedkontakt');
CreateInst('8787356,Reedkontakt');
CreateInst('8806317,Reedkontakt');
CreateInst('8789760,Reedkontakt');
CreateInst('8792833,Reedkontakt');
CreateInst('8787906,Reedkontakt');
CreateInst('8797006,Reedkontakt');
CreateInst('8789502,Reedkontakt');
CreateInst('8788621,Reedkontakt');
CreateInst('8787890,Reedkontakt');
CreateInst('8786052,Reedkontakt');
CreateInst('8801787,Reedkontakt');
CreateInst('8786902,Reedkontakt');
CreateInst('8808237,Reedkontakt');
function CreateInst($Name)
{
echo CreateInstance ($Name, 56433 /*[EnOcean Sensoren\Sensoren 1. Stock]*/, "{B01DE819-EA69-4FC1-91AB-4D9FF8D55370}");
}
/** Anlegen einer Instanz.
*
* Die Funktion legt eine unkonfigurierte Instanz an, als übergeordnete ID dient dabei $ParentId. Sollte
* dort bereits eine Kategorie mit dem angegebenen Namen existieren, werden die Parameter
* (Position und Icon) der existierenden Kategorie auf den neuen Wert gesetzt.
*
* @param string $Name Name der Instance
* @param integer $ParentId ID des übergeordneten Objekts im logischen Objektbaum
* @param string $ModulId ModulID des zu erstellenden Objekts. Die ModulID ist eine 32Bit GUID im Format
* {00000000-0000-0000-0000-000000000000}.
* @param integer $Position Positionswert des Objekts
* @return integer ID der Instanz
*
*/
function CreateInstance ($Name, $ParentId, $ModulId)
{
$InstanceId = IPS_GetObjectIDByIdent(Get_IdentByName($Name), $ParentId);
echo "51".$InstanceId;
if ($InstanceId === false) $InstanceId = IPS_GetInstanceIDByName($Name, $ParentId);
if ($InstanceId === false) {
$InstanceId = IPS_CreateInstance($ModulId);
IPS_SetName($InstanceId, $Name);
IPS_SetIdent($InstanceId, Get_IdentByName($Name));
IPS_SetParent($InstanceId, $ParentId);
//IPS_SetPosition($InstanceId, $Position);
echo "Created Instance $Name=$InstanceId, ModuleID=$ModulId
";
}
UpdateObjectData($InstanceId, $Position);
return $InstanceId;
}
function Get_IdentByName($name) {
$ident = str_replace(' ', '', $name);
$ident = str_replace(array('ö','ä','ü','Ö','Ä','Ü'), array('oe', 'ae','ue','Oe', 'Ae','Ue' ), $ident);
$ident = str_replace(array('"','\'','%','&','(',')','=','#','<','>','|','\\'), '', $ident);
$ident = str_replace(array(',','.',':',';','!','?'), '', $ident);
$ident = str_replace(array('+','-','/','*'), '', $ident);
return $ident;
}
function UpdateObjectData($ObjectId, $Position, $Icon="") {
$ObjectData = IPS_GetObject ($ObjectId);
$ObjectPath = IPS_GetLocation($ObjectId);
if ($ObjectData['ObjectPosition'] <> $Position and $Position!==false) {
echo "Set ObjectPosition='$Position' for Object='$ObjectPath'
";
IPS_SetPosition($ObjectId, $Position);
}
if ($ObjectData['ObjectIcon'] <> $Icon and $Icon!==false) {
echo "Set ObjectIcon='$Icon' for Object='$ObjectPath'
";
IPS_SetIcon($ObjectId, $Icon);
}
}
/** Definieren einer ID Konstante
*
* Mit der Funktion ist es möglich, eine Konstane in einem PHP Script File auf einen beliebigen Wert zu setzen.
*
* @param string $Name Name dee Konstante
* @param integer $ID Wert der Konstante
* @param string $FileName FileName des PHP Scriptes in dem die Konstate gesetzt werden soll
*
*/
function SetVariableConstant ($Name, $ID, $FileName) {
$FileNameFull = IPS_GetKernelDir().'scripts\\'.$FileName;
$FileContent = file_get_contents($FileNameFull, true);
$pos = strpos($FileContent, $Name);
if ($pos === false) {
echo "Error - ".$Name." could NOT be found in FileContent!
";
}
$pos = $pos + strlen($Name);
while (substr($FileContent, $pos, 1) < "0" or substr($FileContent, $pos, 1) > "9") {
$pos = $pos+1;
}
$FileContentNew = substr($FileContent, 0, $pos).$ID.substr($FileContent, $pos+5);
file_put_contents($FileNameFull, $FileContentNew);
}
?>