30 ENO-Instanzen via script?

Nun habe ich 30 FTK-Fenster-Tür-Module für meine ENO-basierte Alarmanlage, und muss sie alle einbinden. Verdankenwerterweise sind die EnOcean-IDs auf den Gehäusen eingetragen (allerdings als HEX, aber ich habe sie nun alle zu Decimals übersetzt).

Muss ich nun wirklich die nächsten 2 Stunden mit der IPS-Konsole Instanzen generieren, die ENO-ID mit dem Suchlauf finden, und einbinden? Kann mir keine gute Seele sagen, ob ich all dies nicht mit einem kleinen Script erledigen kann? Die ENO-IDs habe ich ja alle in einem Text-File…

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);
	}


?>