Universelle Heizungssteuerung

hübsch :slight_smile:

so kann man es von außen natürlich auch lösen …

Hi Ernie,

ich weiß ja das du wenig Zeit hast, aber ich räume gerade ein wenig mein Webfront auf und hab da mal ne „kleine“ Frage :rolleyes:

Im Webfront der Heizungssteuerung wird der Heizplan pro Tag dargestellt, was auch so ok ist. Allerdings gibt es für jede Zeit ein eigenes „Kästchen“. Würde ohne größeren Aufwand eine Möglichkeit bestehen die einzelnen Zeiten pro Raum unter einer DummyInstanz zusammenzufassen? Ich finde das optisch angenehmer. Manuell kann man das ja anpassen, aber bei der nächsten Erstellung des Heizpalnes würde das doch wieder überschrieben werden, oder?

Und dann würde ich gerne der Übersichtlichkeit wegen die Ist + Soll Temperaturen und auch die Heizstati auf eine einzige Seite packen, ebenfalls in eine DummyInstanz. Ist das möglich ohne das es durch irgendeines deiner Scripte wieder bzw. neu erstellt/verändert wird?

Gruß
Jens

Hallo,

Finde ich sehr interessant, das könnte man dich sicherlich auch problemlos für eine automatische Anwesen-/Abwesenheitssteuerung nutzen. Das ist nämlich so ein Punkt, der mir bei Ernie´s Script derzeit noch fehlt, ansonsten finde ich es genial und es läuft bei mir schon seit längerer Zeit.

Ich stelle mir so vor, statt „Fenster auf“ währe das dann eben „keiner mehr da“.

Hallo zusammen!

Ich bin mehr oder weniger (eher mehr :D) blutiger Anfänger und versuche schon ne ganze Zeit, das Script ans Laufen zu bekommen. Allerdings scheitere ich bereits beim einrichten der Scripte bzw beim entpacken des Scriptes. Nachdem ich jetzt die ersten 11 oder 12 Seiten diese Threads durch habe und mittlerweile nur noch der Kopf rauscht:
Wer kann mit mal behilflich sein?
Ich lege die Scripte entsprechend dem WIKI im Hauptverzeichnis an und verschiebe sie im Anschluss in den Ordner Heizungssteuerung/Scripte. Dann gehe in den Explorer und entpacke das Archiv in IP-Symcon/scripts. Im Explorer habe ich danach einen Unterordner Heizungssteuerung und im Scriptsverzeichnis selbst eine Datei debugger.class.ips.php.

Trotzdem bekomme ich beim ausführen der aktionsScripte-trigger.ips.php immer wieder Fehler und es wird eine Datei in IP-Symcon/scripts vermisst, die sich allerdings im Ordner IP-Symcon/scripte/Heizungssteuerung befindet!

Außerdem habe ich das „Problem“, dass im Hauptordner IP-Symcon/scripts die Dateien, die ich im ersten Schritt in IPS angelegt habe, nach wie vor ohne Quelltext vorhanden sind.

Ich hoffe, dass ich mich einigermassen verständlich ausgedrückt habe und hoffe, dass mir einer mein mittlerweile schon zur Holzbohle angewachsenes Brett vom Kopf schlagen kann :wink:

DANKE!

die Dateien, die Du anlgest und verschiebst, musst Du im zweiten Schritt überschreiben. Also leere Dateien in IPS anlegen und dann durch die aus dem ZIP ersetzen. Jede Datei ist nur einmal in einem Ordner vorhanden. Wenn es noch nicht klappt, mach mal Screenshots …

Wie gesagt, die vorhandenen Dateien müssen überschrieben werden. Dann sollte auch in IPS der Inhalt erscheinen, wenn Du sie neu lädst.

Na das werden wir schon hinbekommen …

Ich lege sie ja im IPS an und verschiebe sie auch im IPS in den Ordner (Kategorie) Heizungssteuerung/Scripts. Die Dateien liegen im Explorer aber alle im Ordner IP-Symcon/scripts. Ich würde sie aber gerne in einen Unterordner IP-Symcon/scripts/Heizungssteuerung ablegen. Und genau da liegt halt der Hund begraben…

http://www.ip-symcon.de/wiki/Ernies_Heizungsscript#PHP_Scripte hast Du ja sicherlich gelesen.

Du schreibst das Unterverzeichnis in das Feld Eingabename, dass Du im Screenshot siehst.

Das Icon mit dem Schlüssel ist der Schlüssel … nennt sich umbennen. Da kannst Du einen Pfad mit Doppel-Backslash dazuschreiben als Verzeichnis-Name, worin das Script liegen soll …

Genau das war das, was mir noch fehlte :slight_smile:
Sieht schon mal ein wenig besser aus. Jetzt versuche ich mal, die config mit den korrekten ID´s zu versorgen.

Verstehe ich das so richtig:

WIKI:
HomeMaticHeizenJaNein

readRaumSollTemperatur Array: Hier müssen die IPS-Variablen verlinkt werden, in denen die SOLL-Temperaturen gespeichert werden
-> ID „heiz - Soll Temperaturen“ für den entsprechenden Raum

writeRaumSollTemperatur Array: Hier müssen die HomeMatic THERMOSTAT ObjectIDs verlinkt werden.
-> ID „SETPOINT“ für das Thermostat des entsprechenden Raumes

istRaumTemperatur Array: Hier müssen die HomeMatic Wetter-Temperature ObjectIDs verlinkt werden.
-> ID des Thermostats selbst, in dem Temperatur und Feuchtigkeit hinterlegt sind.

das kommt auf das zu Heizungs-Interface an, das Du benutzen willst …

HomeMatic -> schreiben an die SETPoint-Variable
HomeMaticHeizenJaNein -> schreiben an die IPS-Variable.

Auslesen immer bei Wheater->Temperatur (wo die Temperatur steht)

@edit: äh sorry, den ersten Satz habe ich überlesen …

istRaumTemperatur -> ID von Temperatur (von Wheater)
die anderen beiden sollten stimmen …

Soweit ist jetzt, meiner Meinung nach, alles eingerichtet. Jetzt habe ich die folgende Meldung im Log:

poste mal den Teil der config, wo die „istRaumTemperatur“, „WriteRaumTemperatur“ und „sollTemperatur“ Object IDs definiert werden …

Moin,

ich hab da mal ein Problem oder sagen wir besser - merkwürdiges Verhalten:

In der Sollwert-Kurve von IPS sehe ich bei jedem Übergang zwischen einzelnen Zeitfenstern ein absenken der Solltemperatur auf den Abwesenheitswert und direkt darauf wieder ein hochsetzen auf den Anwensenheitswert. Oft hat das auch zur Folge, das der HM-Stellantrieb entsprechend zu und kurz darauf wieder auf geht. Das ist mir jetzt mehrfach aufgefallen, als ich zuhause gearbeitet habe, der Stellantrieb sitzt direkt hinterm Schreibtisch und da hört man den gut.

Gibt es eine Möglichkeit, dies zu verhindern ?

In den angehangenden Kurven sieht man das ganz gut, hab mal die Kurve aus IPS und aus einen Highchart angehangen.

Danke im Voraus.

Hi Ernie, bezgl. meines Screenshots … wie müsste man das Script so verändern, das die Zeiten wie abgebildet gruppiert werden? Oder kann ich das alles nur manuell machen?

Gruß
Jens

Et voila.
Bitte nicht wundern, ich habe erstmal nur einen Raum in die Config gepackt und wollte dann die restlichen Räume nachpflegen, wenn alles klappt :wink:


<?
// ###
// ### Definition der ObjectIDs, an denen die Raum-Soll-Temperaturen gelesen werden können
// ###    bei HomeMatic muss hier die SETPOINT Variable der Thermostate verlinkt werden
// ###    bei 1-Wire in IPS selbst definierte Variablen
// ### LAST CHANGE IN IN REVISION 3
$this->heizungssteuerung['readRaumSollTemeratur'] = array();
// ### Entweder direkte Thermostate
// ###    bei HomeMatic
//	$this->heizungssteuerung['readRaumSollTemeratur']['Bad'] 			= 11496 /*[Objekt #11496 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Bad\Bad - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Büro']			= 57653 /*[Objekt #57653 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Büro\Büro - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Gästezimmer'] 	= 54771 /*[Haus\Sophie\Sophie Thermostat:2]*/; // cAOIDs ok  
//[Heizung\HomeMatic Komponenten\Gästezimmer\Gästezimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Schlafzimmer'] = 53751 /*[Objekt #53751 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Schlafzimmer\Schlafzimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Wohnzimmer'] 	= 50601 /*[Objekt #50601 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Wohnzimmer\Wohnzimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
// ### ODER IPS-Variablen (zum speichern und lesen der Werte)
// ### (diese müssen im IPS-Baum selbst angelegt werden)
// ###    z.B. bei 1-wire Modulen
// ###    z.B. bei HomeMaticHeizenJaNein
// ### Test-Szenario CHANGE CHANGE CHANGE 2/3
$this->heizungssteuerung['readRaumSollTemeratur']['Bad'] 			= 49063 /*[Heizungssteuerung\heiz - Soll Temperaturen\Bad]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Büro']			= 57644 /*[Objekt #57644 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Büro]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Gästezimmer'] 	= 26155 /*[Objekt #26155 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Gästezimmer]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Schlafzimmer'] = 35587 /*[Objekt #35587 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Schlafzimmer]
//	$this->heizungssteuerung['readRaumSollTemeratur']['Wohnzimmer'] 	= 53457 /*[Objekt #53457 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Wohnzimmer]

// ###
// ### Definition der ObjectIDs an denen die Raum-Soll-Temperaturen geschrieben werden können
// ### Eventuell sind diese gleich "Gelesenen", bei HomeMatic jedoch nicht ...
// ### dort wird die Variable ausgelsen, jedoch ins Thermostat zurückgeschrieben
// ### LAST CHANGE IN IN REVISION 3
// ### Entweder direkte Thermostate
// ###    bei HomeMatic
$this->heizungssteuerung['writeRaumSollTemeratur'] = array();
$this->heizungssteuerung['writeRaumSollTemeratur']['Bad'] 				= 19096 /*[Haus\Bad\Bad Thermostat:2\SETPOINT]*/; // cAOIDs ok ;
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Büro']				= 19315 /*[Objekt #19315 existiert nicht]*/; // cAOIDs ok ;
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Gästezimmer'] 	= 31325 /*[Objekt #31325 existiert nicht]*/; // cAOIDs ok ;
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Schlafzimmer'] 	= 30084 /*[Objekt #30084 existiert nicht]*/; // cAOIDs ok ;
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Wohnzimmer'] 		= 42515 /*[Objekt #42515 existiert nicht]*/; // cAOIDs ok ;
// ### ODER IPS-Variablen (zum speichern und lesen der Werte)
// ### (diese müssen im IPS-Baum selbst angelegt werden)
// ###    z.B. bei 1-wire Modulen
/*
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Bad'] 				= 42715 /*[Objekt #42715 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Büro']				= 57644 /*[Objekt #57644 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Büro]
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Gästezimmer'] 	= 26155 /*[Objekt #26155 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Gästezimmer]
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Schlafzimmer'] 	= 35587 /*[Objekt #35587 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Schlafzimmer]
//	$this->heizungssteuerung['writeRaumSollTemeratur']['Wohnzimmer'] 		= 53457 /*[Objekt #53457 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Wohnzimmer]


// ###
// ### Definition der ObjectIDs, an denen die Raum-Ist-Temperaturen gelesen werden können
// ### LAST CHANGE IN IN REVISION 2
// ### Entweder direkte Thermostate
// ###    bei HomeMatic
$this->heizungssteuerung['readRaumIstTemeratur'] = array();
$this->heizungssteuerung['readRaumIstTemeratur']['Bad'] 				= 29625 /*[Haus\Bad\Bad Thermostat:1\TEMPERATURE]*/; // cAOIDs ok
//	$this->heizungssteuerung['readRaumIstTemeratur']['Büro']				= 39080 /*[Objekt #39080 existiert nicht]*/; // cAOIDs ok
//	$this->heizungssteuerung['readRaumIstTemeratur']['Gästezimmer'] 	= 47279 /*[Objekt #47279 existiert nicht]*/; // cAOIDs ok
//	$this->heizungssteuerung['readRaumIstTemeratur']['Schlafzimmer'] 	= 25826 /*[Objekt #25826 existiert nicht]*/; // cAOIDs ok
//	$this->heizungssteuerung['readRaumIstTemeratur']['Wohnzimmer'] 	= 10100 /*[Objekt #10100 existiert nicht]*/; // cAOIDs ok
?>

kannst Du das bitte mal in PHP Code ändern, dass es etwas leserlicher wird … so ist das schwierig zu lesen …

Das ist mir auch schon aufgefallen, aber ich hatte noch keine Zeit den Fehler zu suchen :frowning:

Ich schreibe es mal ziemlich weit oben auf die TODO-Liste …

Ist erledigt. Hier.

mach mal als erstes 3 Räume in die config rein und teste es (nicht nur einen Raum …).

Wenn es nicht klappt (was ich nicht glaube, aber mach es trotzdem …), poste mal die komplette config.php und schau mal, welche Zeile dann die ist, die im Moment den Fehler wirft (aktuell als erstes Zeile 511) …

und versuch mal den Code so einzubetten, dass er PHP ist und aber nach rechts zu scrollen ist und keine Zeilenumbrüche dabei sind. Das geht irgendwie …

so etwas:

und versuch mal den Code so einzubetten, dass er PHP ist und aber nach rechts zu scrollen ist und keine Zeilenumbrüche dabei sind. Das geht irgendwie ... und versuch mal den Code so einzubetten, dass er PHP ist und 
aber nach rechts zu scrollen ist und keine Zeilenumbrüche dabei sind. Das geht irgendwie ...und versuch mal den Code so einzubetten, dass er PHP ist und aber nach rechts zu scrollen ist und keine Zeilenumbrüche dabei sind. Das geht irgendwie ...und versuch mal den Code so einzubetten, dass er PHP ist und aber nach rechts zu scrollen ist und keine 
Zeilenumbrüche dabei sind. Das geht irgendwie ...und versuch mal den Code so einzubetten, dass er PHP ist und aber nach rechts zu scrollen ist und keine Zeilenumbrüche dabei sind. Das geht irgendwie ..

aber irgendwie bekomme ich das auch gerade nicht hin … in der Vorschau geht es, aber im Post dann nicht …

So,
habe jetzt drei Räume in der Config erfasst. beim ausführen der Trigger kommt folgende Meldung:


Notice: Undefined index: readRaumIstTemeratur in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 512
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 512
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Notice: Undefined index: heizStatiRaeume in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 520
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 520
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Notice: Undefined index: rootNodesFenster in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 523
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 523
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Notice: Undefined index: temperaturProfile in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 528
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Warning: Invalid argument supplied for foreach() in C:\IP-Symcon\scripts\heizungssteuerung\config.class.ips.php on line 528
[0] in function de\IPSymcon\ernie\Config->checkAllObjectIDs in C:\IP-Symcon\scripts\heizungssteuerung\aktionsScripte-trigger.ips.php on line 7

Meine Config sieht aktuell so aus:


<?

/*
 ################################################################################
 # IP-Symcon Config-Datei                                                       #
 #                                                                              #
 # Beschreibung : config Datei zu IP-Symcon                                     #
 # Create date  : 2010-11-05                                                    #
 # Last change  : 2010-11-05                                                    #
 # Version      : 0.09                                                          #
 # Datei        : config.class.ips.php                                          #
 # Author       : ernie                                                         #
 # Copyright    : ernie                                                         #
 ################################################################################
 */

namespace de\IPSymcon\ernie;

if (!defined("INCLUDED_DEBUGGER")) {
	DEFINE("INCLUDED_DEBUGGER",TRUE);
	include("../debugger.class.ips.php");
	}

class Config implements EnvironmentDebugger {
	// cAOIDs ok == Object (Variable/Script/Kategorie) bereits in checkAllObjectIDs berücksichtigt
	private $version;
	private $debug;
	private $heizungssteuerung;
	private $ipsConfigObjectIDs;
	
	public function __construct($myVersion) {
		$this->timeBegin = microtime();
		$this->version = $myVersion;
		$this->debug = array();
		$this->debug['showHiddenThings']			= true;
		$this->debug['debugThisSession']			= false;
		$this->debug['showDebugMessageOnEnd']	= false;
		$this->debug['debugWithPRE']				= false;

		$this->debug['disableWarnings']			= false;
		$this->debug['disableOutput']				= false;

		if ($this->debug['disableWarnings']) {
			error_reporting(E_ERROR);
			// alle ohne NOTICE:
			// error_reporting(E_ALL & ~E_NOTICE);
		}

		$this->environmentDebugConfigObject = new EnvironmentDebugObject();

		$do = $this->environmentDebugConfigObject;
		// echo "<PRE>". $this->environmentDebugConfigObject . "</PRE><br>
";
		// $this->environmentDebugConfigObject->addDebugEnvironment('environmentName',	0,	PRE?,	show Categories?,showCount,	OnEnd,	uesedDebuggers);
		$do->addDebugEnvironment('config.class[getWunschTemperatur]',							0,	TRUE,	TRUE,	FALSE,	FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('config.class[checkObjectIDExists]',							0,	TRUE,	TRUE,	FALSE,	FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 1 / maxValue = 1

		$do->addDebugEnvironment('heizungssteuerung_createHeizplan.class[__construct]',	0,	TRUE,	TRUE,	FALSE,	FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('heizungssteuerung_createHeizplan.class[initialzing]',	6,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 7 / maxValue = 9

		$do->addDebugEnvironment('heizungssteuerung_trigger.class[__construct]',			0,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[showActualHeizplan]',	6,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 7 / maxValue = 9
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[setActualTemperature]',6,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 7 / maxValue = 9
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[lookOpenWindows]',		6,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 7 / maxValue = 9
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[setRaumTemperatur]',	4,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 5 / maxValue = 9
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[SOLL-IST-VERGLEICH]',	6,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 7 / maxValue = 9
		$do->addDebugEnvironment('heizungssteuerung_trigger.class[lookAllRooms]',			7,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 8 / maxValue = 9

		$do->addDebugEnvironment('HomeMaticKomponenten.class[__construct]',					0,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('HomeMaticKomponenten.class[getSollTemperatur]',			0,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('HomeMaticKomponentenHeizenJaNein.class[__construct]',			0,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('HomeMaticKomponentenHeizenJaNein.class[getSollTemperatur]',	0,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // maxValue = 1
		$do->addDebugEnvironment('HomeMaticKomponentenHeizenJaNein.class[setHeizenJaNein]',		8,	TRUE,	TRUE,	TRUE,		FALSE,	DEBUG_MODE_ECHO_LINEBREAK); // minValue = 9 / maxValue = 9

		// ##################################################
		// ###
		// ### DEFINE Heizungssteuerung
		// ###
		$this->heizungssteuerung = array();

		// ### Definition, aus welchem Interface
		// ### das Heizungs-Komponenten erstellt werden soll?
		// ### Aktuell implementiert:
		// ###    - HomeMaticKomponenten
		// ###    - EinsWireWagoKombinationsKomponenten
		// ###    - HomeMaticKomponentenHeizenJaNein
		// ### LAST CHANGE IN IN REVISION 3
		// $this->heizungssteuerung['heizungsKomponenten'] = "HomeMaticKomponenten";
		// ### Test-Szenario CHANGE CHANGE CHANGE 1/3
		// $this->heizungssteuerung['heizungsKomponenten'] = "EinsWireWagoKombinationsKomponenten";
		$this->heizungssteuerung['heizungsKomponenten'] = "HomeMaticKomponentenHeizenJaNein";

		// ### Definition der createHeizplan Konstanten, u.a.
		// ###   - ObjectID des ChangeBoolean Scripts, dass im WebFront die Anwesend/Abwesend der Variablen tooglet
		// ###   - Konstanten für die CustomProfiles, die den An- und Abwesenheitsvariablen zugeweisen werden
		// ###   - Auswahl, ob die Heizplan Variablen (An- und Abwesenenheit) für das iFront
		// ###		- gekürzt werden sollen (ohne Bezeichner "Mittags / Abends)
		// ###		- das CustomProfile (~Switch oder b_Anwesend-Abwesend) für einen Toogle-Button hinterlegt bekommen
		// ###         - b_Anwesend-Abwesend: Die Variablen im WebFront sind grün und rot und haben den Bezeichner
		// ###           "Anwesend" und "Abwesend" im iFront muss man ins Untermenü wechseln, um Sie umzuschalten
		// ###         - ~Switch: Die Variablen im WebFront sind grün und rot und haben den Bezeichner
		// ###           "An" und "Aus" im iFront kann man diese per Toogle Button direkt umschalten
		// ### LAST CHANGE IN IN REVISION 3
		$this->heizungssteuerung['createHeizplanConstants'] = array();
		$this->heizungssteuerung['createHeizplanConstants']['WebFrontChangeVariableScriptObjectID']	= 26344 /*[Heizungssteuerung\Scripte\aktionsScripte-changeWebfrontVariable.ips.php]*/; // cAOIDs ok
		$this->heizungssteuerung['createHeizplanConstants']['WebFrontVariableProfileName'] 				= "b_Anwesend-Abwesend"; 	// cAOIDs ok
		// $this->heizungssteuerung['createHeizplanConstants']['WebFrontWunschTempeaturProfileName'] = "f_Raumtempperatur";     // wird nur manuell den Wunsch-Temperatur Variablen zugewiesen
		$this->heizungssteuerung['createHeizplanConstants']['iFrontVariableProfileName'] 				= "~Switch"; 					// cAOIDs ok
		$this->heizungssteuerung['createHeizplanConstants']['CreateShortHeizplanVariablen'] 			= TRUE;
		$this->heizungssteuerung['createHeizplanConstants']['CreateiFrontToogleButton'] 					= TRUE;
		$this->heizungssteuerung['createHeizplanConstants']['IPSCreateVariableBoolean'] 					= 0;
		$this->heizungssteuerung['createHeizplanConstants']['IPSCreateVariableInteger'] 					= 1;
		$this->heizungssteuerung['createHeizplanConstants']['IPSCreateVariableFloat'] 					= 2;
		$this->heizungssteuerung['createHeizplanConstants']['IPSCreateVariableString'] 					= 3;
		$this->heizungssteuerung['createHeizplanConstants']['IPSCreateVariableString'] 					= 3;

		// ### Definition der ObjectIDs der Kategorien, in denen der Heizplan
		// ### der einzelnen Tage erstellt werden soll
		// ### LAST CHANGE IN IN REVISION 1
		$this->heizungssteuerung['rootNodesHeizplan'] = array();
		// for testing:
		// $this->heizungssteuerung['rootNodesHeizplan'][0] = 39943 /*[Objekt #39943 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][1] = 12509 /*[Heizungssteuerung\Heizplan\01-Montag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][2] = 22828 /*[Heizungssteuerung\Heizplan\02-Dienstag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][3] = 56153 /*[Heizungssteuerung\Heizplan\03-Mittwoch]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][4] = 48738 /*[Heizungssteuerung\Heizplan\04-Donnerstag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][5] = 39272 /*[Heizungssteuerung\Heizplan\05-Freitag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][6] = 32485 /*[Heizungssteuerung\Heizplan\06-Samstag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][7] = 26940 /*[Heizungssteuerung\Heizplan\07-Sonntag]*/; // cAOIDs ok

		// ###
		// ### Definition der ObjectIDs, an denen die Raum-Soll-Temperaturen gelesen werden können
		// ###    bei HomeMatic muss hier die SETPOINT Variable der Thermostate verlinkt werden
		// ###    bei 1-Wire in IPS selbst definierte Variablen
		// ### LAST CHANGE IN IN REVISION 3
		$this->heizungssteuerung['readRaumSollTemeratur'] = array();
		// ### Entweder direkte Thermostate
		// ###    bei HomeMatic
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Bad'] 			= 11496 /*[Objekt #11496 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Bad\Bad - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Sophie']			= 57653 /*[Objekt #57653 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Büro\Büro - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Juli'] 	= 54771 /*[Haus\Sophie\Sophie Thermostat:2]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Gästezimmer\Gästezimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Schlafzimmer'] = 53751 /*[Objekt #53751 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Schlafzimmer\Schlafzimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Wohnzimmer'] 	= 50601 /*[Objekt #50601 existiert nicht]*/; // cAOIDs ok  //[Heizung\HomeMatic Komponenten\Wohnzimmer\Wohnzimmer - Thermostat - Klima (CLIMATECONTROL_REGULATOR)\SETPOINT]
		// ### ODER IPS-Variablen (zum speichern und lesen der Werte)
		// ### (diese müssen im IPS-Baum selbst angelegt werden)
		// ###    z.B. bei 1-wire Modulen
		// ###    z.B. bei HomeMaticHeizenJaNein
		// ### Test-Szenario CHANGE CHANGE CHANGE 2/3
		$this->heizungssteuerung['readRaumSollTemeratur']['Bad'] 			= 49063 /*[Heizungssteuerung\heiz - Soll Temperaturen\Bad]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
		$this->heizungssteuerung['readRaumSollTemeratur']['Sophie']			= 30652 /*[Objekt #57644 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Büro]
		$this->heizungssteuerung['readRaumSollTemeratur']['Juli'] 			= 29823 /*[Objekt #26155 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Gästezimmer]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Schlafzimmer'] = 35587 /*[Objekt #35587 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Schlafzimmer]
	//	$this->heizungssteuerung['readRaumSollTemeratur']['Wohnzimmer'] 	= 53457 /*[Objekt #53457 existiert nicht]*/; // cAOIDs ok  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Wohnzimmer]

		// ###
		// ### Definition der ObjectIDs an denen die Raum-Soll-Temperaturen geschrieben werden können
		// ### Eventuell sind diese gleich "Gelesenen", bei HomeMatic jedoch nicht ...
		// ### dort wird die Variable ausgelsen, jedoch ins Thermostat zurückgeschrieben
		// ### LAST CHANGE IN IN REVISION 3
		// ### Entweder direkte Thermostate
		// ###    bei HomeMatic
		$this->heizungssteuerung['writeRaumSollTemeratur'] = array();
		$this->heizungssteuerung['writeRaumSollTemeratur']['Bad'] 				= 19096 /*[Haus\Bad\Bad Thermostat:2\SETPOINT]*/; // cAOIDs ok ;
		$this->heizungssteuerung['writeRaumSollTemeratur']['Sophie']			= 27155 /*[Objekt #19315 existiert nicht]*/; // cAOIDs ok ;
		$this->heizungssteuerung['writeRaumSollTemeratur']['Juli'] 				= 56804 /*[Objekt #31325 existiert nicht]*/; // cAOIDs ok ;
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Schlafzimmer'] 	= 30084 /*[Objekt #30084 existiert nicht]*/; // cAOIDs ok ;
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Wohnzimmer'] 		= 42515 /*[Objekt #42515 existiert nicht]*/; // cAOIDs ok ;
		// ### ODER IPS-Variablen (zum speichern und lesen der Werte)
		// ### (diese müssen im IPS-Baum selbst angelegt werden)
		// ###    z.B. bei 1-wire Modulen
		/*
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Bad'] 				= 42715 /*[Objekt #42715 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Sophie']				= 57644 /*[Objekt #57644 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Büro]
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Juli'] 	= 26155 /*[Objekt #26155 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Gästezimmer]
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Schlafzimmer'] 	= 35587 /*[Objekt #35587 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Schlafzimmer]
	//	$this->heizungssteuerung['writeRaumSollTemeratur']['Wohnzimmer'] 		= 53457 /*[Objekt #53457 existiert nicht]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Wohnzimmer]


		// ###
		// ### Definition der ObjectIDs, an denen die Raum-Ist-Temperaturen gelesen werden können
		// ### LAST CHANGE IN IN REVISION 2
		// ### Entweder direkte Thermostate
		// ###    bei HomeMatic
		$this->heizungssteuerung['readRaumIstTemeratur'] = array();
		$this->heizungssteuerung['readRaumIstTemeratur']['Bad'] 				= 29625 /*[Haus\Bad\Bad Thermostat:1\TEMPERATURE]*/; // cAOIDs ok
		$this->heizungssteuerung['readRaumIstTemeratur']['Sophie']			= 10863 /*[Objekt #39080 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['readRaumIstTemeratur']['Juli'] 			= 40022 /*[Objekt #47279 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['readRaumIstTemeratur']['Schlafzimmer'] 	= 25826 /*[Objekt #25826 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['readRaumIstTemeratur']['Wohnzimmer'] 	= 10100 /*[Objekt #10100 existiert nicht]*/; // cAOIDs ok

		// ###
		// ### Definition der ObjectIDs, an denen die Heiz-Stati der Räume gelesen werden können
		// ### Diese ObjectIDs müssen nur definiert werden, wenn das Interface entweder
		// ### HomeMaticHeizenJaNein oder EinsWireWagoKombinationsKomponenten ist
		// ### LAST CHANGE IN IN REVISION 3
		$this->heizungssteuerung['heizStatiRaeume'] = array();
		$this->heizungssteuerung['heizStatiRaeume']['Bad'] 				= 14801 /*[Heizungssteuerung\heiz - Stati\Bad]*/; // cAOIDs ok
		$this->heizungssteuerung['heizStatiRaeume']['Sophie']				= 23070 /*[Objekt #46508 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['heizStatiRaeume']['Juli'] 				= 32036 /*[Objekt #31397 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['heizStatiRaeume']['Schlafzimmer'] 	= 54207 /*[Objekt #54207 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['heizStatiRaeume']['Wohnzimmer'] 		= 46096 /*[Objekt #46096 existiert nicht]*/; // cAOIDs ok

		// ###
		// ### Definition der ObjectIDs der Fenster-Kontakte
		// ### LAST CHANGE IN IN REVISION 2
		$this->heizungssteuerung['rootNodesFenster'] = array();
		$this->heizungssteuerung['rootNodesFenster']['Bad'] = array();
		$this->heizungssteuerung['rootNodesFenster']['Bad'][0] 				= 27818 /*[Haus\Bad\Bad Fenster:1\STATE]*/; // cAOIDs ok

		// ###
		// ### Definition der ObjectIDs der IPS-Variablen, aus denen
		// ### die An-/Abwesend Wunsch-Temperaturen ausgelesen werden soll
		// ### Dort sollten FLOAT Variablen erstellt werden
		// LAST CHANGE IN IN REVISION 2
		$this->heizungssteuerung['temperaturProfile'] = array();
		$this->heizungssteuerung['temperaturProfile']['Bad'] = array();
		$this->heizungssteuerung['temperaturProfile']['Bad']['Anwesend'] 				= 54351 /*[Heizungssteuerung\Heizplan\00-Temperatur Profile\Bad - Anwesend]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Bad']['Abwesend'] 				= 29902 /*[Heizungssteuerung\Heizplan\00-Temperatur Profile\Bad - Abwesend]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Sophie'] = array();
		$this->heizungssteuerung['temperaturProfile']['Sophie']['Anwesend'] 			= 36750 /*[Objekt #25567 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Sophie']['Abwesend'] 			= 32547 /*[Objekt #25567 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Juli'] = array();
		$this->heizungssteuerung['temperaturProfile']['Juli']['Anwesend'] 	= 43621 /*[Objekt #16056 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Juli']['Abwesend'] 	= 57502 /*[Objekt #32661 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['temperaturProfile']['Schlafzimmer'] = array();
	//	$this->heizungssteuerung['temperaturProfile']['Schlafzimmer']['Anwesend'] 	= 20055 /*[Objekt #20055 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['temperaturProfile']['Schlafzimmer']['Abwesend'] 	= 18066 /*[Objekt #18066 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['temperaturProfile']['Wohnzimmer'] = array();
	//	$this->heizungssteuerung['temperaturProfile']['Wohnzimmer']['Anwesend'] 	= 24623 /*[Objekt #24623 existiert nicht]*/; // cAOIDs ok
	//	$this->heizungssteuerung['temperaturProfile']['Wohnzimmer']['Abwesend'] 	= 10409 /*[Objekt #10409 existiert nicht]*/; // cAOIDs ok

		// ###
		// ### Definition der Zeit- und Standard-Anwesenheits-Profilen
		// ### inkl. der Aufteilung nach Wochentag / Wochenende
		// ### LAST CHANGE IN IN REVISION 1
		$this->heizungssteuerung['zeitProfile'] = array();
		$this->heizungssteuerung['standardZuordnung'] = array();

		// ### Raum Definitionen - Bad
		$this->heizungssteuerung['zeitProfile']['Bad'] = array();
		$this->heizungssteuerung['zeitProfile']['Bad'][0] = "06:00 bis 07:00 Uhr - Frühmorgens";
		$this->heizungssteuerung['zeitProfile']['Bad'][1] = "07:00 bis 08:00 Uhr - Morgens";
		$this->heizungssteuerung['zeitProfile']['Bad'][2] = "08:00 bis 21:30 Uhr - Tagsüber";
		$this->heizungssteuerung['zeitProfile']['Bad'][3] = "21:30 bis 23:00 Uhr - Abends";
		$this->heizungssteuerung['standardZuordnung']['Bad'] = array();
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags']["06:00 bis 07:00 Uhr - Frühmorgens"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags']["07:00 bis 08:00 Uhr - Morgens"] 			= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags']["08:00 bis 21:30 Uhr - Tagsüber"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags']["21:30 bis 23:00 Uhr - Abends"] 			= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["06:00 bis 07:00 Uhr - Frühmorgens"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["07:00 bis 08:00 Uhr - Morgens"] 		= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["08:00 bis 21:30 Uhr - Tagsüber"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["21:30 bis 23:00 Uhr - Abends"] 		= TRUE;

		// ### Raum Definitionen - Sophie
		$this->heizungssteuerung['zeitProfile']['Sophie'] = array();
		$this->heizungssteuerung['zeitProfile']['Sophie'][0] = "06:00 bis 12:00 Uhr - Morgens";
		$this->heizungssteuerung['zeitProfile']['Sophie'][1] = "12:00 bis 16:00 Uhr - Tagsüber";
		$this->heizungssteuerung['zeitProfile']['Sophie'][2] = "16:00 bis 19:30 Uhr - Nachmittags";
		$this->heizungssteuerung['zeitProfile']['Sophie'][3] = "19:30 bis 23:00 Uhr - Abends";
		$this->heizungssteuerung['standardZuordnung']['Sophie'] = array();
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Werktags']["06:00 bis 12:00 Uhr - Morgens"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Werktags']["12:00 bis 16:00 Uhr - Tagsüber"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Werktags']["16:00 bis 19:30 Uhr - Nachmittags"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Werktags']["19:30 bis 23:00 Uhr - Abends"] 			= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Wochenende']["06:00 bis 12:00 Uhr - Morgens"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Wochenende']["12:00 bis 16:00 Uhr - Tagsüber"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Wochenende']["16:00 bis 19:30 Uhr - Nachmittags"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Sophie']['Wochenende']["19:30 bis 23:00 Uhr - Abends"] 		= FALSE;

		// ### Raum Definitionen - Juli
		$this->heizungssteuerung['zeitProfile']['Julo'] = array();
		$this->heizungssteuerung['zeitProfile']['Juli'][0] = "07:00 bis 23:00 Uhr - Einheitlich";
		$this->heizungssteuerung['standardZuordnung']['Juli'] = array();
		$this->heizungssteuerung['standardZuordnung']['Juli']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Juli']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Juli']['Werktags']["07:00 bis 23:00 Uhr - Einheitlich"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Juli']['Wochenende']["07:00 bis 23:00 Uhr - Einheitlich"] = FALSE;

		// ### Raum Definitionen - Schlafzimmer
	/*	$this->heizungssteuerung['zeitProfile']['Schlafzimmer'] = array();
		$this->heizungssteuerung['zeitProfile']['Schlafzimmer'][0] = "07:00 bis 18:00 Uhr - Tagsüber";
		$this->heizungssteuerung['zeitProfile']['Schlafzimmer'][1] = "18:00 bis 23:00 Uhr - Abends";
		$this->heizungssteuerung['zeitProfile']['Schlafzimmer'][2] = "23:00 bis 23:59 Uhr - Nachts";
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer'] = array();
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Werktags']["07:00 bis 18:00 Uhr - Tagsüber"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Werktags']["18:00 bis 23:00 Uhr - Abends"] = TRUE;
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Werktags']["23:00 bis 23:59 Uhr - Nachts"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Wochenende']["07:00 bis 18:00 Uhr - Tagsüber"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Wochenende']["18:00 bis 23:00 Uhr - Abends"] = TRUE;
		$this->heizungssteuerung['standardZuordnung']['Schlafzimmer']['Wochenende']["23:00 bis 23:59 Uhr - Nachts"] = FALSE;

		// ### Raum Definitionen - Wohnzimmer
		$this->heizungssteuerung['zeitProfile']['Wohnzimmer'] = array();
		$this->heizungssteuerung['zeitProfile']['Wohnzimmer'][0] = "07:00 bis 12:00 Uhr - Morgens";
		$this->heizungssteuerung['zeitProfile']['Wohnzimmer'][1] = "12:00 bis 18:00 Uhr - Mittags";
		$this->heizungssteuerung['zeitProfile']['Wohnzimmer'][2] = "18:00 bis 23:00 Uhr - Abends";
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer'] = array();
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Werktags']["07:00 bis 12:00 Uhr - Morgens"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Werktags']["12:00 bis 18:00 Uhr - Mittags"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Werktags']["18:00 bis 23:00 Uhr - Abends"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Wochenende']["07:00 bis 12:00 Uhr - Morgens"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Wochenende']["12:00 bis 18:00 Uhr - Mittags"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Wohnzimmer']['Wochenende']["18:00 bis 23:00 Uhr - Abends"] 	= TRUE;  */

		// ############################################################################################
		// ###
		// ### Raum-Steuerungstechniken definieren:
		// ###
		// ### KEINE Erweiterte Raum-Steuerungstechnik
		// ###    Das Raum-Thermostat wird einfach auf die Wunsch-Temperatur gesetzt
		// ###
		// ### SIMPLE-DELTA Raumsteuerungstechnik
		// ###    Da einige Systeme den Raum höher heizen als gewünscht, kann
		// ###    hier ein DELTA-Wert angegeben werden, der auf von allen
		// ###    Wunsch-Temperaturen abgezogen wird
		// ###
		// ### SOLL-IST-VERGLEICH Raumsteuerungstechnik
		// ###    Sollte das Thermostat nur Heizen Ja/Nein unterstützen
		// ###    oder die Thermostatssteuerung zu schlecht sein, kann mit
		// ###    dieser Steuerungstechnik die Soll Temperatur permanent mit
		// ###    der Ist-Temperatur verglichen und angepasst werden
		// ###    Solange die Wunsch-Temperatur plus die Delta-Temperatur im
		// ###    Raum noch nicht erreicht ist, wird diese als Soll-Temperatur gesetzt
		// ###    Wenn diese Temperatur erreicht ist, wird die Soll-Temperatur auf die
		// ###    Wunsch-Temperatur minus die Delta-Temperatur gesetzt.
		// ###    Dies gilt so lange, bis die Ist-Temperatur diese neue
		// ###    Soll-Temperatur unterschreitet
		// ###
		// ###    Eventuelle DELTA-Werte aus SIMPLE-DELTA werden auch hier beachtet
		// ###
		// ### ÜBERSCHWAPPT-DELTA Raumstuéuerungstechik (aktuell noch NICHT implementiert)
		// ###    Hier der Raum erst auf die Wunsch-Temperatur minus den jeweiligen Delta Wert
		// ###    hochheizt. Dann wird die tatsächliche Wunsch-Temperatur gesetzt.
		// ###    Damit soll verhindert werden, dass die Raumtemperatur "überschwappt" bevor sich die
		// ###    Stellantriebe bei der Wunsch-Temperatur schließen
		// ###
		// ###    Eventuelle DELTA-Werte aus SIMPLE-DELTA werden auch hier beachtet

		// Welche Technik soll für welchen Raum benutzt werden?
		// LAST CHANGE IN REVISION 3
		$this->heizungssteuerung['raumSteuerungsTechnik'] = array();
		$this->heizungssteuerung['raumSteuerungsTechnik']['Bad'] 			= "SIMPLE-DELTA";
  /*		$this->heizungssteuerung['raumSteuerungsTechnik']['Sophie'] 			= "KEINE";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Juli'] 	= "SIMPLE-DELTA";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Wohnzimmer'] 	= "SIMPLE-DELTA";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Schlafzimmer']	= "SIMPLE-DELTA";    */
		// ### Test-Szenario CHANGE CHANGE CHANGE 3/3
		$this->heizungssteuerung['raumSteuerungsTechnik']['Bad'] 			= "SOLL-IST-VERGLEICH";
    	$this->heizungssteuerung['raumSteuerungsTechnik']['Sophie'] 		= "SOLL-IST-VERGLEICH";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Juli'] 			= "SOLL-IST-VERGLEICH";
	/*	$this->heizungssteuerung['raumSteuerungsTechnik']['Wohnzimmer'] 	= "SOLL-IST-VERGLEICH";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Schlafzimmer']	= "SOLL-IST-VERGLEICH";   */

		// Delta Werte, die beim "Hochheizen" eines Raumes vorerst von der Wunsch-Temperatur
		// abgezogen werden, bis die Wunsch-Temperatur minus Delta erreicht wird

		// SIMPLE-DELTA Werte definieren
		// Delta Werte, die für die Soll-Temperatur des Raumes abgezogen wird
		// LAST CHANGE IN REVISION 2
		$this->heizungssteuerung['simpleDeltaTemperatur'] = array();
		$this->heizungssteuerung['simpleDeltaTemperatur']['Bad'] 			=  1.0;
		$this->heizungssteuerung['simpleDeltaTemperatur']['Sophie'] 			=  0.5;
		$this->heizungssteuerung['simpleDeltaTemperatur']['Juli'] 	=  1.0;
	/*	$this->heizungssteuerung['simpleDeltaTemperatur']['Schlafzimmer']	=  1.0;
		$this->heizungssteuerung['simpleDeltaTemperatur']['Wohnzimmer'] 	=  1.0;    */

		// ÜBERSCHWAPP-DELTA Raum-Steuerungs-Definitionen
		/*
	   // TODO: in config verschieben?
	   // Überschwappt-Abrechnungs-Delta
		// ist die Abrechnungs-Wert in %,
		// bei der der Raum auf die eigentliche Wunsch-Temperatur angehoben wird
	   // Beispiele:
	   //    - Wunsch-Temperatur = 18°
	   //    - DeltaWert: 2° ==> Anheiz-Temperatur == 16° (18 - 2)
	   //
	   // 0    bedeutet, dass bei einer IST-Temperatur von 18,0° (18° - 0,0° /  0% von 2°)
		//      die SOLL-Temperatur von 16° Anheizen auf 18° angehoben wird
		// 0.25 bedeutet, dass bei einer IST-Temperatur von 17,5° (18° - 0,5° / 25% von 2°)
		//      die SOLL-Temperatur von 16° Anheizen auf 18° angehoben wird
	   // 1    bedeutet, dass bei einer IST-Temperatur von 16,0° (18° - 2,0° / 100% von 2°)
		//      die SOLL-Temperatur von 16° Anheizen auf 18° angehoben wird
		$ueberschwapptDelta = 0.25;
		==> für jeden Raum einzeln
		*/

		// ###
		// ### END DEFINE Heizungssteuerung
		// ###
		// ##############################################################

		// define other things
		$this->diverses = array();
		$this->diverses['newLine'] 					= "<br>
";
		$this->diverses['newDebugLine'] 			= "
";
		$this->diverses['HTMLDebugPlaceHolder'] 	= "   ";

		$this->diverses['color[black]'] 		= "#000000";
		$this->diverses['color[green]']		= "#009900";
		$this->diverses['color[red]'] 		= "#FF0000";
		$this->diverses['color[winered]']	= "#990000";
		$this->diverses['color[yellow]']		= "#FFFFCC";
	}

	public function getVersion() {
		return $this->version;
	}

	public function getCreateHeizplanConfigConstantsArray() {
		return $this->heizungssteuerung['createHeizplanConstants'];
	}

	public function getHeizungsKomponenten() {
		return $this->heizungssteuerung['heizungsKomponenten'];
	}

	public function getWindowRootNodeForRoom($roomName) {
	   // returns Array, falls Fenster für den Raum existieren
	   // returns -1, falls keine Fenster existieren
		if (isset($this->heizungssteuerung['rootNodesFenster'][$roomName])) {
			return $this->heizungssteuerung['rootNodesFenster'][$roomName];
		}
		else {
		   return -1;
		}
	}
	
	public function getRootNodeForDay($dayNumber) {
	   // 1 = Montag; 7 = Sonntag
		return $this->heizungssteuerung['rootNodesHeizplan'][$dayNumber];
	}

	public function getObjectIDRaumHeizStatus($raumName) {
		return $this->heizungssteuerung['heizStatiRaeume'][$raumName];
	}

	public function getReadRaumSollTemperaturObjectID($raumName) {
		return $this->heizungssteuerung['readRaumSollTemeratur'][$raumName];
	}

	public function getRaumIstTemperatur($raumName) {
		return GetValueFloat($this->heizungssteuerung['readRaumIstTemeratur'][$raumName]);
	}

	public function getRaumSteuerungsTechnik($raumName) {
		return $this->heizungssteuerung['raumSteuerungsTechnik'][$raumName];
	}

	public function getSimpleDeltaTemperaturRaum($raumName) {
		return $this->heizungssteuerung['simpleDeltaTemperatur'][$raumName];
	}

	public function getWriteRaumSollTemperaturObjectID($raumName) {
		return $this->heizungssteuerung['writeRaumSollTemeratur'][$raumName];
	}

	public function getWunschTemperatur($raumName,$anwesenheit) {
	   $anwesenheitString = "";
		if ($anwesenheit) {$anwesenheitString = "Anwesend";}
		else {$anwesenheitString = "Abwesend";}
		$this->showEnvironmentDebugMessage('call getWunschTemperatur('. $raumName .','. $anwesenheitString .')' ,"config.class[getWunschTemperatur]",1);
		$result = GetValueFloat($this->heizungssteuerung['temperaturProfile'][$raumName][$anwesenheitString]);
		$this->showEnvironmentDebugMessage('   $result == '. $result ,"config.class[getWunschTemperatur]",1);
		return $result;
	}

	public function getZeitProfile() {
		return $this->heizungssteuerung['zeitProfile'];
	}

	public function getTemperaturProfile() {
		return $this->heizungssteuerung['temperaturProfile'];
	}

	public function getStandardZuordnung() {
		return $this->heizungssteuerung['standardZuordnung'];
	}

	public function getInitialAnwesendValue($raumName,$zeit,$actualWeekDay) {
		// $this->showEnvironmentDebugMessage('call getInitialAnwesendValue('. $raumName .','. $anwesenheit .')' ,"config.class[getWunschTemperatur]",1);
		// $this->configObject->showEnvironmentDebugMessage('   $result == '. $result ,"homeMaticKomponenten.class[getSollTemperatur]",1);
		if ($actualWeekDay <= 5) {
		   return $this->heizungssteuerung['standardZuordnung'][$raumName]['Werktags'][$zeit];
	   }
		else {
		   return $this->heizungssteuerung['standardZuordnung'][$raumName]['Wochenende'][$zeit];
		}
	}

	 public function checkAllObjectIDs () {
	 	// Alle ObjectIDs für IPS Variablen durchgehen, ob dort auch Variablen existieren?
	 	$this->checkObjectIDExists("script",$this->heizungssteuerung['createHeizplanConstants']['WebFrontChangeVariableScriptObjectID'],'$this->heizungssteuerung["createHeizplanConstants"]["WebFrontChangeVariableScriptObjectID"]');
	 	$this->checkObjectIDExists("variableProfile",$this->heizungssteuerung['createHeizplanConstants']['WebFrontVariableProfileName'],'$this->heizungssteuerung["createHeizplanConstants"]["WebFrontVariableProfileName"]');
	 	$this->checkObjectIDExists("variableProfile",$this->heizungssteuerung['createHeizplanConstants']['iFrontVariableProfileName'],'$this->heizungssteuerung["createHeizplanConstants"]["iFrontVariableProfileName"]');
	 	foreach ($this->heizungssteuerung['rootNodesHeizplan'] as $key => $value) {$this->checkObjectIDExists("category",$value,'$this->heizungssteuerung["rootNodesHeizplan"]['. $key ."]");}
	 	foreach ($this->heizungssteuerung['readRaumSollTemeratur'] as $key => $value) {$this->checkObjectIDExists("variable",$value,'$this->heizungssteuerung["readRaumSollTemeratur"]['. $key ."]");}
		// Wird die Raum-Temperatur auf ein Objeckt oder eine IPS Variable geschrieben (je nach Interface)?
		$actualObjectType = "";
		if ($this->getHeizungsKomponenten() == "HomeMaticKomponenten" ) {$actualObjectType = "object";}
		if ($this->getHeizungsKomponenten() == "HomeMaticKomponentenHeizenJaNein") {$actualObjectType = "object";}
		if ($this->getHeizungsKomponenten() == "EinsWireWagoKombinationsKomponenten" ) {$actualObjectType = "variable";}
		foreach ($this->heizungssteuerung['writeRaumSollTemeratur'] as $key => $value) {$this->checkObjectIDExists($actualObjectType,$value,'$this->heizungssteuerung["writeRaumSollTemeratur"]['. $key ."]");}
		$actualObjectType = "";
		foreach ($this->heizungssteuerung['readRaumIstTemeratur'] as $key => $value) {$this->checkObjectIDExists("variable",$value,'$this->heizungssteuerung["readRaumIstTemeratur"]['. $key ."]");}

		// $this->heizungssteuerung['heizStatiRaeume'] nur checken, wenn das Interface HomeMaticHeizenJaNein oder EinsWireWago ist
		// für HomeMatic werden die Variablen nicht benötigt
		if ($this->heizungssteuerung['heizungsKomponenten'] == "EinsWireWagoKombinationsKomponenten"
		   || $this->heizungssteuerung['heizungsKomponenten'] == "HomeMaticKomponentenHeizenJaNein") {

			// $this->heizungssteuerung['heizungsKomponenten'] = "HomeMaticKomponenten";
			foreach ($this->heizungssteuerung['heizStatiRaeume'] as $key => $value) {$this->checkObjectIDExists("variable",$value,'$this->heizungssteuerung["heizStatiRaeume"]['. $key ."]");}
			}

		foreach ($this->heizungssteuerung['rootNodesFenster'] as $key => $value) {
			foreach ($this->heizungssteuerung['rootNodesFenster'][$key] as $key1 => $value1) {
				$this->checkObjectIDExists("variable",$value1,'$this->heizungssteuerung["rootNodesFenster"]['. $key ."][". $key1 ."]");
				}
			}
		foreach ($this->heizungssteuerung['temperaturProfile'] as $key => $value) {
			foreach ($this->heizungssteuerung['temperaturProfile'][$key] as $key1 => $value1) {
				$this->checkObjectIDExists("variable",$value1,'$this->heizungssteuerung["temperaturProfile"]['. $key ."][". $key1 ."]");
				}
			}
	 }
	 
	public function checkObjectIDExists($objectType,$objectID,$objectName) {

		$this->showEnvironmentDebugMessage('check existens of Variable Number '. $objectID .' ('. $objectType .' / '. $objectName .')' ,"config.class[checkObjectIDExists]",1);

	   $objectExists = FALSE;
		if ($objectType == "variable") {$objectExists = IPS_VariableExists($objectID);}
		if ($objectType == "script") {$objectExists = IPS_ScriptExists($objectID);}
		if ($objectType == "category") {$objectExists = IPS_CategoryExists($objectID);}
		if ($objectType == "variableProfile") {$objectExists = IPS_VariableProfileExists($objectID);}
		if ($objectType == "object") {$objectExists = IPS_ObjectExists($objectID);}

      if (!$objectExists) {
			if ($objectType == "") {
				$this->showEnvironmentDebugMessage("FEHLER: Das in der config-Datei definierte Object mit der Nummer ". $objectID . " besitzt KEINEN Type ==> Abbruch des Scripts (". $objectName .")" ,"config.class[checkObjectIDExists]",1);
				IPS_LogMessage("config.class","FEHLER: Das in der config-Datei definierte Object mit der Nummer ". $objectID . " besitzt KEINEN Type 
==> Abbruch des Scripts (". $objectName .")");
				}
			else {
				$this->showEnvironmentDebugMessage("FEHLER: Das in der config-Datei definierte Object mit der Nummer ". $objectID . " existiert NICHT ==> Abbruch des Scripts (". $objectType ." / ". $objectName .")" ,"config.class[checkObjectIDExists]",1);
				IPS_LogMessage("config.class","FEHLER: Das in der config-Datei definierte Object mit der Nummer ". $objectID . " existiert NICHT 
==> Abbruch des Scripts (". $objectType ." / ". $objectName .")");
				}
			die(-1);
			}
		return 1;
		}

	public function showEnvironmentDebugMessage ($message, $debugCategorie, $debugCount) {
		// delegate call
		$this->environmentDebugConfigObject->showEnvironmentDebugMessage($message, $debugCategorie, $debugCount);
	}

	 public function showDebugMessage ($message) {
	 // Dummy Methode, da tatsaechliche Ausgaben ueber showEnvironmentDebugMessage ausgegeben werden sollten
	 // TODO: EXCEPTION werfen
	 }


}

//Fügen Sie hier ihren Skriptquellcode ein

?>

Die Zeile 512 ff:


		foreach ($this->heizungssteuerung['readRaumIstTemeratur'] as $key => $value) {$this->checkObjectIDExists("variable",$value,'$this->heizungssteuerung["readRaumIstTemeratur"]['. $key ."]");}

		// $this->heizungssteuerung['heizStatiRaeume'] nur checken, wenn das Interface HomeMaticHeizenJaNein oder EinsWireWago ist
		// für HomeMatic werden die Variablen nicht benötigt
		if ($this->heizungssteuerung['heizungsKomponenten'] == "EinsWireWagoKombinationsKomponenten"
		   || $this->heizungssteuerung['heizungsKomponenten'] == "HomeMaticKomponentenHeizenJaNein") {

			// $this->heizungssteuerung['heizungsKomponenten'] = "HomeMaticKomponenten";
			foreach ($this->heizungssteuerung['heizStatiRaeume'] as $key => $value) {$this->checkObjectIDExists("variable",$value,'$this->heizungssteuerung["heizStatiRaeume"]['. $key ."]");}
			}

Und im IPS sieht das Ganze aktuell so aus: