ZW_ConfigurationSet() bei Batterie-betriebenen Geräten

Hallo,

ich habe eine Frage, wie IPS allgemein mit Befehlen an Batterie-betriebene Geräten umgeht:
Wenn ich z.B. einen Parameter mit ZW_ConfigurationSet() setzen möchte und das Gerät im Schlaf-Zustand ist, dann werde ich diesen Befehl nicht erfolgreich ausführen können.
Speichert IPS solche Befehle an Batterie-betriebene Geräte, sodass die Geräte sich die Befehle, wenn sie das nächste mal aufwachen, abfragen können? Oder muss ich den Befehl erneut senden, wenn das Gerät wach ist?

Grüße,
hirschbrat

Servus,

ich habe momentan die gleiche Problematik wie du, da ich viele Sensoren von großer entfernung aus Parametrieren muss und natürlich nicht die möglichkeit habe da einen Schalter zu drücken um den Sensor manuell aus den Schlaf zu reißen.

Ich versuche gerade mit nem Script ranzugehen das den Befehl ConfigurationSet dann abfeuert wenn eine der Variablen aktualisiert wird.

Also wenn der Sensor kurz in den „Wachzustand“ wechselt um seine Werte bzw Variablen zu aktualisieren.
Mit dem Auslesen des Sleep Intervalls hat das schonmal ganz gut geklappt.

Der Rest … wenn der Tag doch nur 48 Stunden hätte :slight_smile:

Danke für dein Antwort,

ich bin auch gerade dabei einen Z-Wave Konfigurator für das WebFront zu bauen und habe das von dir beschriebene Vorgehen auch so geplant.
Ich wollte nur nochmal sichergehen, ob IPS das nicht vlt. von allein so macht, das hätte ich das nicht umsonst programmiert…

Sowas ?

Ist aber noch nicht fertig :slight_smile: Funktioniert aber schon recht gut.
Wobei ich mich immer wieder frage wofür das hier sein soll :

para2.PNG

Das Parametrierungsfenster hat bei keinen meiner Sensoren irgendeine Funktion, kann auch keine Parameter durch
Read Values lesen ?! Bug ? Feature ? :slight_smile:

Ahja … IPS 3.1

Du musst in dem Parameter-Fenster erst einen Parameter hinzufügen. Danach kannst du diese Werte laden oder neu setzten.

Mein Konfigurator sieht recht ähnlich aus. Wobei es mir in erster Linie darum geht, eine Dokumentation der Geräte-Parameter, Werte-Bereiche und anderer Eigenheiten (wie erzwinge ich ein NIF, wie In-/Exclusion starten) integriert zu haben.
Das ständige Suchen in den Manuals ist schon nervig.
Ich möchte dazu auf die Datenbank von http://www.pepper1.net/zwavedb/ zugreifen. Hier stehen schon alle notwendigen Parameter und Details als XML-Files zur Verfügung.

Hier auch mal nen Screenshot von mir:

Ok du hast gewonnen :slight_smile:
Ich hab noch eingebaut das der Button und die Parameterfenster ausgeblendet werden wenn der Befehl Starten abgefeuert wurde.

Hier mal mein Script Export mitm Project Exporter :

<?
/**********************************************************************************************************************
*  this Install-Script was automated generated by RS IPS Project-Exporter                                             *
*  © by Raketenschnecke 2012-2013, mail: raketenschnecke@gmx.de                                                       *
*  // Projekt-HomePage: http://www.raketenschnecke.net/rs-projekte/rs-ips-project-exporter/                           *
**********************************************************************************************************************/

/**********************************************************************************************************************
	Project: Rechts (Quell-ID: 58214), generated on 13.02.2014, 16:24 Uhr
*                                                                                                                     *
*	Dieses Script beinhaltet ein automatisch in einem Script zusammengeführtes IPS-Projekt (Quell-Projekt)             *
*	Zur Installation des (Quell-) Projekts auf dem lokalen System (Zielsystem) bitte dieses Script an einer beliebigen *
*	Stelle im Objektbaum platzieren und einmalig manuell starten (Konfigurationen sind nicht notwendig. Es werden alle *
*	notwendigen Strukturen (Kategorien, Variablen, Scripte etc) aus dem Quell-Projekt im Ziel-Projekt angelegt (derzeit*
*	ohne Links, Events)                                                                                                *
*	Dies ist !!! KEINE !!! vollständige Projekt-Installation! D.h.: eine Konfiguration, Verlinkung von Objekten etc.   *
*	muss durch Scripts des eigentlichen Projekts oder manuell durch den Anwender erfolgen.                             *
*                                                                                                                     *
**********************************************************************************************************************/

###############################  Konfig ##############################################################################

// Ziel-WFC angeben
   $WFC_TargetID     			= 0; 	// bei falscher WFC-ID wird keine Installation von WFE-Komponenten vorgenommen
   $WFC_existItemoverwrite    = 1;  // 0=> bereits im Zielsystem bestehende WFC-Items werden NICHT überschrieben,
													// 1=> existierende Objekte werden überschrieben (default)

// Copy-Parameter (1: Objekte werden im Zielsystem installiert; 0: Objekte werden nicht installiert) +++++++++++++++++
	$VarProfile                = 1;	// 1: überschreibt vorhandene Profile im Zielsystem, 0: installiert nur neue Profile
	# !!! die folgende Option mit äußerster Vorsicht nutzen (Default-Wert 0)!!! #
	$existsScriptsoverwrite    = 0;	// 1: im Zielsystem existierende Scripte (=benamste Scriptfiles) werden überschrieben


############################### Main Area ############################################################################

   ##### Project Exporter Comment: Projekt-Export Rechts (Quell-ID: 58214) vom 13.02.2014 16:24 #####

// Inventorys laden
	$MessageProkoll   = array();
	$Inv 					= ObjectInventory();
	$VProfInv			= VarProfileInventory();
	if(function_exists('loadFileExportInventory'))
	{
		$ExpFileInv		= loadFileExportInventory();
		if($ExpFileInv[0] != NULL)
		createExportFiles($ExpFileInv);
	}

// Parameters-Array erzeugen
   $Parameters	= array('VarProfile'=>$VarProfile, 'ScrOverwrite'=>$existsScriptsoverwrite, 'WFCItems'=>$WFC_existItemoverwrite,  'Update'=>0);

// letztes Logfile finden & Updatemodus setzen
	$lastLog_ID    = findlastLogfile();
	if($lastLog_ID > 0)
	{
		$Parameters['Update'] = 1;
		include $lastLog_ID.'.ips.php';

		// last Inventory laden
		$lastInv 	= ObjectInventoryProtocol();

		// Meldungsausgabe
		if(isset($lastInv[0]))
		{
			$MessageProkoll['Info'][] = "#1004 letztes Inventory aus Protokollfile geladen";
		}

		// Last Inventory initialisieren
		$InvData			= explode(';', substr(preg_replace("/\r|
/s", "", $lastInv[1]),0, -1));
	   $InvObjID  		= (int)explode(',', $InvData[0])[1];
	   $lastInvObj		= createlastInventoryObjects($InvObjID);

		// Meldungsausgabe
		if(IPS_ObjectExists((int)$lastInvObj[0]['newObjectID']))
		{
		   $MessageProkoll['Info'][] = "#1005 bestehendes Zielprojekt für Update gefunden: ".$lastInvObj[0]['ObjectName']." ID#".$lastInvObj[0]['newObjectID']."";
		}
		else
		{
		   $MessageProkoll['Failure'][] = "#1025 Fehler: kein bestehendes Zielprojekt gefunden";
		   exit("Scriptabbruch: kein bestehendes Zielprojekt gefunden! Nur Neu-Installation möglich,
bitte alle Child-Files unterhalb dieses Scripts löschen!");
		}
	}
	$MessageProkoll['InstallParameters']  = $Parameters;


// Funktionsaufrufe
	// Variablenprofile aus Profile-Inventory holen und Profil-Baum generieren
	$VarProfile	= createVarProfileInventory();

	// Variablenprofile anlegen (abhängig von Parameters)
	createVarProfile($VarProfile);

	// Projekt Root-Element aus Inventory generieren und anlegen
	$ObjectTree = createInventoryObjects();

	// Child-Objekte vom Root aus Inventory generieren und anlegen
	$ObjInstallTree = createObjectsTree($ObjectTree);

	// Funktion zum Verlinken aller neu instalierten Elemente
	linknewObjects($ObjInstallTree);

	// Funktion zum Installieren der WFC-Items
	installWFC_Items($WFC_TargetID);

	// Install-Script ins Config-Verzeichnis verschieben
	moveInstallScripttoConfig();

	// Installationsprotokoll erzeugen
	$InstProtocol		= createObjInventoryProtocol($ObjInstallTree);

	// Script self-renaming
			IPS_SetName($_IPS['SELF'], 'Rechts (Quell-ID: 58214) 2014_02_13-16_24'.', Ziel-ID: '.$ObjInstallTree[0]['newObjectID']);


	// Installationsprotokoll schreiben
	CreateProtocolFile($InstProtocol);

// ++++++++++++++ Script-Core +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


// prüft, ob Logfiles unterhalb des Export-Scripts hängen und gibt die ID des letzten Logfiles aus +++++++++++++++++
function findlastLogfile()
{
   $Childs	= IPS_GetChildrenIDs($_IPS['SELF']);
   $ScrTS   = 0;

   if(isset($Childs[0]))
   {
      $ScrTS   = 0;
      $ScrID   = 0;
      for($i=0;$i<count($Childs);$i++)
      {
         // 1. Zeile aus jedem Protokollfile auslesen und Installationsdatum ermitteln
         $script  	= IPS_GetKernelDir()."scripts\\".$Childs[$i].'.ips.php';
      	$fh			= fopen($script, "r");
      	$firstLine  = mb_strlen(fgets($fh));

			fseek($fh, $firstLine);
      	$zeile		= explode(' ', fgets($fh));

      	if(isset($zeile[4]))
      	{
      		$TS   	= strtotime($zeile[4].$zeile[5]);
			}
			else
		   {
	   		$MessageProkoll['Failure'][] = "#1024 Fehler: letztes Inventory aus Protokollfile NICHT geladen";
			   exit("Scriptabbruch: kein gültiges Protokollfile gefunden! Nur Installation möglich,
bitte alle Child-Files unterhalb dieses Scripts löschen!");
		   }

      	// Child mit größtem Timestamp ermitteln
      	if(($ScrTS < $TS))
      	{
      	   $ScrTS   = $TS;
      	   $ScrID   = $Childs[$i];
			}
         fclose($fh);
      }
   }

	// alte Logfiles löschen
   for($i=0;$i<count($Childs);$i++)
   {
      if($ScrID != $Childs[$i]) IPS_DeleteScript($Childs[$i], true);
   }
   return @$ScrID;
}


// Last Install Einzelobjekte-Array (aus Inv-Protokoll) bauen
function createlastInventoryObjects($ID)
{
	global $lastInv;

	for($a=1;$a<count($lastInv);$a++)
	{
		// Einzel-Objekt zusammenstellen
		$InvData 	= explode(';', substr(preg_replace("/\r|
/s", "", $lastInv[$a]),0, -1));
		unset($InvData[0]);  // ersten Datensatz entfernen
		$InvData    = array_slice($InvData, 0);
		for($i=0;$i<count($InvData);$i++)
		{
		   $KeyValue         = explode(',', $InvData[$i]);
			$lastInvPlain[$a][$KeyValue[0]]  = $KeyValue[1];
		}
	}
	$lastInvPlain  = array_slice($lastInvPlain, 0);

	return $lastInvPlain;
}

// Funktion installiert externe Scripte (sofern vorhanden)
function createExportFiles($Array)
{
   global 				$MessageProkoll;
	$PicList          = array('png', 'jpg', 'jpeg', 'gif');
	$Cnt  				= count($Array);
	for($i=0;$i<$Cnt;$i++)
	{

	   $File    			= explode('\\', $Array[$i]);
	   $FileName   		= trim(array_pop($File));
	   $FilePath   		= IPS_GetKernelDir().substr(str_replace($FileName, '', $Array[$i]), 0, -1);
	   $FileExtension    = str_replace(".", '', substr($FileName, -4));
	   $isPic            = in_array($FileExtension, $PicList);

		// Filecontent aus Funktion holen
		$FuncName   		= 'ExtFile_'.preg_replace('/[^a-zA-Z0-9]/', '', $Array[$i]);
		$ScrContent       = $FuncName();
		if($isPic)
		{
		   $ScrContent		= base64_decode($ScrContent);

		}
		else
		{
		   $ScrContent		= str_replace("@§@", "\\", $ScrContent);
			$ScrContent		= str_replace("\\'", "'", $ScrContent);
		}

		// Ordner anlegen, wenn nicht vorhanden
			if (!is_dir($FilePath))
			mkdir ($FilePath  , 0777, true);

		// schreiben der Content-Datei
			$file    		= $FilePath.'\\'.$FileName;

			$handle 			= fopen($file, "w");
			$result			= fwrite($handle, $ScrContent);
			if($result)
			{
			   $MessageProkoll['extFiles']['OK'][] 		= $file;
			}
			else
			{
			   $MessageProkoll['extFiles']['Failure'][]	= $file;
			}
			fclose($handle);
	}
}

// Array Variablenprofile-Inventory erstellen
function createVarProfileInventory()
{
   global $VProfInv;

   if(@$VProfInv[0] != NULL)
	{
	   for($i=0;$i<count($VProfInv);$i++)
	   {
	      $SubSet[] = explode('|', substr(preg_replace("/
/s", "", $VProfInv[$i]),0, -1));
		}

		for($p=0;$p<count($SubSet);$p++)
		{
		   $SubSet[$p][0] = substr($SubSet[$p][0], 0, -1);
		   $SubSet[$p][1] = substr(@$SubSet[$p][1], 0, -1);

		   $Profiles[$p]	= explode(';', $SubSet[$p][0]);
		   for($i=0;$i<count($Profiles[$p]);$i++)
		   {
	   		$Key  		= explode(',', $Profiles[$p][$i])[0];
				$Value  		= explode(',', $Profiles[$p][$i])[1];
				$ProfileObj[$Key] 	= $Value;
			}
			$VarProfile[$p]     = $ProfileObj;

			// Associations hinzufügen
			if(@$SubSet[$p][1] != NULL)
			{
				$AssRaw	= explode('§', $SubSet[$p][1]);
		   	for($i=0;$i<count($AssRaw);$i++)
			   {
					$AssBlock	= explode(';', $AssRaw[$i]);
					for($v=0;$v<4;$v++)
					{
					   if($AssBlock[$v] != NULL)
						{
						   $Key		= explode(',',($AssBlock[$v]))[0];
						   $Value	= explode(',',($AssBlock[$v]))[1];
						   $ValuePair[$Key]  = $Value;
						}
				   }
				   $newAssBlock[] = $ValuePair;
				   unset($ValuePair);
				}
	         $VarProfile[$p]['Associations'] = $newAssBlock;
	         unset($newAssBlock);
				unset($AssBlock[$p]);
			}
		}
		$MessageProkoll['Info'][] = "#1010 VarProfil-Array erstell";
		return $VarProfile;
	}
}

// Function Variablenprofil anlegen
function createVarProfile($VarProfile)
{
	global $Parameters;

	if(isset($VarProfile[0]))
	{
	// Profile-Array durchgehen
		for($i=0;$i<count($VarProfile);$i++)
		{
		   $Profilname = $VarProfile[$i]['ProfileName'];
		   $isSystemProfile  = strpos($Profilname, '~');
		   if(($Parameters['VarProfile'] == 1) && (IPS_VariableProfileExists($Profilname)) && ($isSystemProfile === false))
		   {
		      $MessageProkoll['Install']['OK'] = "#2011 Profil $Profilname wird gelöscht";
		      if(IPS_VariableProfileExists($Profilname)) IPS_DeleteVariableProfile($Profilname);
			}
			else
			{
			   $MessageProkoll['Install']['User'] = "#2010 bestehendes Variablen-Profil $Profilname wird nicht überschrieben (Systemprofil oder Option abgeschaltet)";
			}

			// Variablen-Profil anlegen (nur Neuanlage)
		   if((!IPS_VariableProfileExists($Profilname))&& ($isSystemProfile === false))
			{
			   IPS_CreateVariableProfile($Profilname, (int)$VarProfile[$i]['ProfileType']);
		      IPS_SetVariableProfileText($Profilname, $VarProfile[$i]['Prefix'], $VarProfile[$i]['Suffix']);
		      IPS_SetVariableProfileValues($Profilname, (float)$VarProfile[$i]['MinValue'], (float)$VarProfile[$i]['MaxValue'], (float)$VarProfile[$i]['StepSize']);
	         IPS_SetVariableProfileDigits($Profilname, (int)$VarProfile[$i]['Digits']);
				IPS_SetVariableProfileIcon($Profilname, $VarProfile[$i]['Icon']);
				$MessageProkoll['Install']['OK'] = "#2012 Profil $Profilname angelegt";

				// Associations setzen
				if(isset($VarProfile[$i]['Associations']))
				{
					$Ass = $VarProfile[$i]['Associations'];
					for($a=0;$a<count($Ass);$a++)
					{
					   // Falls Assoziation "Name und Icon" leer sind, wird Leerzeichen bei Name eingefügt (sonst Fehlermeldung
					   // bei Assoziations-Zuweisung
					   if(($Ass[$a]['Name'] == NULL) && ($Ass[$a]['Icon'] == NULL)) $Ass[$a]['Name'] = ' ';
						IPS_SetVariableProfileAssociation($Profilname, (float)$Ass[$a]['Value'], $Ass[$a]['Name'], $Ass[$a]['Icon'], (int)$Ass[$a]['Color']);
					}
					$MessageProkoll['Install']['OK'] = "#2013 Profilassociations für Profil $Profilname angelegt";
				}
			}
		}
		return;
	}
}

// Objekt-Tree generieren und Childs holen
function createInventoryObjects()
{
	global $Inv;
	global $IObjects;
   $DataSet 	= explode(';', substr(preg_replace("/\r|
/s", "", $Inv[1]),0, -1));
   $ObjID  		= (int)explode(',', $DataSet[0])[1];
   $Objects[0]	= createObject($ObjID);
   if(isset($Objects[0]['ChildrenIDs']) != NULL)
   $Objects[0]['ChildrenIDs']	= createChildObjects($Objects[0]['ChildrenIDs']);
	return $Objects;
}

// rekursive Objektanlage aller Objekte im Ziel-Projekt
function createObjectsTree($Objects)
{
//global $Objects;
	for($i=0;$i<count($Objects);$i++)
	{
		// Objekt anlegen
		$Objects[$i] = Objekteanlegen($Objects[$i]);

		// nach Childs durchsuchen
		if(isset($Objects[$i]['ChildrenIDs']))
		{
		   for($ch=0;$ch<count($Objects[$i]['ChildrenIDs']);$ch++)
		   {
		      $Objects[$i]['ChildrenIDs'][$ch]['newParentID']	= $Objects[$i]['newObjectID'];
		   }
		   // nächste Rekursion:
		   $newObjects = $Objects[$i]['ChildrenIDs'];
		   $Objects[$i]['ChildrenIDs']  = createObjectsTree($newObjects);
		}
	}
	return $Objects;
}

// Inventory rekursiv abarbeiten und Einzelobjekte zur Anlage übergeben
function createChildObjects($Childs)
{
	for($i=0;$i<count($Childs);$i++)
	{
		$Childs[$i]	= createObject($Childs[$i]);
		if(isset($Childs[$i]['ChildrenIDs']))
		{
		   $newChilds  = $Childs[$i]['ChildrenIDs'];
			$Childs[$i]['ChildrenIDs']  = createChildObjects($newChilds);
		}
	}
	return $Childs;
}


// Einzel-Objekt aus Inventory generieren
function createObject($ObjID)
{
   global $Inv;
   global $Parameters;
	global $lastInvObj;

	// Inventory nach Objekt-ID durchsuchen und Array-ID zurückgeben
   for($s=0;$s<count($Inv);$s++)
   {
      if(strstr($Inv[$s], 'ObjectID,'.$ObjID)) $Key = $s;
   }
  	$DataSet = explode(';', substr(preg_replace("/\r|
/s", "", $Inv[$Key]),0, -1));

	// Objekt Key-Value Zuordnung
   for($p=0;$p<count($DataSet);$p++)
   {
	   $Key  		= explode(',', $DataSet[$p])[0];
		$Value  		= explode(',', $DataSet[$p])[1];
		$Object[$Key]	= $Value;
	}

	// newObjectID aus lastInventory (Inst-Protokoll) ankleben, wenn Update = 1
	if($Parameters['Update'] == 1)
	{
	   for($l=0;$l<count($lastInvObj);$l++)
	   {
	      if($Object['ObjectID'] == $lastInvObj[$l]['ObjectID'])
	      $Object['newObjectID'] = @$lastInvObj[$l]['newObjectID'];
	   }
	}

	// Child-IDs ankleben
   for($i=0;$i<count($Inv);$i++)
   {
		$DataSet = explode(';', substr(preg_replace("/\r|
/s", "", $Inv[$i]),0, -1));
	   for($p=0;$p<count($DataSet);$p++)
	   {
		   $Key  		= explode(',', $DataSet[$p])[0];
			$Value  		= explode(',', $DataSet[$p])[1];
			$Subject[$Key] 	= $Value;
		}
		if(@$Subject['ParentID'] == $Object['ObjectID']) $Object['ChildrenIDs'][]  = $Subject['ObjectID'];
	}

	return $Object;
}

// +++ Function ZielProjekt-Objekte anlegen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function Objekteanlegen($Object)
{
	global $Parameters;
	global $MessageProkoll;

   $MessageProkoll['Install']['OK'][] = "#3011 Objekt ".$Object['ObjectName'].", altID #".$Object['ObjectID']." zur Anlage übernommen";

	// ObjectInfo Zeilenumbruch zurückwandeln
	$Object['ObjectInfo'] = str_replace("§&§", "
", $Object['ObjectInfo']);

   switch ($Object['ObjectType'])
	{
		case 0: // Kategorien
				if((@$Object['newObjectID'] > 0) && ($Object['isConfigTree'] == 0))
				{
            	$Cat_ID		= (int)$Object['newObjectID'];
            	// prüfen, ob Kategorie tats. noch existiert (wenn nicht: anlegen)
            	if(!IPS_ObjectExists($Cat_ID)) $Cat_ID = IPS_CreateCategory();
            	IPS_SetName($Cat_ID, $Object['ObjectName']);
					IPS_SetHidden($Cat_ID, (bool)$Object['ObjectIsHidden']);
					IPS_SetPosition($Cat_ID, (int)$Object['ObjectPosition']);
					IPS_SetInfo($Cat_ID, $Object['ObjectInfo']);
					IPS_SetIcon($Cat_ID, $Object['ObjectIcon']);
					if(isset($Cat_ID, $Object['newParentID'])) IPS_SetParent($Cat_ID, (int)$Object['newParentID']);
            	if($Cat_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3023 Kategorie-Objekt ".$Object['ObjectName'].", ID #".$Cat_ID." existiert (Update ein)";
					$MessageProkoll['Install']['OK'][] = "#3025 Kategorie-Objekt ".$Object['ObjectName'].", ID #".$Cat_ID." neu konfiguriert";
				}
				elseif((@$Object['isConfigTree'] == 0) || (@$Object['newObjectID'] == 0) || (!IPS_ObjectExists((int)$Object['newObjectID'])))
				{
					$Cat_ID		= IPS_CreateCategory();
					$Object['newObjectID']  = $Cat_ID;
					if($Cat_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3022 Kategorie-Objekt ".$Object['ObjectName'].", neuID #".$Cat_ID." angelegt";
					IPS_SetName($Cat_ID, $Object['ObjectName']);
					IPS_SetHidden($Cat_ID, (bool)$Object['ObjectIsHidden']);
					IPS_SetPosition($Cat_ID, (int)$Object['ObjectPosition']);
					IPS_SetInfo($Cat_ID, $Object['ObjectInfo']);
					IPS_SetIcon($Cat_ID, $Object['ObjectIcon']);
					if(isset($Cat_ID, $Object['newParentID'])) IPS_SetParent($Cat_ID, (int)$Object['newParentID']);
					$MessageProkoll['Install']['OK'][] = "#3025 Kategorie-Objekt ".$Object['ObjectName'].", ID #".$Cat_ID." neu konfiguriert";

					if($Cat_ID == 0)
					$MessageProkoll['Install']['Failure'][] = "#3021 Kategorie-Objekt ".$Object['ObjectName'].", , altID #".$Object['ObjectID']." Neuanlage fehlgeschlagen";
				}
				else
				{
				   $MessageProkoll['Install']['OK'][] = "#3024 Kategorie-Objekt ".$Object['ObjectName']." nicht neu konfiguriert (Objekt im Config-Bereich)";
				}
			return $Object;
		break;

		case 1:  // Instanzen
				if((@$Object['newObjectID'] > 0) && ($Object['isConfigTree'] == 0))
				{
            	$Inst_ID		= (int)$Object['newObjectID'];
            	// prüfen, ob Kategorie tats. noch existiert (wenn nicht: anlegen)
            	if(!IPS_ObjectExists($Inst_ID)) $Inst_ID = IPS_CreateInstance($Object['ModuleID']);
            	if($Inst_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3033 Kategorie-Objekt ".$Object['ObjectName'].", ID #".$Inst_ID." bereits vorhanden (Update ein)";
				}
				elseif(($Object['isConfigTree'] == 0) || (@$Object['newObjectID'] == 0) || (!IPS_ObjectExists((int)$Object['newObjectID'])))
				{
					$Inst_ID		= IPS_CreateInstance($Object['ModuleID']);
					if($Inst_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3032 Instanz-Objekt ".$Object['ObjectName'].", neuID #".$Inst_ID." angelegt";
					if($Inst_ID == 0)
					$MessageProkoll['Install']['Failure'][] = "#3031 Instanz-Objekt ".$Object['ObjectName'].", , altID #".$Object['ObjectID']." Neuanlage fehlgeschlagen";
				}
				else
				{
				   $MessageProkoll['Install']['OK'][] = "#3034 Instanz-Objekt ".$Object['ObjectName']." nicht neu konfiguriert (Objekt im Config-Bereich)";
				}

			   IPS_SetName($Inst_ID, $Object['ObjectName']);
			   if(isset($Inst_ID, $Object['newParentID'])) IPS_SetParent($Inst_ID, (int)$Object['newParentID']);
			   IPS_SetHidden($Inst_ID, (bool)$Object['ObjectIsHidden']);
			   IPS_SetPosition($Inst_ID, (int)$Object['ObjectPosition']);
				IPS_SetInfo($Inst_ID, $Object['ObjectInfo']);
				IPS_SetIcon($Inst_ID, $Object['ObjectIcon']);
			   IPS_ApplyChanges($Inst_ID);
			   $Object['newObjectID']  = $Inst_ID;

			   if($Inst_ID > 0)
				$MessageProkoll['Install']['OK'][] = "#3035 Instanz-Objekt ".$Object['ObjectName'].", neuID #".$Inst_ID." neu konfiguriert";

			return $Object;
		break;

		case 2:  // Variablen, nur anlegen, wenn sie nicht mit einer Instanz verküpft sind ($Object['ObjectIsReadOnly'] == 0)
			if((int)$Object['ObjectIsReadOnly'] == 0)
		   {
		      $ah_ID = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]; // Archive Handler
				if((@$Object['newObjectID'] > 0) && ($Object['isConfigTree'] == 0))
				{
            	$Var_ID		= (int)$Object['newObjectID'];
            	// prüfen, ob Var tats. noch existiert (wenn nicht: anlegen)
            	if(!IPS_ObjectExists($Var_ID)) $Var_ID = IPS_CreateVariable((int)$Object['ValueType']);
            	if($Var_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3043 Variablen-Objekt ".$Object['ObjectName'].", ID #".$Var_ID." bereits vorhanden (Update ein)";
				}
				elseif((@$Object['isConfigTree'] == 0) || (@$Object['newObjectID'] == 0)|| (!IPS_ObjectExists((int)$Object['newObjectID'])))
				{
					$Var_ID           = IPS_CreateVariable((int)$Object['ValueType']);
					if($Var_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3042 Variablen-Objekt ".$Object['ObjectName'].", neuID #".$Var_ID." angelegt";
					if($Var_ID == 0)
					$MessageProkoll['Install']['Failure'][] = "#3041 Variablen-Objekt ".$Object['ObjectName'].", , altID #".$Object['ObjectID']." Neuanlage fehlgeschlagen";
				}
				else
				{
				   $MessageProkoll['Install']['OK'][] = "#3044 Variablen-Objekt ".$Object['ObjectName']." nicht neu konfiguriert (Objekt im Config-Bereich)";
				}
				//echo "Variablen-Konfiguration für Var ID $Var_ID startet:
";
			   IPS_SetName($Var_ID, $Object['ObjectName']);
			   if(isset($Var_ID, $Object['newParentID'])) IPS_SetParent($Var_ID, (int)$Object['newParentID']);
			   IPS_SetHidden($Var_ID, (bool)$Object['ObjectIsHidden']);
			   IPS_SetPosition($Var_ID, (int)$Object['ObjectPosition']);
				IPS_SetInfo($Var_ID, $Object['ObjectInfo']);
				IPS_SetIcon($Var_ID, $Object['ObjectIcon']);
				//if($Object['VariableCustomAction'] > 0)
				//IPS_SetVariableCustomAction($Var_ID, $Object['VariableCustomAction']);
				IPS_SetVariableCustomProfile($Var_ID, $Object['VariableCustomProfile']);
				AC_SetLoggingStatus($ah_ID, $Var_ID, (bool)$Object['LoggingStatus']);
				AC_SetAggregationType($ah_ID, $Var_ID, (int)$Object['AggregationType']);
			   $Object['newObjectID']  = $Var_ID;
			   if($Var_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3045 Variablen-Objekt ".$Object['ObjectName'].", neuID #".$Var_ID." neu konfiguriert";

			}
			else
			{
				$MessageProkoll['Install']['User'][] = "#3044 Variablen-Objekt ".$Object['ObjectName'].", altID #".$Object['ObjectID']." nicht angelegt (wird automatisch durch IPS-Modul angelegt)";
			}
			return $Object;
		break;

		case 3: // Scripte
		      // bei ScriptOverwrite = 0: Prüfen, ob manuell benanntes Scriptfile im System vorhanden (Scriptabbuch, wenn ja)
            if(($Parameters['Update'] == 0) && ($Parameters['ScrOverwrite'] == 0))
            {
					if(explode('.', $Object['ScriptFile'])[0] != $Object['ScriptID'])
					{
					$FileCheck  	= file_exists(IPS_GetKernelDir()."scripts\\".$Object['ScriptFile']);

	            if($FileCheck)	exit('#3058 Scriptabbruch: Script '.$Object['ScriptFile'].' bereits im Script-Ordner vorhanden,
	            												bereits installierte Zielprojekt-Objekte müssen manuell gelöscht werden');
					}
            }

			   $Scr_Name 			= $Object['ObjectName'];
			   $Scr_oldID 			= @IPS_GetScriptIDByFile($Object['ScriptFile']);
			   $ScrFunctionName	= preg_replace('/[^a-zA-Z]/', '',$Scr_Name).$Object['ObjectID'];
      		$Scr_Content      = $ScrFunctionName();
      		$Scr_Content      = stripslashes($ScrFunctionName());
      		$Scr_Content      = str_replace('§\'', "'", $Scr_Content);
      		$Scr_Content      = str_replace("@§@", "\\",$Scr_Content);

      		// Vorabcheck Script exist
      		if(isset($Object['newObjectID']) && (@$Object['newObjectID'] >0))
				{
					$ScrExist 	= true;
					$Scr_ID		= (int)$Object['newObjectID'];
					if(!IPS_ObjectExists((int)$Object['newObjectID']))
					{
						$ScrExist 	= false;
						$Scr_ID		= NULL;
			      }
				}
				else
				{
					$ScrExist = false;
				}

      		// Script-Neuanlage
			   if(($ScrExist == false))
			   {
				   $Scr_ID 				= IPS_CreateScript(0);
				   IPS_SetName($Scr_ID, $Scr_Name);

					if(isset($Scr_ID, $Object['newParentID'])) IPS_SetParent($Scr_ID, (int)$Object['newParentID']);
					$fh 											= fopen(IPS_GetKernelDir()."scripts\\".$Scr_ID.'.ips.php', 'w') or die ("can't open file");
					fwrite($fh, $Scr_Content);
					fclose($fh);
					IPS_SetScriptFile($Scr_ID, $Scr_ID.'.ips.php');
					IPS_SetHidden($Scr_ID, (bool)$Object['ObjectIsHidden']);
				   IPS_SetPosition($Scr_ID, (int)$Object['ObjectPosition']);
					IPS_SetInfo($Scr_ID, $Object['ObjectInfo']);
					IPS_SetIcon($Scr_ID, $Object['ObjectIcon']);
					$Scr_IPS_ID  = (int)explode('.',$Object['ScriptFile'])[0];
					$Object['newObjectID']  = $Scr_ID;

					//Scriptfile umbenenen, wenn anderer Name als IPS-ID vergeben
		         $ScrFilePrefix = explode('.', $Object['ScriptFile'])[0];
		         if($ScrFilePrefix != $Object['ObjectID'])
		         {
					   rename($Scr_ID.".ips.php", $Object['ScriptFile']);
						$result	= IPS_SetScriptFile($Scr_ID, $Object['ScriptFile']);
						if($result)
						$MessageProkoll['Install']['OK'][] = "#3053 Script-Objekt ".$Object['ObjectName'].", File in ".$Object['ScriptFile']." neu angelegt und umbenannt";
					}
					else
					{
		            if($Scr_ID > 0)
						$MessageProkoll['Install']['OK'][] = "#3052 Script-Objekt ".$Object['ObjectName'].", neuID #".$Scr_ID." neu angelegt";
					}
				}
				elseif(($ScrExist == true) && ($Object['isConfigTree'] != 1))
				{
				   // bei ScriptOverwrite = 0: Prüfen, ob Scriptfile im System vorhanden (Scriptabbuch, wenn ja)
	            if(($Parameters['Update'] == 1) && ($Parameters['ScrOverwrite'] == 0))
	            {
		            if(explode('.', $Object['ScriptFile'])[0] != $Object['ScriptID'])
						{
						$FileCheck  	= file_exists(IPS_GetKernelDir()."scripts\\".$Object['ScriptFile']);

		            if($FileCheck)	exit('#3059 Scriptabbruch: Script '.$Object['ScriptFile'].' bereits im Script-Ordner vorhanden,
		            												bereits installierte Zielprojekt-Objekte müssen manuell gelöscht werden');
						}
	            }

				   // Update (nur, wenn ConfigKategorie-Flag nicht gesetzt)
			      if($ScrExist)
			      {
			         // Filename mit ID oder individuell benannt
			         $ScrFilePrefix = explode('.', $Object['ScriptFile'])[0];
			         if($ScrFilePrefix == $Object['ObjectID'])
			         {
							$ScrFileName   = $Object['newObjectID'].'.ips.php';
							$ScrOverwrite  = 1;
						}
						else
						{
						   $ScrFileName   = $Object['ScriptFile'];
						   if($Parameters['ScrOverwrite'] == 1) {$ScrOverwrite  = 1;}else{$ScrOverwrite  = 0;}
						}
					}
					else
					{
					   $ScrFileName   = $Object['ScriptFile'];
					   $ScrOverwrite  = 1;
					}

					// Script-File löschen (wenn  vorhanden und ScriptOverwrite = 1) und neu schreiben
					$scrReturn = 0;
					if($ScrExist && $ScrOverwrite)
					{
				      unlink(IPS_GetKernelDir()."scripts\\".$ScrFileName);
						$fh 											= fopen(IPS_GetKernelDir()."scripts\\".$ScrFileName, 'w') or die ("can't open file");
						$MessageProkoll['Install']['OK'][]	= "#3055 Script-File ".$Object['ObjectName'].", ".$ScrFileName.", gelöscht";
						$scrReturn									= fwrite($fh, $Scr_Content);
						fclose($fh);
	               IPS_SetHidden($Scr_ID, (bool)$Object['ObjectIsHidden']);
					   IPS_SetPosition($Scr_ID, (int)$Object['ObjectPosition']);
						IPS_SetInfo($Scr_ID, $Object['ObjectInfo']);
						IPS_SetIcon($Scr_ID, $Object['ObjectIcon']);
					}

					// Meldungen für Inst-Protokoll
					if($scrReturn)
					{
						$MessageProkoll['Install']['OK'][] = "#3051 Script-File ".$Object['ObjectName'].", neu geschrieben";
					}
					elseif($ScrOverwrite == 0)
					{
					   $MessageProkoll['Install']['OK'][] = "#3054 Script-File ".$Object['ObjectName'].', nicht überschrieben (Option $existsScriptsoverwrite deaktiviert)';
					}
					else
					{
						$MessageProkoll['Install']['Failure'][] = "#3055 Script-File ".$Object['ObjectName'].", neu schreiben fehlgeschlagen";
					}
				}
			return $Object;
		break;

		case 4: // Events
			   $Evnt_Name 			= $Object['ObjectName'];

		      if((@$Object['newObjectID'] > 0) && ($Object['isConfigTree'] == 0))
				{
            	$Evnt_ID		= (int)$Object['newObjectID'];
            	// prüfen, ob Var tats. noch existiert (wenn nicht: anlegen)
            	if(!IPS_ObjectExists($Evnt_ID)) $Evnt_ID = IPS_CreateEvent((int)$Object['EventType']);
            	if($Evnt_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3063 Event-Objekt ".$Object['ObjectName'].", ID #".$Evnt_ID." bereits vorhanden (Update ein)";
				}
				elseif((@$Object['isConfigTree'] == 0) || (@$Object['newObjectID'] == 0)|| (!IPS_ObjectExists((int)$Object['newObjectID'])))
				{
					$Evnt_ID = IPS_CreateEvent((int)$Object['EventType']);
					if($Evnt_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3062 Event-Objekt ".$Object['ObjectName'].", neuID #".$Evnt_ID." angelegt";
					if($Evnt_ID == 0)
					$MessageProkoll['Install']['Failure'][] = "#3061 Event-Objekt ".$Object['ObjectName'].", , altID #".$Object['ObjectID']." Neuanlage fehlgeschlagen";
				}
				else
				{
				   $MessageProkoll['Install']['OK'][] = "#3064 Event-Objekt ".$Object['ObjectName']." nicht neu konfiguriert (Objekt im Config-Bereich)";
				}
		      if(isset($Evnt_ID, $Object['newParentID'])) IPS_SetParent($Evnt_ID, (int)$Object['newParentID']);
		      IPS_SetName($Evnt_ID, $Evnt_Name);
		      IPS_SetPosition($Evnt_ID, (int)$Object['ObjectPosition']);
		      IPS_SetHidden($Evnt_ID, (bool)$Object['ObjectIsHidden']);
			   IPS_SetPosition($Evnt_ID, (int)$Object['ObjectPosition']);
				IPS_SetInfo($Evnt_ID, $Object['ObjectInfo']);
				IPS_SetIcon($Evnt_ID, $Object['ObjectIcon']);
				IPS_SetEventLimit($Evnt_ID, (int)$Object['EventLimit']);

				// getriggertes Element
				if((int)$Object['EventType'] == 0)
				{
					//!!! (int)$Oject['TriggerVariableID'] Auslöser ID derzeit nur ParentObject, da newTarget noch nicht bekannt.
					// Konfiguration von IPS_SetEventTrigger wird erst mit Neuverlinkung abgeschlossen !!
				   @IPS_SetEventTrigger($Evnt_ID, (int)$Object['TriggerType'], 0);
				   if((int)$Object['TriggerType'] == 4)
					IPS_SetEventTriggerValue($Evnt_ID, $Object['TriggerValue']);
					IPS_SetEventTriggerSubsequentExecution($Evnt_ID, (bool)$Object['TriggerSubsequentExecution']);
					IPS_SetEventActive($Evnt_ID, true);  // Ereignis nach Installation immer aktiv
					$MessageProkoll['Install']['OK'][] = "#3065 Event-Objekt ".$Object['ObjectName'].", neuID #".$Evnt_ID." neu konfiguriert und aktiviert";
				}
				else
				{
					// zyklisches Element
					IPS_SetEventCyclic($Evnt_ID, (int)$Object['CyclicDateType'], (int)$Object['CyclicDateValue'], (int)$Object['CyclicDateDay'], (int)$Object['CyclicDateDayValue'], (int)$Object['CyclicTimeType'], (int)$Object['CyclicTimeValue']);
					//if((int)$Object['CyclicDateType'] == 1)
					IPS_SetEventCyclicDateBounds($Evnt_ID, (float)$Object['CyclicDateFrom'], (float)$Object['CyclicDateTo']);
					//if((int)$Object['CyclicTimeType'] == 1)
					IPS_SetEventCyclicTimeBounds($Evnt_ID, (float)$Object['CyclicTimeFrom'], (float)$Object['CyclicTimeTo']);
					IPS_SetEventActive($Evnt_ID, false);  // Ereignis nach Installation immer inaktiv
					$MessageProkoll['Install']['User'][] = "#3066 Event-Objekt ".$Object['ObjectName'].", neuID #".$Evnt_ID." neu konfiguriert, NICHT aktiviert";
				}

				// PHP-Code einschleusen, wenn vorhanden
				$FuncName   = 'Event'.$Object['ObjectID'];
				if(function_exists($FuncName))
				{
					$FuncContent 					= $FuncName();
					IPS_SetEventScript($Evnt_ID, $FuncContent);
					$MessageProkoll['Install']['OK'][] = "#3067 Event-Objekt ".$Object['ObjectName'].", neuID #".$Evnt_ID." PHP-Code eingebaut";
				}
			   $Object['newObjectID']  = $Evnt_ID;
         return $Object;
		break;

		case 5: // Media-Objekte
			   $MessageProkoll['Install']['Failure'][] = "#3061 Media-Objekt ".$Object['ObjectName'].", altID #".$Object['ObjectID']." nicht angelegt (Option nicht implementiert)";
			   return 0;

			//return $Object;
		break;

		case 6: // Links

		      $Lnk_Name 			= $Object['ObjectName'];
		      if((@$Object['newObjectID'] > 0) && ($Object['isConfigTree'] == 0))
				{
            	$Lnk_ID		= (int)$Object['newObjectID'];
               // prüfen, ob Lnk tats. noch existiert (wenn nicht: anlegen)
            	if(!IPS_ObjectExists($Lnk_ID)) $Lnk_ID = IPS_CreateLink();
            	if($Lnk_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3063 Link-Objekt ".$Object['ObjectName'].", ID #".$Lnk_ID." bereits vorhanden (Update ein)";
				}
				elseif((@$Object['isConfigTree'] == 0) || (@$Object['newObjectID'] == 0)|| (!IPS_ObjectExists((int)$Object['newObjectID'])))
				{
					$Lnk_ID = IPS_CreateLink();
					if($Lnk_ID > 0)
					$MessageProkoll['Install']['OK'][] = "#3072 Link-Objekt ".$Object['ObjectName'].", neuID #".$Lnk_ID." angelegt";
					if($Lnk_ID == 0)
					$MessageProkoll['Install']['Failure'][] = "#3071 Link-Objekt ".$Object['ObjectName'].", , altID #".$Object['ObjectID']." Neuanlage fehlgeschlagen";
				}
				else
				{
				   $MessageProkoll['Install']['OK'][] = "#3074 Link-Objekt ".$Object['ObjectName']." nicht neu konfiguriert (Objekt im Config-Bereich)";
				}
		      if(isset($Object['newParentID'])) IPS_SetParent($Lnk_ID, (int)$Object['newParentID']);
		      IPS_SetName($Lnk_ID, $Lnk_Name);
		      IPS_SetPosition($Lnk_ID, (int)$Object['ObjectPosition']);
		      IPS_SetHidden($Lnk_ID, (bool)$Object['ObjectIsHidden']);
			   IPS_SetPosition($Lnk_ID, (int)$Object['ObjectPosition']);
				IPS_SetInfo($Lnk_ID, $Object['ObjectInfo']);
				IPS_SetIcon($Lnk_ID, $Object['ObjectIcon']);

		      //IPS_SetLinkChildID($LinkID, 12345 /*[Objekt #12345 existiert nicht]*/);
		      //IPS_SetLinkTargetID($LinkID, 12345 /*[Objekt #12345 existiert nicht]*/);

			   $MessageProkoll['Install']['OK'][] = "#3071 Link-Objekt ".$Object['ObjectName'].", neuID #".$Lnk_ID." neu konfiguriert";
            $Object['newObjectID']  = $Lnk_ID;
			return $Object;

		break;
	}
}

// nachträgliche Verlinkung aller neu installierten Objekte
function linknewObjects($ObjLinkTree)
{
   global $ObjInstallTree;
   global $newTgtID;
   global $newObjID;
   global $MessageProkoll;

   for($i=0;$i<count($ObjLinkTree);$i++)
   {
      $newObjID		= 0;
      $newTgtID		= 0;
      // Inventory nach Variablen-, Script-, Event- und Link-Objekten durchsuchen und neue Target-ID finden
      // 2= Variable, 3= Script, 4= Event, 6 = Link
      if(($ObjLinkTree[$i]['ObjectType'] == 2) && ($ObjLinkTree[$i]['VariableCustomAction'] >0))    // Scripts nach austauschbaren IDs durchsuchen
		{
         // neue Target-ID (Action-Script) für Variable finden
			$newTargetID = findNewTargetID($ObjInstallTree, $ObjLinkTree[$i]['VariableCustomAction']);
         IPS_SetVariableCustomAction((int)$ObjLinkTree[$i]['newObjectID'], (int)$newTargetID);
         if($newTargetID >0)
			$MessageProkoll['Link']['OK'][] = "#4011 Variablen-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", neues Actionscript ID $newTargetID zugewiesen";
         if($newTargetID == 0)
			$MessageProkoll['Link']['Failure'][] = "#4010 Variablen-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", kein neues Actionscript zugewiesen (keine ID gefunden)";

	   }
      elseif($ObjLinkTree[$i]['ObjectType'] == 3)     // Scripts nach austauschbaren IDs durchsuchen
		{
         // aktuellen Scriptnamen finden
         $newObjID = 0;
			$Scr  = IPS_GetScript((int)$ObjLinkTree[$i]['newObjectID'])['ScriptFile'];
         changeObjectIDs_inScript($ObjInstallTree, $Scr);
			$MessageProkoll['Link']['OK'][] = "#4021 Script-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", durchsuche Script nach ID's";
	   }
      elseif(($ObjLinkTree[$i]['ObjectType'] == 4) && ($ObjLinkTree[$i]['EventType'] == 0))    // Neuverlinkung nur für nichtzyklische Events
		{
		   $newTgtID   =0;
			$newTargetID = findNewTargetID($ObjInstallTree, $ObjLinkTree[$i]['TriggerVariableID']);

			// neue Verlinkung setzen
			if($newTgtID !=0)
			{
				IPS_SetEventTrigger((int)$ObjLinkTree[$i]['newObjectID'], (int)$ObjLinkTree[$i]['TriggerType'], $newTgtID);
				$MessageProkoll['Link']['OK'][] = "#4031 Event-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", neu verlinkt - Ziel-ID #$newTgtID";
		   }
		   else
		   {
		   	$MessageProkoll['Link']['User'][] = "#4030 Event-Objekt ".$ObjLinkTree[$i]['ObjectName'].", neue ID #".$ObjLinkTree[$i]['newObjectID'].", NICHT verlinkt, keine gültige TargetID oder kein Target innerhalb des Zielprojektes gefunden";
		   }
	   }
      elseif($ObjLinkTree[$i]['ObjectType'] == 6)
		{
		   $newTgtID   =0;
			$newTgtID = findNewTargetID($ObjInstallTree, $ObjLinkTree[$i]['LinkChildID']);
			if($newTgtID !=0)
			{
				IPS_SetLinkTargetID((int)$ObjLinkTree[$i]['newObjectID'], (int)$newTgtID);
				$MessageProkoll['Link']['OK'][] = "#4041 Link-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", neu verlinkt (Ziel-ID $newTgtID)";
			}
			else
			{
				$MessageProkoll['Link']['User'][] = "#4040 Link-Objekt ".$ObjLinkTree[$i]['ObjectName'].", ID #".$ObjLinkTree[$i]['newObjectID'].", NICHT verlinkt, kein Target innerhalb des Zielprojektes gefunden";
			}
	   }

	   // Objekt-Childs durchsuchen
	   if(isset($ObjLinkTree[$i]['ChildrenIDs']))
	   {
	      $newLnkTree = $ObjLinkTree[$i]['ChildrenIDs'];
         linknewObjects($newLnkTree);
	   }
   }
   unset($ObjLinkTree);
}

// sucht neue Target-ID für verlinkte Objekte
function findNewTargetID($ObjLinkTree, $oldTargetID)
{
   global $newTgtID;
   for($i=0;$i<count($ObjLinkTree);$i++)
   {
      if($ObjLinkTree[$i]['ObjectID'] == $oldTargetID)
      {
      	$newTgtID   = $ObjLinkTree[$i]['newObjectID'];
			$i = 9999;  // Abbruch, wenn ID gefunden
      }
		// in Childs suchen (rekursiv)
      if((isset($ObjLinkTree[$i]['ChildrenIDs'])) && ($newTgtID == 0))
      {
			$newObjInstTree   = $ObjLinkTree[$i]['ChildrenIDs'];
         findNewTargetID($newObjInstTree, $oldTargetID);
         unset($newObjInstTree);
      }
   }
   return $newTgtID;
}

// Austausch der Objekt-IDs im Script
function changeObjectIDs_inScript($ObjLinkTree, $Scr)
{
   global $newObjID;
   global $MessageProkoll;

   $ScrContent = file(IPS_GetKernelDir()."scripts\\".$Scr);
	$file 		= fopen(IPS_GetKernelDir()."scripts\\".$Scr, "w");
	$search 		= '/[^0-9\/\{-]([1-5][0-9]{4})[^0-9]/'; // suche 5stellige Zahlen von 10.000 - 59.999
	$counter    = 0;

	foreach ($ScrContent as $z)
	{
	   $newObjID = NULL;
	   $newObjectID = NULL;
		preg_match($search, $z, $matches);
		if(isset($matches[1]))
		{
		   $oldID   		= $matches[1];
			$newObjectID   = findNewObjectID($ObjLinkTree, $oldID);
			if(($matches[1] == $oldID) && ($newObjectID >0))
			{
			   $z = str_replace($oldID, $newObjectID, $z);
			   $MessageProkoll['Script']['OK'][] = "#5011 Script ID#$Scr: Inhalt verändert: Zeile ".($counter + 1).", alte Target-ID #$oldID gegen neue ID #$newObjectID getauscht";
			}
			else
			{
			   $MessageProkoll['Script']['User'][] = "#5010 Script ID#$Scr: Inhalt NICHT verändert: Zeile ".($counter + 1).", alte Target-ID #$oldID nicht innerhalb des Projektes";
			}
		}
		fwrite($file, $z);
		$counter ++;
	}
	unset($ScrContent);
	unset($ObjLinkTree);
	fclose($file);
	return;
}

// sucht neue Object-ID für Script-Variablen
function findNewObjectID($ObjTree, $oldObjID)
{
   global $newObjID;
   for($i=0;$i<count($ObjTree);$i++)
   {
      if($ObjTree[$i]['ObjectID'] == $oldObjID)
      {
      	$newObjID   = $ObjTree[$i]['newObjectID'];
			$i = 9999;  // Abbruch, wenn ID gefunden
      }

	   // in Childs suchen (rekursiv)
	   if(isset($ObjTree[$i]['ChildrenIDs']))
	   {
			$newObjTree   = $ObjTree[$i]['ChildrenIDs'];
	      findNewObjectID($newObjTree, $oldObjID);
	      unset($newObjTree);
	   }
   }
   unset($ObjTree);
   return $newObjID;
}


############################## WFE-Items installieren ####################################################

function installWFC_Items($WFC_TargetID)
{
	global $ObjInstallTree;
	global $newObjID;
	global $WFC_existItemoverwrite;
	global $MessageProkoll;
	$MessageProkoll['WFC']['OK'][] = "#6001 lade WFC-Objektbaum";

	// Inventory des Ziel-WFC laden
	if(@WFC_GetItems($WFC_TargetID))
	$WFC_Target_Inventory   = WFC_GetItems($WFC_TargetID);

	// Inventory des Quell-Projektes laden
	$WFC_Raw		= loadWFCInventory();

	if(isset($WFC_Target_Inventory[0]) && ($WFC_Raw[0] != NULL))
	{
		// Quell-Inventory durchgehen und Items installieren
		$MessageProkoll['WFC']['OK'][] = "#6002 durchsuche QuellWFC-Objektbaum";
		$Cnt  		= count($WFC_Raw);

		for($i=0;$i<$Cnt;$i++)
		{
			// Inventory-String letzte 2 Zeichen abschneiden
				$str  = substr($WFC_Raw[$i], 0, -2);

			// Item-Zeilen in Key|Value-Sätze zerlegen (1.Stufe)
				$WFC_DataSet = explode(';', $str);

			// Key|Value-Sätze in Key und Value zerlegen (2. Stufe)
				for($e=0;$e<count($WFC_DataSet);$e++)
				{
				   $WFC_Values[$e]     = explode('|', $WFC_DataSet[$e]);
				}

			// Suche für alte TargetIDs neue Target-ID und tausche diese aus (nur Objekte mir Target-ID im Objektbaum)
			   $newTargetID   		= NULL;
			   unset						  ($matches);
            $search 					= '/[1-5]\d\d\d\d/'; // suche 5stellige Zahlen von 10.000 - 59.999
            if($WFC_Values[1][1] == 'Category' || $WFC_Values[1][1] == 'InfoWidget' || $WFC_Values[1][1] == 'Graph' || $WFC_Values[1][1] == 'ContentChanger')
				{
	            preg_match($search, $WFC_Values[2][1], $matches);
					if(isset($matches[0])) $oldTargetID   = $matches[0];
					if(isset($matches[0])) $newTargetID	  = findNewObjectID($ObjInstallTree, $matches[0]);
					if($newTargetID != NULL)
					{
						$WFC_Values[2][1] 	= str_replace($oldTargetID, $newTargetID, $WFC_Values[2][1]);
						$MessageProkoll['WFC']['OK'][] = "#6011 WFC altTargetID #$oldTargetID gegen newTargetID #$newTargetID getauscht";
					}
					else
					{
					   $MessageProkoll['WFC']['User'][] = "#6012 WFC Item ".$WFC_Values[1][1].", ".$WFC_Values[3][1]." keine neue TargetID gefunden";
					}
				}
				unset($newObjID);

			// Namen für neues WFC-Item ändern (Präfix "Cpy" hinzufügen)
				if(strpos($WFC_Values[2][1], 'roottp') == 0)
				$WFC_Values[2][1] = str_replace('"name":"', '"name":"Cpy', $WFC_Values[2][1]);

			// Namen für ID (Item) ändern
				if($WFC_Values[3][1] != 'roottp')
				$WFC_Values[3][1] = str_replace($WFC_Values[3][1], 'Cpy'.$WFC_Values[3][1], $WFC_Values[3][1]);

			// Namen für ParentID (Item) ändern
				if($WFC_Values[4][1] != 'roottp')
				$WFC_Values[4][1] = str_replace($WFC_Values[4][1], 'Cpy'.$WFC_Values[4][1], $WFC_Values[4][1]);

			// Root-Item aus Quell-Projekt definieren (wird bei Updates nicht gelöscht)
				if($i == 0) $WFC_RootItem  = $WFC_Values[3][1];

			// Ziel-Inventory nach vorhandenen Elementen durchsuchen
				$Item_exist = 0;
				foreach($WFC_Target_Inventory as $value)
				{
					if($value['ID'] == $WFC_Values[3][1])
					{
						if($WFC_existItemoverwrite == 0) // wenn Überschreib-Obtion abgeschaltet
						{
							$Item_exist = 1;
							$MessageProkoll['WFC']['User'][] = "#6020 WFC-Item ".$WFC_Values[3][1]." nicht gelöscht (Option abgeschaltet)";
							break;
						}
						elseif($WFC_Values[3][1] != $WFC_RootItem)
						{
						   WFC_DeleteItem($WFC_TargetID, $WFC_Values[3][1]); // vorhandenes Item löschen
						   $MessageProkoll['WFC']['OK'][] = "#6021 WFC-Item ".$WFC_Values[3][1]." gelöscht (Option eingeschaltet)";
						}
						if($WFC_Values[3][1] == $WFC_RootItem)
						{
						   $Item_exist = 1;
						}
					}
				}

			// Wenn Item im Ziel-WFC nicht vorhanden, dann installieren
				if($Item_exist == 0)
				{
					if($WFC_Values[3][1] != 'roottp')
					WFC_AddItem($WFC_TargetID, $WFC_Values[3][1], $WFC_Values[1][1], $WFC_Values[2][1], $WFC_Values[4][1]);
					WFC_UpdatePosition($WFC_TargetID, $WFC_Values[3][1], (int)$WFC_Values[5][1]);
					WFC_UpdateVisibility($WFC_TargetID, $WFC_Values[3][1], (bool)$WFC_Values[6][1]);
					$MessageProkoll['WFC']['OK'][] = "#6031 WFC-Item ".$WFC_Values[3][1]." installiert";
				}
				else
				{
				   $MessageProkoll['WFC']['OK'][] = "#6030 WFC-Item ".$WFC_Values[3][1]." nicht installiert, da bereits vorhanden";
				}

			unset($WFC_Values);
			unset($WFC_DataSet);
		}
	}
	else
	{
	   $MessageProkoll['WFC']['User'][] = "#6000 WFCObjektbaum: keine Installation möglich (kein Quell-Inventory oder kein Ziel-WFE gefunden)";
	}
}


// Install-Script ins Projekt-Config Verzeichnis verschieben
function moveInstallScripttoConfig()
{
	global $ObjInstallTree;
	global $MessageProkoll;

	$RootID     = (int)$ObjInstallTree[0]['newObjectID'];
	$search     = 'Config';
	$SrchResult = searchConfigDir($ObjInstallTree);
	if($SrchResult > 0)
	{
		IPS_SetParent($_IPS['SELF'], $SrchResult);
		$MessageProkoll['Info'][] = "#1011 Install-Script: Install-Script und -Protokoll in Config-Ordner verschoben";
	}
	else
	{
		$MessageProkoll['Info'][] = "#1010 Install-Script: Install-Script und -Protokoll NICHT verschoben (kein Config-Ordner im Zielprojekt gefunden)";
	}
	return;
}

// Funktion zum rekursiven Durchsuchen des Obj-Inventorys nach Config-Dir
function searchConfigDir($Array)
{
	global $SrchResult;
	$search	= 'Config';
   $Cnt     = count($Array);
   for($i=0;$i<$Cnt;$i++)
   {
      if($Array[$i]['ObjectName'] == $search)
      {
      	$SrchResult	= (int)$Array[$i]['newObjectID'];
		}

		if((isset($Array[0]['ChildrenIDs'])) && (!isset($SrchResult)))
		{
	      $newArray = $Array[0]['ChildrenIDs'];
	      searchConfigDir($newArray);
		}
   }
	unset($Array);
	unset($newArray);
	return $SrchResult;
}

// Protokoll ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function InstallProtocoll()
{
global $MessageProkoll;

// +++ Installations-Parameter +++++++++++++++++++++++++
	$ps   ='// +++ Installationsprotokoll vom '.date("d.m.Y, H:i:s", time()).' ++++++++++++++++++++++++++++++++++++++++++++'."

";
	$ps   .="/** +++++++++++++++++ Installationsparameter +++++++++++++++++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="	Update: 									".$MessageProkoll['InstallParameters']['Update']."
";
	$ps   .="	Variablenprofile installieren: 	".$MessageProkoll['InstallParameters']['VarProfile']."
";
	$ps   .="	benamste Scripte überschreiben:	".$MessageProkoll['InstallParameters']['ScrOverwrite']."
";
	$ps   .="	WFC-Items überschreiben:			".$MessageProkoll['InstallParameters']['WFCItems']."
";
	$ps   .="+++++++++++++++++++++ Installationsparameter Ende ++++++++++++++++++++++++++++++++++++++++++++++++++

";

// +++ Infos ++++++++++++++++++++++++++++++++++++++
	$ps   .="+++++++++++++++++++++ Installations-Infos ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
";
	for($i=0;$i<count(@$MessageProkoll['Info']);$i++)
	{
		$ps   .="   ".@$MessageProkoll['Info'][$i]."
";
	}
	$ps   .="+++++++++++++++++++++ Installations-Infos Ende +++++++++++++++++++++++++++++++++++++++++++++++++++++

";

// +++ Installation ++++++++++++++++++++++++++++++++++++++
	$ps   .="++++++++++++++++++++ Objekt-Installation +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="		--- OK-Meldungen --------------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Install']['OK']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Install']['OK'][$i]."
";
	}
	$ps   .="		--- OK-Meldungen Ende ---------------------------------------------------------------------

";

	$ps   .="		--- Kontrolle durch User erforderlich -----------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Install']['User']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Install']['User'][$i]."
";
	}
	$ps   .="		--- Kontrolle durch User erforderlich Ende-------------------------------------------------

";

	$ps   .="		--- Fehlermeldungen -----------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Install']['Failure']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Install']['Failure'][$i]."
";
	}
	$ps   .="		--- Fehlermeldungen Ende-------------------------------------------------------------------

";

// +++ WFC-Objekte installieren und verlinken ++++++++++++++++++++++++++++++++++++++
	$ps   .="	+++++++++++++++++ WFC-Objekte installieren und verlinken ++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="		--- OK-Meldungen --------------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['WFC']['OK']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['WFC']['OK'][$i]."
";
	}
	$ps   .="		--- OK-Meldungen Ende ---------------------------------------------------------------------

";

	$ps   .="		--- Kontrolle durch User erforderlich -----------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['WFC']['User']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['WFC']['User'][$i]."
";
	}
	$ps   .="		--- Kontrolle durch User erforderlich Ende-------------------------------------------------

";

	$ps   .="		--- Fehlermeldungen -----------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['WFC']['Failure']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['WFC']['Failure'][$i]."
";
	}
	$ps   .="		--- Fehlermeldungen Ende-------------------------------------------------------------------

";

// +++ Scripte nachbearbeiten ++++++++++++++++++++++++++++++++++++++
	$ps   .="	+++++++++++++++++ ID Austausch in Scripts ++++++++++++++++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="		--- OK-Meldungen --------------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Script']['OK']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Script']['OK'][$i]."
";
	}
	$ps   .="		--- OK-Meldungen Ende ---------------------------------------------------------------------

";

	$ps   .="		--- Kontrolle durch User erforderlich -----------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Script']['User']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Script']['User'][$i]."
";
	}
	$ps   .="		--- Kontrolle durch User erforderlich Ende-------------------------------------------------

";

	$ps   .="		--- Fehlermeldungen -----------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Script']['Failure']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Script']['Failure'][$i]."
";
	}
	$ps   .="		--- Fehlermeldungen Ende-------------------------------------------------------------------

";

// +++ Objekte neu verlinken ++++++++++++++++++++++++++++++++++++++
	$ps   .="	+++++++++++++++++ Objekte neu verlinken ++++++++++++++++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="		--- OK-Meldungen --------------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Link']['OK']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Link']['OK'][$i]."
";
	}
	$ps   .="		--- OK-Meldungen Ende ---------------------------------------------------------------------

";

	$ps   .="		--- Kontrolle durch User erforderlich -----------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Link']['User']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Link']['User'][$i]."
";
	}
	$ps   .="		--- Kontrolle durch User erforderlich Ende-------------------------------------------------

";

	$ps   .="		--- Fehlermeldungen -----------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['Link']['Failure']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['Link']['Failure'][$i]."
";
	}
	$ps   .="		--- Fehlermeldungen Ende-------------------------------------------------------------------

";

	// +++ externe Files installiert ++++++++++++++++++++++++++++++++++++++
	$ps   .="	+++++++++++++++++ Installation externe Files +++++++++++++++++++++++++++++++++++++++++++++++++
";
	$ps   .="		--- OK-Meldungen --------------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['extFiles']['OK']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['extFiles']['OK'][$i]."
";
	}
	$ps   .="		--- OK-Meldungen Ende ---------------------------------------------------------------------

";

	$ps   .="		--- Fehlermeldungen -----------------------------------------------------------------------
";
	for($i=0;$i<count(@$MessageProkoll['extFiles']['Failure']);$i++)
	{
		$ps   .="   	".@$MessageProkoll['extFiles']['Failure'][$i]."
";
	}
	$ps   .="		--- Fehlermeldungen Ende-------------------------------------------------------------------

";

	$ps   .="**/
";

echo $ps;
return $ps;
}


############################### Installations-Protokoll ##################################################
// +++ erstellt Installations-Protokoll Objekt-Inventory für Exportscript ++++++++++++++
function createObjInventoryProtocol($ObjInstInv)
{
	// Object-Inventory Function-Kopf generieren
	$s = "<?
";
	$s .= InstallProtocoll();
	$s .= "// ### InstallationsProtokoll Ende #################################################


";
	$s .= '// Function Object Inventory Install-Protocol'."
";
	$s .= 'function ObjectInventoryProtocol()'."
";
	$s .= '{'."
";
	$s .= '$raw = \''."
";

	// Array Copy-Parameters
	$s .= createCopyParametersString();

	// Daten der Einzelobjekte aus Objekt-Inventory an Export-String anfügen
	$ObjStringArray = ChildGenerator($ObjInstInv);
	//print_r($ObjInstInv);
	$s .= createInventoryString($ObjStringArray);

	// Function Footer
	$s .= "';
";
	$s .= '$Inv	= explode("
",substr(substr($raw, 1), 1, -1)); // ersten und letzten Zeilenumbruch entfernen'."
";
	$s .= 'return $Inv;'."
";
	$s .= "}

";
	$s .= "?>";
	return $s;
}

// generiert rekursiv Protkoll-String für ggf. vorhandene Child-Arrays unter einem Objekt im Objekt-Inventory
function ChildGenerator($Array)
{
	for($i=0;$i<count($Array);$i++)
   {
      $obj[] = createObjectRow($Array[$i]);
		if((isset($Array[$i]['ChildrenIDs'])))
      {
         $newArray = $Array[$i]['ChildrenIDs'];
		   $obj[]	= ChildGenerator($newArray);
		}
   }
   return $obj;
}

// Function Objekt Install Protocol: Datenstring für 1 Objekt generieren
function createObjectRow($Obj)
{
   // Objektstammdaten aus IPS_GetObject
   unset($Obj['ChildrenIDs']);

   // Steuerzeichen CR LF aus Object-Info filtern und ersetzen
	$Obj['ObjectInfo'] = str_replace("
", "§&§", $Obj['ObjectInfo']);

	// Stringstart definieren, 1. Entrag muss ObjectID sein!
   $s   = 'ObjectID,'.$Obj['ObjectID'].';';

   // Inventory Export: Stringteil Objekt-Stammdaten vervollständigen
	for($i=0;$i<count($Obj);$i++)
	{
	   $key		= key($Obj);
	    $s .= key($Obj).','.$Obj[key($Obj)].';';
	    next ($Obj);
	}
	$s .= "
";

	return $s;
}

// +++ Export: geht Objekt-Inventory rekrusiv durch und fügt Objektdaten der Einzelobjekte an Protokoll-String an
function createInventoryString($Array)
{
   $str = '';
	for($i=0;$i<count($Array);$i++)
	{
	   if(is_array($Array[$i]))
		{

		   $newArray = $Array[$i];
		   $str  .= createInventoryString($newArray);

		}
		else
		{
	   	$str .= $Array[$i];
	   }
	}
	unset($Array);

	return $str;
}

// Copy-Parameters String für Install-Protocol generieren
function createCopyParametersString()
{
	global $Parameters;
	//$Array   = $_IPS['InstParameters'];
	$s = 'CopyParameters,;';
	for($i=0;$i<count($Parameters);$i++)
	{
	   $s .=key($Parameters).','.current($Parameters).';';
	   next($Parameters);
	}
	$s .= "
";

	return $s;
}

// Protokoll-File schreiben
function CreateProtocolFile($InstProtocol)
{
	$ScrName    = IPS_GetName($_IPS['SELF'])." InstallProtocol";
	echo "Protokollname: ".$ScrName;
	$Script_ID = IPS_CreateScript(0);
	IPS_SetName($Script_ID, $ScrName);
	IPS_SetParent($Script_ID, $_IPS['SELF']);
	IPS_SetInfo($Script_ID, "This script was created by: RS IPS Exporter ID #".$_IPS['SELF']);
	$fh = fopen(IPS_GetKernelDir()."scripts\\".$Script_ID.".ips.php", 'w') or die("cant open file");
	fwrite($fh, $InstProtocol);
	fclose($fh);
	IPS_SetScriptFile($Script_ID, $Script_ID.'.ips.php');
	echo "Installationsprotokoll-Script \"$ScrName\" ID #$Script_ID angelegt
";
	return $Script_ID;
}

################# Inventory-Daten ###############################################################################

// Function Object Inventory
function ObjectInventory()
{
global $MessageProkoll;
$raw = '
CopyParameters,;VarProfile,1;ScrOverwrite,0;
ObjectID,58214 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts]*/;HasChildren,1;ObjectIcon,;ObjectID,58214 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Rechts;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,27260 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt]*/;isConfigTree,0;
ObjectID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;HasChildren,1;ObjectIcon,;ObjectID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Gerät Parametrieren;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,58214 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts]*/;isConfigTree,0;ConnectionID,0;InstanceID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,13543 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Message]*/;HasChildren,;ObjectIcon,;ObjectID,13543 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Message]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,Message;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392270673;VariableCustomAction,0;VariableCustomProfile,~String;VariableID,13543 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Message]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392270673;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;
ObjectID,22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/;HasChildren,;ObjectIcon,;ObjectID,22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter Nummer;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392246301;VariableCustomAction,42816 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\string_edit]*/;VariableCustomProfile,~TextBox;VariableID,22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392270983;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;
ObjectID,24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/;HasChildren,1;ObjectIcon,;ObjectID,24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parametrierung an Gerät senden;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,34955 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\config_button]*/;VariableCustomProfile,Zwave_config;VariableID,24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392301947;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,;AggregationType,0;
ObjectID,26404 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config]*/;HasChildren,1;ObjectIcon,;ObjectID,26404 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,awake_zwave_set_config;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/;isConfigTree,0;IsBroken,;LastExecute,1392302058;ScriptFile,26404.ips.php;ScriptID,26404 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config]*/;ScriptType,0;
ObjectID,44358 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config\]*/;HasChildren,;ObjectIcon,;ObjectID,44358 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config\]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 44358);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,26404 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;Day,0;Month,0;Year,0;Day,0;Month,0;Year,0;CyclicDateType,0;CyclicDateValue,0;Hour,0;Minute,0;Second,0;Hour,0;Minute,0;Second,0;CyclicTimeType,1;CyclicTimeValue,0;EventActive,;EventID,44358 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config\]*/;EventLimit,0;EventType,0;LastRun,1392302055;NextRun,0;TriggerSubsequentExecution,1;TriggerType,0;TriggerValue,;TriggerVariableID,44362 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Links\Z-Wave Binary Sensor (NodeID 014)\Status]*/;TriggerVariableName,Status;
ObjectID,34955 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\config_button]*/;HasChildren,;ObjectIcon,;ObjectID,34955 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\config_button]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,config_button;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/;isConfigTree,0;IsBroken,;LastExecute,1392301947;ScriptFile,34955.ips.php;ScriptID,34955 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\config_button]*/;ScriptType,0;
ObjectID,28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/;HasChildren,;ObjectIcon,;ObjectID,28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameterwert;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392301945;VariableCustomAction,42816 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\string_edit]*/;VariableCustomProfile,~TextBox;VariableID,28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392301945;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;
ObjectID,42816 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\string_edit]*/;HasChildren,;ObjectIcon,;ObjectID,42816 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\string_edit]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,string_edit;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,12001 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren]*/;isConfigTree,0;IsBroken,;LastExecute,1392301945;ScriptFile,42816.ips.php;ScriptID,42816 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\string_edit]*/;ScriptType,0;
ObjectID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;HasChildren,1;ObjectIcon,;ObjectID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktuelle Parametrierung;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,58214 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts]*/;isConfigTree,0;ConnectionID,0;InstanceID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,11481 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 2]*/;HasChildren,;ObjectIcon,;ObjectID,11481 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 2]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 2;ObjectPosition,2;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392263626;VariableCustomAction,0;VariableCustomProfile,;VariableID,11481 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 2]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,13122 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 9]*/;HasChildren,;ObjectIcon,;ObjectID,13122 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 9]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 9;ObjectPosition,9;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,0;VariableCustomProfile,;VariableID,13122 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 9]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,21274 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 14]*/;HasChildren,;ObjectIcon,;ObjectID,21274 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 14]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 14;ObjectPosition,14;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,0;VariableCustomProfile,;VariableID,21274 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 14]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,22505 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 13]*/;HasChildren,;ObjectIcon,;ObjectID,22505 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 13]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 13;ObjectPosition,13;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392304920;VariableCustomAction,0;VariableCustomProfile,;VariableID,22505 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 13]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,25317 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 3]*/;HasChildren,;ObjectIcon,;ObjectID,25317 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 3]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 3;ObjectPosition,3;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,0;VariableCustomProfile,;VariableID,25317 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 3]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,26681 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 1]*/;HasChildren,;ObjectIcon,;ObjectID,26681 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 1]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 1;ObjectPosition,1;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,0;VariableCustomProfile,;VariableID,26681 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 1]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,31844 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value]*/;HasChildren,1;ObjectIcon,;ObjectID,31844 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,Parameters_Get_Value;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;IsBroken,;LastExecute,1392304920;ScriptFile,31844.ips.php;ScriptID,31844 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value]*/;ScriptType,0;
ObjectID,46143 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value\]*/;HasChildren,;ObjectIcon,;ObjectID,46143 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value\]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 46143);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,31844 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;Day,0;Month,0;Year,0;Day,0;Month,0;Year,0;CyclicDateType,0;CyclicDateValue,0;Hour,0;Minute,0;Second,0;Hour,0;Minute,0;Second,0;CyclicTimeType,1;CyclicTimeValue,0;EventActive,1;EventID,46143 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameters_Get_Value\]*/;EventLimit,0;EventType,0;LastRun,1392304903;NextRun,0;TriggerSubsequentExecution,1;TriggerType,0;TriggerValue,;TriggerVariableID,44362 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Links\Z-Wave Binary Sensor (NodeID 014)\Status]*/;TriggerVariableName,Status;
ObjectID,38972 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 12]*/;HasChildren,;ObjectIcon,;ObjectID,38972 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 12]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 12;ObjectPosition,12;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392304920;VariableCustomAction,0;VariableCustomProfile,;VariableID,38972 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 12]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,55339 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 7]*/;HasChildren,;ObjectIcon,;ObjectID,55339 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 7]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 7;ObjectPosition,7;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392304920;VariableCustomAction,0;VariableCustomProfile,;VariableID,55339 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 7]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
ObjectID,56811 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 5]*/;HasChildren,;ObjectIcon,;ObjectID,56811 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 5]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Parameter 5;ObjectPosition,5;ObjectSummary,;ObjectType,2;ParentID,42502 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung]*/;isConfigTree,0;VariableAction,0;VariableChanged,1392304920;VariableCustomAction,0;VariableCustomProfile,;VariableID,56811 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 5]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1392304920;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,1;AggregationType,0;
';
$echo = "#1001 Quell-ObjektInventory geladen";
$MessageProkoll['Info'][]  = $echo;
$Inv	= explode("
",substr(substr($raw, 1), 1, -1)); // ersten und letzten Zeilenumbruch entfernen
return $Inv;
}

// Variablen-Profile Inventory
function VarProfileInventory()
{
global $MessageProkoll;
$raw = '
ProfileName,~String;Digits,0;Icon,;IsReadOnly,1;MaxValue,0;MinValue,0;Prefix,;ProfileType,3;StepSize,0;Suffix,;|
ProfileName,~TextBox;Digits,0;Icon,;IsReadOnly,1;MaxValue,0;MinValue,0;Prefix,;ProfileType,3;StepSize,0;Suffix,;|
ProfileName,Zwave_config;Digits,0;Icon,;IsReadOnly,;MaxValue,0;MinValue,0;Prefix,;ProfileType,1;StepSize,0;Suffix,;|Color,65280 /*[Objekt #65280 existiert nicht]*/;Icon,;Name,Starten;Value,0;§
';
$echo = "#1002 VariablenProfile-ObjektInventory geladen";
$MessageProkoll['Info'][]  = $echo;
$VarProfiles	= explode("
",substr(substr($raw, 2), 0, -1)); // ersten und letzten Zeilenumbruch entfernen
return $VarProfiles;
}

// Function WFC Inventory
function loadWFCInventory()
{
global $MessageProkoll;
$raw = '
';
$echo = "#1003 WFC-ObjektInventory geladen";
$MessageProkoll['Info'][]  = $echo;
$WFC_Inventory	= explode("
",substr(substr($raw, 2), 0, -1)); // ersten und letzten Zeilenumbruch entfernen
return $WFC_Inventory;
}

// #### Script-Exports ############################################################################################################

// Script "awake_zwave_set_config" ------------------------------------------------------------------------------------------------------
function awakezwavesetconfig26404()
{
return
'<?
##### Project Exporter Comment: Script Version Stand 13.02.2014 16:24 #####



$zwavenode = 45372 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Links\Z-Wave Binary Sensor (NodeID 014)]*/;
$paranr = GetValue(22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/);
$paravalue = GetValue(28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/);

$nr = intval($paranr);
$pa = intval($paravalue);

$config = ZW_ConfigurationSetValue($zwavenode, $nr, $pa);

if ($config == true ) {
	WFC_SendNotification(24364 /*[Administrator]*/, §\'Parametrierung wurde durchgeführt§\', §\'Die Parametrierung von Parameternummer §\'.$paranr.§\' auf den Wert §\'.$paravalue.§\' wurde erfolgreich durchgeführt.§\', §\'§\', 10);
	}
	else
	{
	WFC_SendNotification(24364 /*[Administrator]*/, §\'Fehler !§\', §\'Die Parametrierung von Parameternummer §\'.$paranr.§\' auf den Wert §\'.$paravalue.§\' konnte nicht durchgeführt werden !§\', §\'§\', 10);
	}
	
	IPS_SetEventActive(44358 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config\]*/, false);
	IPS_SetHidden(24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/, false);
	IPS_SetHidden(22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/,false);
	IPS_SetHidden(28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/,false);
	IPS_SetHidden(13543 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Message]*/,true);

?>
';
}

// Script "config_button" ------------------------------------------------------------------------------------------------------
function configbutton34955()
{
return
'<?
##### Project Exporter Comment: Script Version Stand 13.02.2014 16:24 #####



if($IPS_SENDER == "WebFront")
{
   SetValue($IPS_VARIABLE, $IPS_VALUE);
    switch($IPS_VALUE)
   {
	case 0:
	IPS_SetEventActive(44358 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden\awake_zwave_set_config\]*/, true);
	IPS_SetHidden(24684 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parametrierung an Gerät senden]*/, true);
	IPS_SetHidden(22989 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameter Nummer]*/,true);
	IPS_SetHidden(28391 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Parameterwert]*/,true);
	IPS_SetHidden(13543 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Gerät Parametrieren\Message]*/,false);
   break;
   }
}


?>
';
}

// Script "string_edit" ------------------------------------------------------------------------------------------------------
function stringedit42816()
{
return
'<?
##### Project Exporter Comment: Script Version Stand 13.02.2014 16:24 #####



if($_IPS[§\'SENDER§\'] == "WebFront")
{
   SetValue($_IPS[§\'VARIABLE§\'], $_IPS[§\'VALUE§\']);
}

?>
';
}

// Script "Parameters_Get_Value" ------------------------------------------------------------------------------------------------------
function ParametersGetValue31844()
{
return
'<?
##### Project Exporter Comment: Script Version Stand 13.02.2014 16:24 #####



$instanz = 45372 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Links\Z-Wave Binary Sensor (NodeID 014)]*/;

$para1 = ZW_ConfigurationGetValue($instanz, 1);
$para2 = ZW_ConfigurationGetValue($instanz, 2);
$para3 = ZW_ConfigurationGetValue($instanz, 3);
$para5 = ZW_ConfigurationGetValue($instanz, 5);
$para7 = ZW_ConfigurationGetValue($instanz, 7);
$para9 = ZW_ConfigurationGetValue($instanz, 9);
$para12 = ZW_ConfigurationGetValue($instanz, 12);
$para13 = ZW_ConfigurationGetValue($instanz, 13);
$para14 = ZW_ConfigurationGetValue($instanz, 14);

SetValue(26681 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 1]*/,$para1);
SetValue(11481 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 2]*/,$para2);
SetValue(25317 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 3]*/,$para3);
SetValue(56811 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 5]*/,$para5);
SetValue(55339 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 7]*/,$para7);
SetValue(13122 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 9]*/,$para9);
SetValue(38972 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 12]*/,$para12);
SetValue(22505 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 13]*/,$para13);
SetValue(21274 /*[ADMINISTRATOR\Z-WAVE SENSOREN\Fibaro Türkontakt\Rechts\Aktuelle Parametrierung\Parameter 14]*/,$para14);



?>
';
}

?>

Danke, werd ich mir mal ansehen.

Wenn ich mit meinem fertig bin, werd ich’s auch noch veröffentlichen. Habe es dazu gleich mit einem automatischen Installier programmiert…

@Flobo:

Für welche Geräte verwendest du dein Konfigurations-Skript und auf welche Variablen triggerst du beim WakeUp?

Ich habe festgestellt, dass bei einigen meiner Geräte z.B. die Battery-Variable erst 1-2 Sekunden nach der Data-Variable (wenn denn vorhanden) aktualisiert wird. In diesem Fall hat sich das Gerät aber wohl schon wieder schlafen gelegt und ein Konfigurations-Befehl läuft ins Leere… Trigger auf Data funktioniert dann.

Manche Geräte aktualisieren dann wiederum nicht die Data-Variablen beim WakeUp.

Ich versuche hier noch eine allgemein gültige Lösung zu finden, daher würde mich interessieren wie das bei deinen Geräten so ist.

Grüße,
hirschbrat

Huhu,

eine Allgemeingültige Lösung glaub ich nicht dran eher ne Herstellerbasierende, momentan hab ich hier nur nen Haufen Fibaro rumliegen.
Ich geh auf die „Status“ Variable

Hallo hirschbrat,

bist du in diesem Projekt schon weitergekommen? Stelle mich gerne als Betatester zur Verfügung:D

Habe momentan einen Fibaro Motion Sensor im Test.

Gruß

Burkhard

Ich hätte von fibaro den fenstersensor im Angebot… von aeon Labs den multisensor(Bewegungsmelder)