Dreamboxen mit IPS steuern

Hi,
das funktioniert.
Meldung verschwindet auch nach 10 Sekunden.

Habe es jetzt so gemacht…


<?

//Eigenschaft verändern
WWWReader_SetPage(10581 /*[WWW Reader]*/,"http://192.168.178.3/web/message?text=Es%20hat%20geklingelt&type=1&timeout=10");
IPS_ApplyChanges(10581 /*[WWW Reader]*/);
WWWReader_UpdatePage(10581 /*[WWW Reader]*/);

?>

Damit geht es…

Hallo Leute,

Ist es mit IP-Symcon möglich, spontane Datenänderungen einer Dreambox ohne pollen mit zu bekommen? Sprich, z.B. über eine ClientSocket-Verbindung oder dgl.?

Hallo,

habe die Scripte jetzt eingebunden ich bekomme zwar Daten rein aber habe im WebFront leider keine schöne Auteilung mit den Tabellen und Bildern wie bei euch anderen. Kann mal bitte jemand alle Scripte mit allen Änderungen die nach Post 101 passiert sind reinstellen?? Danke schon mal im vorraus.

…ehrlich gesagt fehlt mir jetzt das Verständnis zu dieser Frage…

Joachim

Ich kann mal nen Export machen und posten , hab aber nicht den aktuellsten Stand , dazu müsste hier ein anderer nen Export mit dem raketenschnecke Tool machen .

Gesendet von meinem iPhone mit Tapatalk

Genau an sowas habe ich gedacht Fraunhofer! Wäre echt nett wenn du nen Export machen könntest. Oder sich jemand anderes mit nen aktuelleren stand was rein stellen könnte.

Kann den bitte jemand etwas rein stellen??

Sorry ,

bin im Urlaub und nur mit dem Mac online, unten der Export mit dem Raketenschnecke Tool , einfach nen script anlegen den mega Text hier rein kopieren, und ausführen ,das wars.

Ich denke dann hast du alles was du brauchst , wie gesagt ich habe nicht den aktuellsten stand aber es reicht um zu sehen wer was guckt und was kommt . Eine echte Steuerung hab ich nicht , braucht man auch nicht , würde ich sagen.

Viel Spass damit


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

/**********************************************************************************************************************
	Project: Dreambox (Quell-ID: 51640), generated on 07.07.2014, 21:44 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 (Konfiguration siehe Block "Konfig" unten)            *
*  Es werden alle notwendigen Strukturen (Kategorien, Variablen, Scripte etc) aus dem Quell-Projekt im Ziel-System    *
*  angelegt.                                                                                                 			 *
*	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.                             *
*  Bei Fragen zum installierten Projekt bitte den Projektautor fragen!						                               *
*                                                                                                                     *
**********************************************************************************************************************/

###############################  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 Dreambox (Quell-ID: 51640) vom 07.07.2014 21:44 #####

// IPS Version detektieren
   $IPS_VERSION		= IPS_GetKernelVersion();

// 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'], 'Dreambox (Quell-ID: 51640) 2014_07_07-21_44'.', 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;
	global $IPS_VERSION;

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

	// ObjectInfo Zeilenumbruch zurückwandeln
	$Object['ObjectInfo'] = str_replace("§&§", "
", $Object['ObjectInfo']);
	$Object['ObjectInfo'] = str_replace("§&&§", ",", $Object['ObjectInfo']);
	$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']);

				// Variablenwert schreiben (nur bei Neuinstallation)
				if($Parameters['Update'] = 0)
				{
					switch ((int)$Object['ValueType'])
					{
					   //  Variablenwert je nach Variablentyp schreiben (0= Boolean, 1= Integer, 2= Float; 3= String)
					   case 0:
					      SetValue($Var_ID, (bool)$Object['ValueBoolean']);
					   break;

					   case 1:
					      SetValue($Var_ID, (int)$Object['ValueInteger']);
					   break;

					   case 2:
					      SetValue($Var_ID, (float)$Object['ValueFloat']);
					   break;

						case 3:
					      SetValue($Var_ID, $Object['ValueString']);
					   break;
					}
				}

				// Ab IPS V 3.0:
				if(IPS_GetKernelVersion() > 2.9)
				{
					AC_SetGraphStatus($ah_ID, $Var_ID, (bool)$Object['GraphStatus']);
				}
            IPS_ApplyChanges($ah_ID);

			   $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']);

					// Prüfung IPS-Version (ab 3.1 wurden die SetEventCyclic-Befehle geändert)
					if($IPS_VERSION < 3.1)
					{
					   // Wenn Zielsystem-Version < 3.1 ist
						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']);
					}
					else
					{
					   // Wenn Zielsystem >= 3.1 ist
					   if($Object['CyclicDateFrom'] > 0)
					   {
					   	IPS_SetEventCyclicDateFrom($Evnt_ID, (int)date("d", $Object['CyclicDateFrom']), (int)date("m", $Object['CyclicDateFrom']), (int)date("Y", $Object['CyclicDateFrom']));
					 	}
					 	else
					 	{
					 	   IPS_SetEventCyclicDateFrom($Evnt_ID, 0, 0, 0);
					 	}

					 	if($Object['CyclicDateTo'] > 0)
					 	{
							IPS_SetEventCyclicDateTo($Evnt_ID, (int)date("d", $Object['CyclicDateTo']), (int)date("m", $Object['CyclicDateTo']), (int)date("Y", $Object['CyclicDateTo']));
						}
						else
						{
						   IPS_SetEventCyclicDateTo($Evnt_ID, 0, 0, 0);
						}
						IPS_SetEventCyclicTimeFrom($Evnt_ID, (int)date("H", $Object['CyclicTimeFrom']), (int)date("i", $Object['CyclicTimeFrom']), (int)date("s", $Object['CyclicTimeFrom']));
						IPS_SetEventCyclicTimeTo($Evnt_ID, (int)date("H", $Object['CyclicTimeTo']), (int)date("i", $Object['CyclicTimeTo']), (int)date("s", $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";

	// Objektbaum Ziel-ID (Root-ID des Projekts)
	$ZielID                 = $ObjInstallTree[0]['newObjectID'];

	// 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)
				{
				   $StartPos         = strpos($WFC_Values[2][1], '"name":')+8;
				   $EndPos           = strpos($WFC_Values[2][1], '","', $StartPos);
				   $OldItemName      = substr($WFC_Values[2][1], $StartPos, $EndPos - $StartPos);
				   $NewItemName      = substr($WFC_Values[2][1], $StartPos, $EndPos - $StartPos).'_ScrID'.$ZielID;
					$WFC_Values[2][1] = str_replace($OldItemName, $NewItemName, $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], $WFC_Values[3][1].'_ScrID'.$ZielID, $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], $WFC_Values[4][1].'_ScrID'.$ZielID, $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)
				{
				   // wenn WFE-Objekt gefunden (aktuelle Syntax 'ItemName_ScrID12345' bzw. alte Syntax 'CpyItemName')
					if(($value['ID'] == $WFC_Values[3][1]) || ($value['ID'] == 'Cpy'.substr($WFC_Values[3][1], 0, -11)))
					{
					   // wenn Überschreib-Option abgeschaltet und WFE Objekt nicht alter Syntax ('CpyItemName') entspricht
						if(($WFC_existItemoverwrite == 0) && ($value['ID'] != 'Cpy'.substr($WFC_Values[3][1], 0, -11)))
						{
							$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) && ($value['ID'] != 'Cpy'.substr($WFC_Values[3][1], 0, -11)))
						{
						   WFC_DeleteItem($WFC_TargetID, $WFC_Values[3][1]); // vorhandenes Item (neue Syntax) löschen
						   $MessageProkoll['WFC']['OK'][] = "#6021 WFC-Item ".$WFC_Values[3][1]." gelöscht (Option eingeschaltet)";
						}
						elseif($value['ID'] == 'Cpy'.substr($WFC_Values[3][1], 0, -11))
						{
						   WFC_DeleteItem($WFC_TargetID, 'Cpy'.substr($WFC_Values[3][1], 0, -11)); // vorhandenes Item (alte Syntax) löschen
						   $MessageProkoll['WFC']['OK'][] = "#6022 WFC-Item ".$WFC_Values[3][1]." veraltetes WFE-Objekt ('CpyItemname') gelöscht";
						}

						if($WFC_Values[3][1] == $WFC_RootItem)
						{
						   // wenn Root-Item veraltete Syntax hat
						   $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);
		}
		IPS_ApplyChanges($WFC_TargetID);
	}
	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,51640 /*[Geräte\Dreambox]*/;HasChildren,1;ObjectIcon,;ObjectID,51640 /*[Geräte\Dreambox]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,56760 /*[Geräte]*/;isConfigTree,0;
ObjectID,16705 /*[Geräte\Dreambox\Web Interface ]*/;HasChildren,1;ObjectIcon,;ObjectID,16705 /*[Geräte\Dreambox\Web Interface ]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Web Interface ;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,51640 /*[Geräte\Dreambox]*/;isConfigTree,0;
ObjectID,12885 /*[Geräte\Dreambox\Web Interface \Links]*/;HasChildren,1;ObjectIcon,;ObjectID,12885 /*[Geräte\Dreambox\Web Interface \Links]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Links;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,16705 /*[Geräte\Dreambox\Web Interface ]*/;isConfigTree,0;
ObjectID,17654 /*[Geräte\Dreambox\Web Interface \Links\Aktuelle Programm Info´s Wozimmer]*/;HasChildren,;ObjectIcon,;ObjectID,17654 /*[Geräte\Dreambox\Web Interface \Links\Aktuelle Programm Info´s Wozimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktuelle Programm Info´s Wozimmer;ObjectPosition,2;ObjectSummary,;ObjectType,6;ParentID,12885 /*[Geräte\Dreambox\Web Interface \Links]*/;isConfigTree,0;LinkChildID,56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/;LinkID,17654 /*[Geräte\Dreambox\Web Interface \Links\Aktuelle Programm Info´s Wozimmer]*/;TargetID,56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/;TargetName,Aktuelle Programm Info´s;
ObjectID,38981 /*[Geräte\Dreambox\Web Interface \Links\Aktueller Sender Wohnzimmer]*/;HasChildren,;ObjectIcon,;ObjectID,38981 /*[Geräte\Dreambox\Web Interface \Links\Aktueller Sender Wohnzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktueller Sender Wohnzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,6;ParentID,12885 /*[Geräte\Dreambox\Web Interface \Links]*/;isConfigTree,0;LinkChildID,37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/;LinkID,38981 /*[Geräte\Dreambox\Web Interface \Links\Aktueller Sender Wohnzimmer]*/;TargetID,37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/;TargetName,Aktueller Sender Wohnzimmer;
ObjectID,46800 /*[Geräte\Dreambox\Web Interface \Links\Standby Status]*/;HasChildren,;ObjectIcon,;ObjectID,46800 /*[Geräte\Dreambox\Web Interface \Links\Standby Status]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Standby Status;ObjectPosition,0;ObjectSummary,;ObjectType,6;ParentID,12885 /*[Geräte\Dreambox\Web Interface \Links]*/;isConfigTree,0;LinkChildID,43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/;LinkID,46800 /*[Geräte\Dreambox\Web Interface \Links\Standby Status]*/;TargetID,43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/;TargetName,Standby Status;
ObjectID,21731 /*[Geräte\Dreambox\Web Interface \Unten]*/;HasChildren,1;ObjectIcon,;ObjectID,21731 /*[Geräte\Dreambox\Web Interface \Unten]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unten;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,16705 /*[Geräte\Dreambox\Web Interface ]*/;isConfigTree,0;
ObjectID,35633 /*[Geräte\Dreambox\Web Interface \Unten\Programmvorschau von TV Movie]*/;HasChildren,;ObjectIcon,;ObjectID,35633 /*[Geräte\Dreambox\Web Interface \Unten\Programmvorschau von TV Movie]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Programmvorschau von TV Movie;ObjectPosition,0;ObjectSummary,;ObjectType,6;ParentID,21731 /*[Geräte\Dreambox\Web Interface \Unten]*/;isConfigTree,0;LinkChildID,57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/;LinkID,35633 /*[Geräte\Dreambox\Web Interface \Unten\Programmvorschau von TV Movie]*/;TargetID,57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/;TargetName,Programmvorschau von TV Movie;
ObjectID,29401 /*[Geräte\Dreambox\Web Interface \Rechts]*/;HasChildren,1;ObjectIcon,;ObjectID,29401 /*[Geräte\Dreambox\Web Interface \Rechts]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Rechts;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,16705 /*[Geräte\Dreambox\Web Interface ]*/;isConfigTree,0;
ObjectID,36897 /*[Geräte\Dreambox\Web Interface \Rechts\Aktueller Sender Arbeitszimmer]*/;HasChildren,;ObjectIcon,;ObjectID,36897 /*[Geräte\Dreambox\Web Interface \Rechts\Aktueller Sender Arbeitszimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktueller Sender Arbeitszimmer;ObjectPosition,0;ObjectSummary,;ObjectType,6;ParentID,29401 /*[Geräte\Dreambox\Web Interface \Rechts]*/;isConfigTree,0;LinkChildID,38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/;LinkID,36897 /*[Geräte\Dreambox\Web Interface \Rechts\Aktueller Sender Arbeitszimmer]*/;TargetID,38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/;TargetName,Aktueller Sender;
ObjectID,42452 /*[Geräte\Dreambox\Web Interface \Rechts\Dreambox Arbeitszimmer]*/;HasChildren,;ObjectIcon,;ObjectID,42452 /*[Geräte\Dreambox\Web Interface \Rechts\Dreambox Arbeitszimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Arbeitszimmer;ObjectPosition,0;ObjectSummary,;ObjectType,6;ParentID,29401 /*[Geräte\Dreambox\Web Interface \Rechts]*/;isConfigTree,0;LinkChildID,38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/;LinkID,42452 /*[Geräte\Dreambox\Web Interface \Rechts\Dreambox Arbeitszimmer]*/;TargetID,38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/;TargetName,Dreambox Arbeitszimmer;
ObjectID,55597 /*[Geräte\Dreambox\Web Interface \Rechts\Aktuelle Programm Info´s Arbeitzimmer]*/;HasChildren,;ObjectIcon,;ObjectID,55597 /*[Geräte\Dreambox\Web Interface \Rechts\Aktuelle Programm Info´s Arbeitzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktuelle Programm Info´s Arbeitzimmer;ObjectPosition,2;ObjectSummary,;ObjectType,6;ParentID,29401 /*[Geräte\Dreambox\Web Interface \Rechts]*/;isConfigTree,0;LinkChildID,13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/;LinkID,55597 /*[Geräte\Dreambox\Web Interface \Rechts\Aktuelle Programm Info´s Arbeitzimmer]*/;TargetID,13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/;TargetName,Aktuelle Programm Info´s;
ObjectID,29702 /*[Geräte\Dreambox\DreamBox Wohnzimmer]*/;HasChildren,1;ObjectIcon,;ObjectID,29702 /*[Geräte\Dreambox\DreamBox Wohnzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,DreamBox Wohnzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,51640 /*[Geräte\Dreambox]*/;isConfigTree,0;
ObjectID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;HasChildren,1;ObjectIcon,;ObjectID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Wohnzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,29702 /*[Geräte\Dreambox\DreamBox Wohnzimmer]*/;isConfigTree,0;ConnectionID,0;InstanceID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,10018 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen ]*/;HasChildren,1;ObjectIcon,;ObjectID,10018 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen ]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Infos zur Sendung anzeigen ;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1404761405;ScriptFile,10018.ips.php;ScriptID,10018 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen ]*/;ScriptType,0;
ObjectID,24465 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen \]*/;HasChildren,;ObjectIcon,;ObjectID,24465 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen \]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 24465);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,10018 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen ]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;CyclicDateFrom,1393887600;CyclicDateTo,0;CyclicDateType,0;CyclicDateValue,0;CyclicTimeFrom,943916400;CyclicTimeTo,943916400;CyclicTimeType,2;CyclicTimeValue,15;EventActive,1;EventID,24465 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Infos zur Sendung anzeigen \]*/;EventLimit,0;EventType,1;LastRun,1404761400;NextRun,1404762300;TriggerSubsequentExecution,;TriggerType,0;TriggerValue,;TriggerVariableID,0;
ObjectID,12194 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Sendungsfortschritt]*/;HasChildren,;ObjectIcon,;ObjectID,12194 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Sendungsfortschritt]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Sendungsfortschritt;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404761405;VariableCustomAction,0;VariableCustomProfile,;VariableID,12194 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Sendungsfortschritt]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761405;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,12336 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Reload Webcontrol]*/;HasChildren,;ObjectIcon,;ObjectID,12336 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Reload Webcontrol]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Reload Webcontrol;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1393867245;ScriptFile,12336.ips.php;ScriptID,12336 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Reload Webcontrol]*/;ScriptType,0;
ObjectID,13553 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Dreambox Webcontrol]*/;HasChildren,;ObjectIcon,;ObjectID,13553 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Dreambox Webcontrol]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Webcontrol;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1393867228;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,13553 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Dreambox Webcontrol]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1393867245;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,18569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent]*/;HasChildren,1;ObjectIcon,;ObjectID,18569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Getcurrent;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1404761400;ScriptFile,18569.ips.php;ScriptID,18569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent]*/;ScriptType,0;
ObjectID,27759 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent\]*/;HasChildren,;ObjectIcon,;ObjectID,27759 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent\]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 27759);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,18569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;CyclicDateFrom,1393801200;CyclicDateTo,0;CyclicDateType,0;CyclicDateValue,0;CyclicTimeFrom,943916400;CyclicTimeTo,943916400;CyclicTimeType,2;CyclicTimeValue,15;EventActive,1;EventID,27759 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Getcurrent\]*/;EventLimit,0;EventType,1;LastRun,1404761400;NextRun,1404762300;TriggerSubsequentExecution,;TriggerType,0;TriggerValue,;TriggerVariableID,0;
ObjectID,24637 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\IP]*/;HasChildren,;ObjectIcon,;ObjectID,24637 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\IP]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,IP;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1393938245;VariableCustomAction,0;VariableCustomProfile,;VariableID,24637 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\IP]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1393938245;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,26456 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Programm]*/;HasChildren,;ObjectIcon,;ObjectID,26456 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Programm]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Programm;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,0;VariableCustomAction,0;VariableCustomProfile,;VariableID,26456 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Programm]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,0;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,37133 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\getPowerstate]*/;HasChildren,;ObjectIcon,;ObjectID,37133 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\getPowerstate]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,getPowerstate;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1393921652;ScriptFile,37133.ips.php;ScriptID,37133 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\getPowerstate]*/;ScriptType,0;
ObjectID,37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/;HasChildren,;ObjectIcon,;ObjectID,37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktueller Sender Wohnzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404761405;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761405;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/;HasChildren,;ObjectIcon,;ObjectID,43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Standby Status;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1394489379;VariableCustomAction,44983 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer	oggleStandby]*/;VariableCustomProfile,IP_50;VariableID,43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1395843981;ValueBoolean,1;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,0;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,44983 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer	oggleStandby]*/;HasChildren,;ObjectIcon,;ObjectID,44983 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer	oggleStandby]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,toggleStandby;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1395843982;ScriptFile,44983.ips.php;ScriptID,44983 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer	oggleStandby]*/;ScriptType,0;
ObjectID,56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/;HasChildren,;ObjectIcon,;ObjectID,56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktuelle Programm Info´s;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,43014 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404761405;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761405;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,41246 /*[Geräte\Dreambox\Dreambox Arbeitszimmer]*/;HasChildren,1;ObjectIcon,;ObjectID,41246 /*[Geräte\Dreambox\Dreambox Arbeitszimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Arbeitszimmer;ObjectPosition,0;ObjectSummary,;ObjectType,0;ParentID,51640 /*[Geräte\Dreambox]*/;isConfigTree,0;
ObjectID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;HasChildren,1;ObjectIcon,;ObjectID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Arbeitszimmer;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,41246 /*[Geräte\Dreambox\Dreambox Arbeitszimmer]*/;isConfigTree,0;ConnectionID,0;InstanceID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,20840 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\e2_function]*/;HasChildren,;ObjectIcon,;ObjectID,20840 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\e2_function]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,e2_function;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1393853787;ScriptFile,20840.ips.php;ScriptID,20840 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\e2_function]*/;ScriptType,0;
ObjectID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;HasChildren,1;ObjectIcon,;ObjectID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,TV Informationen Arbeitzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;ConnectionID,0;InstanceID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/;HasChildren,;ObjectIcon,;ObjectID,13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktuelle Programm Info´s;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404512107;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761404;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/;HasChildren,;ObjectIcon,;ObjectID,16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Empfangspegel;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404761404;VariableCustomAction,0;VariableCustomProfile,~Intensity.100;VariableID,16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761405;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,23032 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sendungsfortschritt]*/;HasChildren,;ObjectIcon,;ObjectID,23032 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sendungsfortschritt]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Sendungsfortschritt;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404512107;VariableCustomAction,0;VariableCustomProfile,~Intensity.100;VariableID,23032 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sendungsfortschritt]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761404;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,1;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;HasChildren,1;ObjectIcon,;ObjectID,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,Sender Anzeigen;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1404761404;ScriptFile,23358.ips.php;ScriptID,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;ScriptType,0;
ObjectID,26614 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen\]*/;HasChildren,;ObjectIcon,;ObjectID,26614 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen\]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 26614);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;CyclicDateFrom,1385766000;CyclicDateTo,0;CyclicDateType,0;CyclicDateValue,0;CyclicTimeFrom,943916400;CyclicTimeTo,943916400;CyclicTimeType,2;CyclicTimeValue,15;EventActive,1;EventID,26614 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen\]*/;EventLimit,0;EventType,1;LastRun,1404761400;NextRun,1404762300;TriggerSubsequentExecution,;TriggerType,0;TriggerValue,;TriggerVariableID,0;
ObjectID,38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/;HasChildren,;ObjectIcon,;ObjectID,38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Aktueller Sender;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404512107;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761404;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/;HasChildren,;ObjectIcon,;ObjectID,38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Arbeitszimmer;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404513001;VariableCustomAction,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;VariableCustomProfile,IP_50;VariableID,38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761401;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,0;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,46214 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Arbeitzimmer IP Dreambox]*/;HasChildren,;ObjectIcon,;ObjectID,46214 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Arbeitzimmer IP Dreambox]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,Arbeitzimmer IP Dreambox;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1393938282;VariableCustomAction,0;VariableCustomProfile,;VariableID,46214 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Arbeitzimmer IP Dreambox]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1393938282;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,48973 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Wohnzimmer]*/;HasChildren,;ObjectIcon,;ObjectID,48973 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Wohnzimmer]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox Wohnzimmer;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,21651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer]*/;isConfigTree,0;VariableAction,0;VariableChanged,1403958601;VariableCustomAction,23358 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sender Anzeigen]*/;VariableCustomProfile,IP_50;VariableID,48973 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Wohnzimmer]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404761401;ValueBoolean,1;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,0;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,22010 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Dreambox ausschalten]*/;HasChildren,;ObjectIcon,;ObjectID,22010 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Dreambox ausschalten]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Dreambox ausschalten;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1388757976;ScriptFile,22010.ips.php;ScriptID,22010 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Dreambox ausschalten]*/;ScriptType,0;
ObjectID,44634 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\KonstantenArray]*/;HasChildren,;ObjectIcon,;ObjectID,44634 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\KonstantenArray]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,KonstantenArray;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1393937669;ScriptFile,44634.ips.php;ScriptID,44634 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\KonstantenArray]*/;ScriptType,0;
ObjectID,56606 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm ]*/;HasChildren,1;ObjectIcon,;ObjectID,56606 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm ]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,TV Programm ;ObjectPosition,0;ObjectSummary,;ObjectType,1;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;ConnectionID,0;InstanceID,56606 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm ]*/;InstanceStatus,102;LastChange,0;ModuleID,{485D0419-BE97-4548-AA9C-C083EB82E61E};ModuleName,Dummy Module;ModuleType,3;
ObjectID,40299 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie ]*/;HasChildren,1;ObjectIcon,;ObjectID,40299 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie ]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,1;ObjectIsReadOnly,;ObjectName,TV Movie ;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,56606 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm ]*/;isConfigTree,0;IsBroken,;LastExecute,1404762120;ScriptFile,40299.ips.php;ScriptID,40299 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie ]*/;ScriptType,0;
ObjectID,44170 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie \]*/;HasChildren,;ObjectIcon,;ObjectID,44170 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie \]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 44170);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,40299 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie ]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;CyclicDateFrom,1385161200;CyclicDateTo,0;CyclicDateType,0;CyclicDateValue,0;CyclicTimeFrom,943916400;CyclicTimeTo,943916400;CyclicTimeType,2;CyclicTimeValue,3;EventActive,1;EventID,44170 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \TV Movie \]*/;EventLimit,0;EventType,1;LastRun,1404762120;NextRun,1404762300;TriggerSubsequentExecution,;TriggerType,0;TriggerValue,;TriggerVariableID,0;
ObjectID,57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/;HasChildren,;ObjectIcon,;ObjectID,57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Programmvorschau von TV Movie;ObjectPosition,0;ObjectSummary,;ObjectType,2;ParentID,56606 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm ]*/;isConfigTree,0;VariableAction,0;VariableChanged,1404760681;VariableCustomAction,0;VariableCustomProfile,~HTMLBox;VariableID,57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/;VariableIsBinary,;VariableIsLocked,;VariableProfile,;VariableUpdated,1404762120;ValueBoolean,;ValueFloat,0;ValueInteger,0;ValueString,;ValueType,3;ValueVariant,;LoggingStatus,;AggregationType,0;GraphStatus,1;
ObjectID,58576 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit]*/;HasChildren,1;ObjectIcon,;ObjectID,58576 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Verfügbarkeit;ObjectPosition,0;ObjectSummary,;ObjectType,3;ParentID,18018 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer]*/;isConfigTree,0;IsBroken,;LastExecute,1404761401;ScriptFile,58576.ips.php;ScriptID,58576 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit]*/;ScriptType,0;
ObjectID,57208 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit\]*/;HasChildren,;ObjectIcon,;ObjectID,57208 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit\]*/;ObjectIdent,;ObjectInfo,;ObjectIsHidden,;ObjectIsReadOnly,;ObjectName,Unbenanntes Objekt (ID: 57208);ObjectPosition,0;ObjectSummary,;ObjectType,4;ParentID,58576 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit]*/;isConfigTree,0;CyclicDateDay,0;CyclicDateDayValue,0;CyclicDateFrom,1385506800;CyclicDateTo,0;CyclicDateType,0;CyclicDateValue,0;CyclicTimeFrom,943916400;CyclicTimeTo,943916400;CyclicTimeType,2;CyclicTimeValue,15;EventActive,1;EventID,57208 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\Verfügbarkeit\]*/;EventLimit,0;EventType,1;LastRun,1404761400;NextRun,1404762300;TriggerSubsequentExecution,;TriggerType,0;TriggerValue,;TriggerVariableID,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,~HTMLBox;Digits,0;Icon,;IsReadOnly,1;MaxValue,0;MinValue,0;Prefix,;ProfileType,3;StepSize,0;Suffix,;|
ProfileName,IP_50;Digits,0;Icon,;IsReadOnly,;MaxValue,1;MinValue,0;Prefix,;ProfileType,0;StepSize,0;Suffix,;|Color,16711680;Icon,Warning;Name,Offline;Value,0;§Color,65280 /*[Objekt #65280 existiert nicht]*/;Icon,Network;Name,Online;Value,1;§
ProfileName,~Intensity.100;Digits,0;Icon,Intensity;IsReadOnly,1;MaxValue,100;MinValue,0;Prefix,;ProfileType,1;StepSize,1;Suffix, %;|
';
$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 "Infos zur Sendung anzeigen " ------------------------------------------------------------------------------------------------------
function InfoszurSendunganzeigen10018()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

include "20840.ips.php"; // e2_function Skript
include "44634.ips.php"; // KonstantenArray Skript
$Box = getvalue (24637 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\IP]*/);//
$AktuellerSender = "Keine Information";

$AktuellerSender = ENIGMA2_GetCurrentServiceName($Box);
list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($Box);;
$AktuelleSenderreferenz = ENIGMA2_GetCurrentServiceReference($Box);
$URL = "<a href=§\'http://".$Box."/web/stream.m3u?ref=$AktuelleSenderreferenz§\'>$AktuellerSender</a>";
list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($Box);
If ($AktuellerSender == "")
    {
   SetValueString(37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/ , "Keine Information");
   SetValueString(56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/ , "");
   SetValueInteger(12194 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Sendungsfortschritt]*/   , 0);
   SetValueInteger(16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/ , 0);
    }
   else
   {
    SetValueString(37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/  , $URL);
    SetValueString(56210 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktuelle Programm Info´s]*/ , "$AktuelleSenderinformation");
   SetValueInteger(12194 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Sendungsfortschritt]*/   , $Fortschrittsanzeige);
    SetValueInteger(16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/  , $acg);
    }
?>
';
}

// Script "Reload Webcontrol" ------------------------------------------------------------------------------------------------------
function ReloadWebcontrol12336()
{
return
'<?php
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

// Dreambox ID und IP ermitteln
$object = IPS_GetObject($IPS_SELF);
$objid = ($object[§\'ParentID§\']);

$ip_obj = @IPS_GetObjectIDByName("IP", $objid); // Hole das Object aus Variable IP
$statusId = @IPS_GetObjectIDByName("Standby status", $objid); // Hole das Object aus Variable IP
$ip_adr = @GetValue($ip_obj);
$dbname = @IPS_GetName($objid); // Hole das Object aus Variable IP
$status = @GetValueBoolean($statusId);
$current = @IPS_GetObjectIDByName("Aktueller Sender", $objid); // Hole das Object aus Variable IP
$event = @IPS_GetObjectIDByName("Programm", $objid); // Hole das Object aus Variable IP

SetValue(13553 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Dreambox Webcontrol]*/, "<iframe src=@§@"user/dreambox/dreambox.php?dreamip=".$ip_adr."&dbname=".$dbname."&status=".$status."&current=".$current."&event=".$event."@§@" border=@§@"0@§@" frameborder=@§@"0@§@" style=@§@"top:0pt; bottom:0pt; left:0pt; right:0pt; width:100%; height:590px;@§@"/></iframe>");

?>
';
}

// Script "Getcurrent" ------------------------------------------------------------------------------------------------------
function Getcurrent18569()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

include IPS_GetKernelDir().§\'webfront/user/dreambox/enigma2.com.php§\';

// Dreambox ID und IP ermitteln
$object = IPS_GetObject($IPS_SELF);
$objid = ($object[§\'ParentID§\']);
$ip_obj = @IPS_GetObjectIDByName("IP", $objid); // Hole das Object aus Variable IP
$ip_adr = @GetValue($ip_obj);

$servicename =  getCurrent($ip_adr);
SetValueString (37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/ , "$servicename @§@n");
//WFC_SendNotification(43692 /*[Objekt #43692 existiert nicht]*/, §\'Jetzt§\', "$servicename @§@n", §\'Speaker§\', 4);

?>
';
}

// Script "getPowerstate" ------------------------------------------------------------------------------------------------------
function getPowerstate37133()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

$xml = simplexml_load_file(§\'http://192.168.178.30/web/powerstate?.xml§\');
$wert = $xml->e2instandby;

if(strpos($wert,"false")!==false)
{
SetValue (43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/, True);
echo "Die Box ist eingeschaltet";
}
else{
SetValue (43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/, False);
echo "Die Box ist im Standby";}


//print_r ((string)$powerstate);
//SetValue (43569 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Standby Status]*/, $wert);

?>
';
}

// Script "toggleStandby" ------------------------------------------------------------------------------------------------------
function toggleStandby44983()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

include IPS_GetKernelDir().§\'webfront/user/dreambox/enigma2.com.php§\';

// Dreambox ID und IP ermitteln
$object = IPS_GetObject($IPS_SELF);
$objid = ($object[§\'ParentID§\']);
$ip_obj = @IPS_GetObjectIDByName("IP", $objid); // Hole das Object aus Variable IP
$ip_adr = @GetValue($ip_obj);

SetValue($IPS_VARIABLE, $IPS_VALUE);
	If ((boolean)$IPS_VALUE)
	{
		$newpowerstate =  ToggleStandby($ip_adr);
		$xmlResult = new SimpleXMLElement(file_get_contents("http://192.168.178.25/web/powerstate?newstate=0"));
	}
	else
	{
		$newpowerstate =  ToggleStandby($ip_adr);
		$xmlResult = new SimpleXMLElement(file_get_contents("http://192.168.178.25/web/powerstate?newstate=5"));
	}
$servicename =  getCurrent($ip_adr);
SetValueString (37889 /*[Geräte\Dreambox\DreamBox Wohnzimmer\Dreambox Wohnzimmer\Aktueller Sender Wohnzimmer]*/, "$servicename @§@n");

?>
';
}

// Script "e2_function" ------------------------------------------------------------------------------------------------------
function efunction20840()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

/*
* Holt IPAdresse aus Variable §\'IP§\' eines DummyModules obj
*/
function GetIpFromObj($obj)
{

    $ip_obj = @IPS_GetObjectIDByName("IP", $obj); // Hole das Object aus Variable IP
    $ip_adr = @GetValue($ip_obj);

return $ip_adr;
}
/**
*  Prüft über Ping ob Gerät erreichbar
*  Return
*  true  -  wenn erreichbar
*  false -  nicht erreichbar
**/
function ENIGMA2_GetAvailable($ipadr)
{
    $result = false;
   if ($ipadr > "" )
    {
       $result = (Boolean) Sys_Ping($ipadr, 1000);   // Ping max. 1 Sek. warten
   }
return $result;
}


/**
* Setzt Dreambox in Standby/nicht StandBy
*  -1    -  bei Fehler
*  1  -  wenn in StandBy
*  0 -  wenn nicht in Standby
**/
function ENIGMA2_ToggleStandby($ipadr)
{
    $powerstate = 0;
    $result = -1;

   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
        print_r ($xmlResult);
        if ($xmlResult->e2instandby == §\'true§\')
        {
           $result = 1;
        }
        else
        {
            $result = 0;
        }
   }

return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_DeepStandby($ipadr)
{
    $powerstate = 1;
    $result = false;

   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
       print_r($xmlResult);
        $result = (Boolean)$xmlResult->e2instandby;
   }

return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_Reboot($ipadr)
{
    $powerstate = 2;
    $result = false;

   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
       $result = (Boolean)$xmlResult->e2instandby;
   }

return $result;
}
/**
* true - wenn ok
*/
function ENIGMA2_RestartEnigma($ipadr)
{
    $powerstate = 3;
    $result = false;

   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/powerstate?newstate=$powerstate"));
       $result = (Boolean)$xmlResult->e2instandby;
   }

return $result;
}
/**
* liefert den Namen des aktuellen Sendernamens
*/
function ENIGMA2_GetCurrentServiceName($ipadr)
{


   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
       $result = $xmlResult->e2service[0]->e2servicename;
   }

return $result;
}
/**
* liefert den Namen der aktuellen Servicereferenz
*/
function ENIGMA2_GetCurrentServiceReference($ipadr)
{


   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
       $result = $xmlResult->e2service[0]->e2servicereference;
   }

return $result;
}


/**
* liefert ein Array mit den Namen der Bouquets wenn $bouquet = ""
* liefert ein Array mit den Namen der Sender eines Bouquet  wenn $bouquet ungleich ""
* keys e2servicereference
* keys e2servicename
*/
function ENIGMA2_GetServiceBouquetsOrServices($ipadr,$bouquet = "")
{
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       if ($bouquet == "" )
       {
           $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices"));
       }
       else {
          $bouquet = urlencode($bouquet);
           $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices?sRef=$bouquet"));
       }
   }
   else
    {
      $xmlResult[] = "";
    }
return $xmlResult;
}
/*
* Schreibt eine Infomessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteInfoMessage($ipadr,$message = "",$time=5)
{
    $type = 1;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}
/*
* Schreibt eine Errormessage auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteErrorMessage($ipadr,$message = "",$time=5)
{
    $type = 3;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}
/*
* Schreibt eine Message auf den Bildschirm
* return
* true wenn erfolgreich
* false wenn nicht erfolgreich
**/
function ENIGMA2_WriteMessage($ipadr,$message = "",$time=5)
{
    $type = 2;
    $result = false;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
      if ($xmlResult->e2state == "True")
      {
         $result = true;
        }
    }
   else
    {
       $result = false;
    }
return $result;
}
/*
* Schreibt eine Message auf den Bildschirm die man mit ja oder nein beantworten muss
* man sollte die Frage immer so stellen, das nein als aktive Antwort ausgewertet wird,
* da in allen anderen Fällen 0 oder -1  gemeldet wird
* return
* -1  wenn keine erfolgreiche Verbindung
* 0 wenn mit ja oder garnicht geantwortet wurde
* 1 wenn mit nein geantwortet
**/
function ENIGMA2_GetAnswerFromMessage($ipadr,$message = "",$time=5)
{
    $type = 0;
    $result = -1;
   if (ENIGMA2_GetAvailable( $ipadr ))
    {
       $message = urlencode($message);
       $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/message?text=$message&type=$type&timeout=$time"));
      if ($xmlResult->e2state == "True")
      {
         sleep($time);
         $result = -1;
         $xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/messageanswer?getanswer=now"));
            if ($xmlResult->e2statetext == "Answer is NO!")
          {
              $result = 1;
          }
          else
          {
             $result = 0;
          }
        }
    }
   else
    {
       $result = -1;
    }
return $result;
}

function ENIGMA2_GetCurrentFilm($ipadr)
{
   if (ENIGMA2_GetAvailable($ipadr))
       {
      $xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/subservices"));
      $reference = $xmlResult->e2service->e2servicereference;
      $name = utf8_decode($xmlResult->e2service->e2servicename);
      $xmlResult =  new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=$reference"));
      $title = utf8_decode($xmlResult->e2event->e2eventtitle);
      $description = utf8_decode($xmlResult->e2event->e2eventdescriptionextended);
      $startsec = $xmlResult->e2event->e2eventstart;
      $duration = $xmlResult->e2event->e2eventduration;
      $currenttime = time();
      if ((int)$startsec >= time() - 36000)
            {
         $start = date("H:i",(int)$startsec) .§\' Uhr§\';
         $vorbei = round(((int)$currenttime - (int)$startsec) / 60 ).§\' Minuten§\';
            }
      else
            {
         $start = "N/A";
         $vorbei = "N/A";
            }
        if (((int)$duration > 0) and ((int)$startsec >= time() - 36000))
            $ende = date("H:i",(int)$startsec + (int)$duration) .§\' Uhr§\';
        else
           $ende = "N/A";
        if ((int)$duration > 0)
            $dauer = round((int)$duration / 60).§\' Minuten§\';
        else
           $dauer = "N/A";
        if (((int)$currenttime > time() - 1800) and ((int)$currenttime < time() + 1800) and ((int)$startsec >= time() - 36000) and ((int)$duration > 0))
            $verbl = round(((int)$startsec + (int)$duration - (int)$currenttime) / 60 ).§\' Minuten§\';
        else
           $verbl = "N/A";
            If (round((int)$duration / 60) > 0)
               {
                $Fortschritt = (int)(round(((int)$currenttime - (int)$startsec) / 60 ) / round((int)$duration / 60) * 100) ;
                }
            else
               {
               $Fortschritt = 0;
               }
            $Filminformation = "Titel      : $title@§@nStart      : $start - Ende       : $ende@§@nDauer      : $dauer - Vergangen  : $vorbei - Verbleiben : $verbl@§@nDetails    : $description";
            return array($Filminformation, $Fortschritt);
    }
   else
   return §\'Box nicht erreichbar!§\';
}



//*************************************************************************************************************
// Ermittelt die EPG-Daten eines definierten Senders
function ENIGMA2_EPG($ipadr,$sender = "")
{
   $xmlResult[] = "";
   $sender = urlencode($sender);
   $xmlResult = new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=$sender"));
  //$title = $xmlResult->e2event->e2eventtitle;
   return $xmlResult;
	//return "$title";
}

function GetDreamEpg($ipadr, $channel) {
    $epgentry = "";
    $chanlist = new SimpleXMLElement(file_get_contents("http://$ipadr/web/getservices?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet."."dbe00.tv"."%22%20ORDER%20BY%20bouquet"));
    $bouquetlist = $chanlist->e2service;
    $zapname = IPS_GetObject($channel);
    $zapname2 = $zapname[§\'ObjectName§\'];
    foreach ($bouquetlist as $entry) {
    $sendername = utf8_decode($entry->e2servicename);
  $sref = ("$entry->e2servicereference @§@n");
  $pos1 = strpos($sref,§\'"§\');
  $pos2 = strpos($sref,§\'"§\',$pos1+1);
  $sref = substr($sref,$pos1,$pos2-$pos1-1);
  if($sendername == $zapname2) {
     $ergebnis = $sref;
         $epgservice = new SimpleXMLElement(file_get_contents("http://$ipadr/web/epgservice?sRef=".$ergebnis.""));
   $epglist = $epgservice->e2event;
   foreach ($epglist as $entry2) {
      $heute = time();
      $heute = date("dmy", $heute);
      $eventstartraw = trim($entry2->e2eventstart);
      $eventdate = date("dmy", $eventstartraw);
      //if ($eventdate  == $heute) {
         $newtitel = utf8_decode($entry2->e2eventtitle);
         $newsref = $entry2->e2eventservicereference;
         $newtime = date("H:i",$eventstartraw);
         $newdesc = utf8_decode($entry2->e2eventdescriptionextended);
         $neweventid = trim($entry2->e2eventid);
         $newlenght = $entry2->e2eventduration /60;
         $epgentry .= "<div class=@§@"standardContainer@§@">" ."Zeit: " .$newtime ."</div>";
         $epgentry .= "<div class=@§@"standardContainer@§@">" ."Länge: " .$newlenght ." Minuten"."</div>";
       $epgentry .= "<div class=@§@"standardContainer@§@">" ."Titel: " .$newtitel ."</div>";
       $epgentry .= "<div class=@§@"standardContainer@§@">" ."Inhalt: " .$newdesc ."</div>";
       $epgentry .= §\'<td style="line-height: 25px;">§\'.§\'</td><td align="right"><div onclick="dojo.xhrGet({ url: @§@§\'http://192.168.0.5/web/timeraddbyeventid?sRef=§\'.$newsref .§\'&eventid=§\' .$neweventid .§\'@§@§\'});" style="border:1px solid #3B3B4D; margin:0px; padding:3px; text-align:center; width: 100px;">Aufnehmen</div></td>§\';
       $epgentry .= "<br>";
      //}
   }
    }
    }
    return $epgentry;
}


//*************************************************************************************************************
// Prüft die Signalstärke des Senders
function ENIGMA2_SignalStatus($ipadr)
{
    if (ENIGMA2_GetAvailable( $ipadr ))
        {
        $xml = simplexml_load_file("http://$ipadr/web/signal?.xml");
        $snrdb = (int)$xml->e2snrdb;
        $snr = (int)$xml->e2snr;
        $ber = (int)$xml->e2ber;
        $acg = (int)$xml->e2acg;
        }
    else
        {
        $snrdb = 0;
        $snr = 0;
        $ber = 0;
        $acg = 0;
        }

return array($snrdb, $snr, $ber, $acg);
}


?>';
}

// Script "Sender Anzeigen" ------------------------------------------------------------------------------------------------------
function SenderAnzeigen23358()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

include "20840.ips.php"; // e2_function Skript
include "44634.ips.php"; // KonstantenArray Skript
$Box = "192.168.178.30";//
$AktuellerSender = "Keine Information";

$AktuellerSender = ENIGMA2_GetCurrentServiceName($Box);
list($AktuelleSenderinformation, $Fortschrittsanzeige) = ENIGMA2_GetCurrentFilm($Box);;
$AktuelleSenderreferenz = ENIGMA2_GetCurrentServiceReference($Box);
$URL = "<a href=§\'http://".$Box."/web/stream.m3u?ref=$AktuelleSenderreferenz§\'>$AktuellerSender</a>";
list($snrdb, $snr, $ber, $acg) = ENIGMA2_SignalStatus($Box);
If ($AktuellerSender == "")
    {
   SetValueString(38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/  , "Keine Information");
   SetValueString(13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/ , "Aktuell ist die Box aus");
   SetValueInteger(23032 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sendungsfortschritt]*/  , 0);
   SetValueInteger(16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/ , 0);
    }
   else
   {
    SetValueString(38400 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktueller Sender]*/  , $URL);
    SetValueString(13739 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Aktuelle Programm Info´s]*/ , "$AktuelleSenderinformation");
   SetValueInteger(23032 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Sendungsfortschritt]*/  , $Fortschrittsanzeige);
    SetValueInteger(16651 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Empfangspegel]*/  , $acg);
    }
?>
';
}

// Script "Dreambox ausschalten" ------------------------------------------------------------------------------------------------------
function Dreamboxausschalten22010()
{
return
' <?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####


function SetPowerState($obj, $powerstate)
{
 /**
http://dreambox/web/powerstate?newstate={powerstate_number}
0 = Standby
1 = Deepstandby
2 = Reboot
3 = Restart Enigma2
116 = Wake-up (aus Standby --> issued as a "remotecontrol" command)
**/
    $ip = GetIpFromObj($obj);
    $available = GetAvailableFromObj($obj);

    if ($ip > §\'§\' && $available ) {
        return file_get_contents("http://$ip/web/powerstate?newstate=$powerstate");
    }
}
function GetIpFromObj($obj)
{

    $ip_obj = @IPS_GetObjectIDByName("IP", $obj); // Hole das Object aus Variable IP

    $ip_adr = GetValue($ip_obj);
echo "IP : $ip_adr @§@n";
return $ip_adr;
}
function GetAvailableFromObj($obj)
{

    $av_obj = @IPS_GetObjectIDByName("Available", $obj); // Hole das Object aus Variable Available

    $available = GetValueBoolean($av_obj);
    echo "Available : $available @§@n";

return $av_obj;
}
// Test
$dreamboxObj = "192.168.178.25" ;
$aus = 0;
SetPowerState($dreamboxObj, $aus);




?>
';
}

// Script "KonstantenArray" ------------------------------------------------------------------------------------------------------
function KonstantenArray44634()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

//*************************************************************************************************************
// Definieren der Konstanten für den Enigma-Receiver
global $k_KATHREIN;
global $k_SAMSUNG;
$k_KATHREIN = array("IP" => "192.168.178.25");
$k_SAMSUNG = array("IP" => "192.168.178.30");
?>
';
}

// Script "TV Movie " ------------------------------------------------------------------------------------------------------
function TVMovie40299()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####



    $simpleXMLElement = simplexml_load_file("http://www.tvmovie.de/rss/tvjetzt.xml"); // URL des RSS Feeds
    $senderAnzahl = count($simpleXMLElement->channel->item); // Anzahl der anzuzeigenden Sender
    $anzeigen = array("Sky CINEMA +1","Sky HITS","Sky ACTION","Nat Geo Wild","Sky KRIMI","ARD", "ZDF", "RTL", "SAT.1", "PRO 7", "RTL II", "S RTL", "KABEL","Sky NOSTALGIE","Sky EMOTION", "3SAT","sixx","Sky Atlantic HD","History","Spiegel Geschichte","DISCOVERY HD","Sky CINEMA", "VOX", "NDR", "Das Vierte", "Tele 5", "DMAX", "KI.KA", "DELUXE MUSIC TV",  ); // anzuzeigende Sender
    $Ausgabe = "<table width=§\'auto§\' border=§\'0§\'>";

    // Datenausgabe
    for($i=0; $i<$senderAnzahl; $i++)
        {
        $item = $simpleXMLElement->channel->item;
        $item = xmlToArray($item[$i]);
         $sender = explode("-", $item[§\'title§\']);
         $sender = trim(substr($sender[0], 5));
         if(in_array($sender, $anzeigen))
            {
             $titel = "<b style=color:#C00000;>".$item[§\'title§\']."</b>"; // Textfarbe anpassen
             $beschreibung = "<small>".$item[§\'description§\']."</small>";
             $text = $titel."<br>".$beschreibung."<br>";
             $text = utf8_decode($text);
             $searchArray = $item;
             $Ausgabe = $Ausgabe."<table width=§\'auto§\'>";
     if(array_key_exists(§\'enclosure§\', $searchArray))
             {
            $image = $item[§\'enclosure§\'][§\'@attributes§\'][§\'url§\'];
            $Ausgabe = $Ausgabe."<tr>";
            $Ausgabe = $Ausgabe."<td width=§\'auto§\'height=§\'80px§\'><div><img src=$image alt=§\'not Found§\'></div></td>";
            $Ausgabe = $Ausgabe."<td width=§\'auto§\'><div style=§\'text-align:left; margin-left:10px;§\'>$text</div></td>";
            $Ausgabe = $Ausgabe."</tr>@§@n";
            }
        else
            {
              $Ausgabe .= "<tr>";
              $Ausgabe .= "<td></td><td width=§\'auto§\'><div style=§\'text-align:left; margin-left:10px;§\'>$text</div></td>";
            $Ausgabe .= "</tr>@§@n";

            //$Ausgabe = $Ausgabe."<tr>";
            //$Ausgabe = $Ausgabe."<td width=§\'auto§\'><div style=§\'text-align:left; margin-left:10px;§\'>$text</div></td>";
              //$Ausgabe = $Ausgabe."</tr>@§@n";
            }
        $Ausgabe = $Ausgabe."</table>@§@n";
        }
    }
    SetValueString(57498 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Programm \Programmvorschau von TV Movie]*/ , $Ausgabe);
return;


function xmlToArray($data)
{
    if(is_object($data))
    {
        $data = get_object_vars($data);
    }
      return (is_array($data)) ? array_map(__FUNCTION__,$data) : $data;
}

?>';
}

// Script "Verfügbarkeit" ------------------------------------------------------------------------------------------------------
function Verfgbarkeit58576()
{
return
'<?
 ##### Project Exporter Comment: Script Version Stand 07.07.2014 21:44 #####

include "20840.ips.php"; // e2_function Skript
include "44634.ips.php"; // KonstantenArray Skript
$dreamboxIP_az = ENIGMA2_GetAvailable(§\'192.168.178.30§\');
$dreamboxIP_wz = ENIGMA2_GetAvailable(§\'192.168.178.25§\');
echo "$dreamboxIP_az";
echo "$dreamboxIP_wz";
//if (ENIGMA2_GetAvailable(192.168.178.25))
if ($dreamboxIP_az == "0"){
SetValue(38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/   , "0");
}
else
{
SetValue(38812 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Arbeitszimmer]*/   , "1");
}
if ($dreamboxIP_wz == "0"){
SetValue(48973 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Wohnzimmer]*/   , "0");
}
else
{
SetValue(48973 /*[Geräte\Dreambox\Dreambox Arbeitszimmer\Dreambox Arbeitszimmer\TV Informationen Arbeitzimmer\Dreambox Wohnzimmer]*/  , "1");
}
?>
';
}

?>


Hallo Leute,

ich habe die groben Züge des Scripts laufen, nun sehen ich das macgyver eine interessante Version hat , mit der man die Timer abfragen kann , ich habe die enigma2.com.php um die Funktionen erweitert und versuche diese nun zu nutzen.

Scheitere aber kläglich :slight_smile: , hat das wer am laufen ?

Hi Leute,

genau das gleiche Problem habe ich auch. Wie ist denn die Lösung des Problems.
Danke im vorraus für eure Hilfe!

Hier rückt keiner ne Info raus .

Gesendet von meinem iPhone mit Tapatalk

:eek::confused::frowning:

:confused:
Um welche Info gehts ??

Was man ändern muss damit man bei abgeschalteter Enigmabox keine Fehlermeldungen bekommt. Eigentlich sollte das Skript die Box anpingen und erst die weiteren Skripte starten, wenn diese Online ist. Aber irgendwie funktioniert das nicht korrekt und die Skripte starten trotz ausgeschalteter Box.

Mich würde die Abfrage der Timer interessieren . Ich mach heute Abend nen Export von meinem stand rein , da geht nicht alles aber das ist wenigstens was.

Gesendet von meinem iPhone mit Tapatalk

Hallo Marcel,

nur falls du es noch nicht kennst - hier ein paar Infos bzgl. Timer bei Enigma2:
http://dream.reichholf.net/wiki/Enigma2:WebInterface#Timer

Damit kannst du die Timer auslesen, Timer löschen und Timer hinzufügen. Das muss „nur noch“ in deine Skripte eingebaut werden und ab gehts :slight_smile: Würde dir gerne Skripte dazu liefern, aber ich war bisher zu faul und nutze dafür einfach das eingebundene WebInterface der Dreamboxen.

Grüße,
Chris

schade schade , hat es denn noch keiner fertig ?

Für mich wäre es interessant ,da man die Box dann abschalten könnte ,die Vu+ Dou2 zieht locker 20 Watt.

Abschalten? 20Watt? Meine Solo 2 fährt aus dem DeepStandby hoch, nimmt auf und fährt dann wieder runter!

Laufen denn bei irgend jemanden hier die Skripte ohne Fehlermeldungen, wenn die Box aus ist oder werden die Meldungen von euch ignoriert. Ansonsten wäre es nett zu verraten, wie man die Meldungen weg bekommt.

Abend!

@Marcel:
Wenn es dir nur um das Abschalten geht, dann nimm doch einfach folgende URL und lass diese über ein Skript oder den WWWReader aufrufen:

http://IP-DER-BOX/cgi-bin/admin?command=shutdown
> Damit macht die Box einen Shutdown :slight_smile:

Quelle:
http://dream.reichholf.net/wiki/Webinterface_Befehle#Administratives_wie_Shutdown:_.2Fcgi-bin.2Fadmin.3Fcommand.3D.3Ccommand.3E

Das zum Beispiel in ein Skript einbauen (natürlich die ID eines WWWReader von dir eingeben):

$wwwReaderID = 12345 /*[WWW Reader (Webseiten auslesen)]*/;
$url = "http://IP-DER-BOX//cgi-bin/admin?command=shutdown";
WWWReader_SetPage($wwwReaderID ,$url);
IPS_ApplyChanges($wwwReaderID);
WWWReader_UpdatePage($wwwReaderID);

@DeejayT:
Wenn du willst, dass die Skripte bei abgeschalteter Box keine Fehlermeldung ausspucken, dann bau doch eine simple Abfrage über Ping ein!? Also wenn kein Ping, dann keine weitere Skriptausführung. Könnte auch noch erweitert werden um eine Status-Anzeige und ein „gesperrt-Flag“, welches wiederum in anderen Skripten ausgewertet und verarbeitet werden könnte…

Beispiel:

$receiverIP = 192.168.1.60
$receiverStatus = 12345 // ID einer Bool-Variable für den Status

$ping = Sys_Ping($receiverIP, 1000);
			if ($ping == true){
				SetValue($receiverStatus, true);
			}
			else {
			  SetValue($receiverStatus, false);
			}
			

if (GetValue($receiverStatus) == false) {
		// mach nichts
}
else {
   // schalte um, mache dies, mache jenes
}

Grüße,
Chris

Ich würde gerne Aufnahmen aus der Aufnahmeliste löschen.

Ich bekomme aber leider die Fehlermeldung:


Warning:  file_get_contents(http://192.168.55.37:80/web/moviedelete?sRef=1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3A/hdd/movie/20130806 1845 - RTL Television - RTL Aktuell.ts): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
 in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1242

Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1242
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1242): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
  thrown in D:\IP-Symcon\scripts\f_Enigma_2.ips.php on line 1242
Abort Processing during Fatal-Error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in D:\IP-Symcon\scripts\f_Enigma_2.ips.php:1242
Stack trace:
#0 D:\IP-Symcon\scripts\f_Enigma_2.ips.php(1242): SimpleXMLElement->__construct('')
#1 D:\IP-Symcon\scripts\38405.ips.php(4): ENIGMA2_MovieDelete('192.168.55.37:8...', '1%3A0%3A0%3A0%3...')
#2 {main}
  thrown
   Error in Script D:\IP-Symcon\scripts\f_Enigma_2.ips.php on Line 1242

Die Zeile auf die sich die Fehlermeldung bezieht sind so aus:

	$xmlResult = new SimpleXMLElement(file_get_contents('http://'.$ipadr.'/web/moviedelete?sRef='.$sref));

Wenn ich die URL Zeile so in einen Browser kopiere und dann absende dann wird die Aufnahme gelöscht. Hat jemand von Euch eine Idee wie man das zum Laufen bekommt?