Universelle Heizungssteuerung

Zitat:
Zitat von rtausend
p.s. soll nicht unverschämt klingen, aber wäre es irgendwann mal, irgendwie möglich, das man auch am thermometer selber die Temeratur anpasst? und er nur zu festen Zeiten wieder die „Standardwerte“ reinschreibt?
Das verstehe ich noch nicht richtig?

Was ich damit meinte ist, das ich ja in einem Homematic System am Thermostat über einen Drehregler die Temperatur auch einstellen könnte. Wenn ich an diesem die Temperatur einstelle, wird sie allerdings vom Script nach 2 Minuten wieder überschrieben.

Meine Frage wäre, ob man im script irgendwie einbauen könnte, das er erstmal schaut ob die Temperatur im bereich von sagen wir +/- 2°C verstellt wurde und er dann diese übernimmt anstatt nur einfach die im Webinterface eingestellte Temperatur drüberbügelt.

Damit könnte man komfortabel in den Zeitbereichen die man definiert hat die Temperatur um 1 oder 2 Grad Manuell verstellen und sie bleibt erhalten.

Du kannst mir auch gerne per PM Deine Nummer zukommen lassen oder anders rum, dann könnte ich Dir erklären was ich meine :slight_smile:

Gruß Robert

Ich bin mir nicht sicher, ob das vom Design her Sinn macht.

Wenn Du nicht willst, dass die Temperatur überschrieben wird, kannst Du das Thermostat ja einfach auf „Manuell“ stellen. Bei HomeMatic hat man ja die Möglichkeit, entweder die Temperatur Zeitgesteuert (automatisch durchs Thermostat), Zentral (zum Beispiel über IPS bzw. die CCU) oder manuell zu steuern, was die Stellantriebe tun sollen.

Ist dein Wunsch nicht damit erfüllt, das Thermostat einfach auf manuell zu stellen? Dann kannst Du die Temperatur verändern und später wieder zurückstellen.

Bei der Varianten ich stelle am Thermostat die Temperatur um müsste man ein Polling speziell für HomeMatic Thermostate schreibe, was immer überprüft ob sich die Temperatur am Thermostat geändert hat und ob man das dann auch in IPS übernehmen will. Dann gibt es wieder so fragen wie Du stellt am Thermostat was ein und deine Frau gleichzeitig am WebFront. Was gilt dann?

Als letzte (und das ist mit am wichtigsten) soll das Script universell sein und eigentlich nicht groß auf die Besonderheiten von HomeMatic oder anderen Herstellern eingehen bzw. deren Steuerungstechniken. Es ist ja nur ein nettes FrontEnd, was die Temperatur (eben für 7 Tage im voraus) vorgibt, die die Heizungssteuerung übernehmen soll.

Hier die verschiedenen Heizungssteuerungen und eventuell vorhandenen Thermostate oder Steuergeräte anzusprechen ist ziemlich aufwendig.

Wesentlich einfacher ist es hier, einfach die Wunsch-Temperatur ein WebFront höher zu stellen.

Der Wunsch wird wahrscheinlich also sehr sehr weit hinten auf der Feature-Liste landen. Sorry :frowning:

Eventuell weiter vorne könnte ein Wunsch wie „+2° im Raum X für die nächsten X Stunden“ landen, den man im WebFront setzen könnte. Aber auch hier wird die Funktion des Scripts in meinen Augen komplexer und man muss sich fragen, ob es sich für den „Mehrwert“ lohnt die Funktionalität zu schreiben. Auch die Frage, wie häufig man die Funktion benötigt spielt da mit. Wenn jemand 3x im Jahr die Temperatur für 2h höher setzen will, kann man das auch direkt in der Wunsch-Temperatur machen.

Hallo Ernie,

jetzt schaltet er zwar wenn ich das Fenster aufmache auf 18Grad (abwesendheitstemperatur) allerdings wenn ich das fenster schliesse, passiert nichts weiter, er bleibt bei 18grad, müsste aber auf 22grad hoch regeln … Hast Du eine Idee wo ich schauen könnte?

Gruß Robert

Hast Du die Werte deiner Fenstergriffe kontrolliert?

Ist Fenster offen 1 und Fenster geschlossen 0?

Oder hast Du Fenster/Kipp Schalter?

Hallo Ernie,

ich habe „normale“ Fenster / Tür Kontakte von Homematik, also nicht die Griffdinger … Alle Fenster sind zu, die STATE Variablen auf FALSE… weis grad nicht weiter … Wenn ich ein Fenster aufmache, bekomme ich ja eine Meldung das er die Temperatur ändert weil ein Fenster offen ist, allerdings beim schliessen des Fensters kommt keine Meldung mehr wenn das Script anläuft…

Gruß Robert

Hallo,

ich hab die Heizungssterung nun seit rund 2 Monaten laufen und das nahezu problemlos - daher wollte ich einfach mal Ernie eine grosse Danke dafür sagen.

Was ich noch ändern wollte, aber der mangelnden Zeit zum Opfer gefallen ist, eine Anwesendheit/Abwesenheit und Wach/Schlafen - Steuerung per Taster zu integrieren.

Schön fände ich noch eine drittes Termperaturprofil zu haben um etwas flexibler die Heizungseinstellung zu machen - vielleich könnte Ernie das mal auf die Roadmap setzen :wink:

Dafür erst mal herzlichen Dank :slight_smile:

Alle übrigen Dinge kommen auf jeden Fall. Ich habe schon eine große Freature-Liste für das nächste Update …

Ich weiß leider nur noch nicht, ob das dieses Jahr noch etwas wird. Bis all die netten Dinge, die ich im Kopf habe implementiert sind, werden sicherlich viele Stunden vergangen sein, die ich momentan einfach nicht habe :frowning:

Wir bekommen in gut 8 Wochen den Schlüssel für unser neues altes Haus. Dann ist erst mal renovieren und sanieren angesagt. Das wird sich sicherlich bis in den Winter ziehen. Ob ich also vor der nächsten Heizperiode noch dazu komme, das Script weiter zu entwickeln ist leider eher unwahrscheinlich.

Aber es geht nichts verloren :wink: Ich schreibe alle Wünsche fleißig mit …

Hi,

die Heizperiode ist ja nun mehr oder weniger vorbei :slight_smile:

Kannst du mir aber mal sagen, wie ich die Anwesendheit_Abwesenheit Variable sinnvoll einbinde ? Der Bereich ist mir anhand der Doku ziemlich undurchsichtig.

Hintergrund, ich hab seit ein paar Tagen die IPS868 Anwesenheitskontrolle mit den Sendern und die würde ich gerne in diverse Programme einbinden, u.a. währe es cool, wenn alle die Wohnung verlassen haben, das dann die Heizung auf jeden fall runterfährt, egal was das Zeitprogramm sagt. Genauso dann eben auch wenn man nach Hause kommt.

Naja, DIE Global An- / Abwesenheitsvariable gibt es (momentan) noch nicht. Du schaltest ja für jeden Raum und dabei nochmals für jede Uhrzeit, ob Du da bist oder nicht.

Das Script schaut dann zum momentanen Zeitpunkt wo es aufgerufen wird, ob eine Uhrzeit gesetzt ist und ab diese An- oder Abwesenheit ist. Wenn keine Uhrzeit zutrifft, also beispielsweise nachts um 3 Uhr, wird automatisch Abwesenheit gesetzt.

In der nächsten (auch schon oben angesprochenen) Version, wird es die Möglichkeit geben, auch Globale An- (Party-Modus) oder Abwesenheit (Urlaub) zu setzen, dass alle individuellen Variablen überstimmt.

Habe ich es einigermaßen verstanden und verständlich erklärt?

Gruß,

ernie

Hallo,

ja, hast du richtig verstanden.
Das währe cool, wenn man z.b. per Taster an der Wohnungstüre u.a. dann dei Heizung runterfahren könnte, auch wenn der Zeitplan was anderes sagt.

Ich hab seit wenigen Tagen ein neues Spielzeug dafür, die IPS-868 Anwesenheitskontrole mit den Funksendern - macht das ganz noch komfortabler. Ich will damit alle Stromverbraucher, die derzeit mit einem Homemativ-Schaltaktor versehen sind, definiert abschalten, wenn keiner zuhause ist. Heizung-Steuerung dazu währe genial.

Eine kleine Idee hätte ich noch:
Was ich noch machen möchte, einmal pro Nacht alle HM-Wandthermostate wieder auch „Cent“ stellen, hab schon mehrfach vergessen, die wieder von „manuell“ auf „Cent“ zurückzustellen und stand dann morgens im kalten Badn :frowning:
Per Webfrontend geht das ja schon, sollte also kein grossen Problem sein, das zeitgesteuert zu machen.

Webfront von IPS oder von HM?

Das selbst zeitgesteuert zu machen, dauert mit einem Trigger keine 5 Minuten, ohne das es etwas mit meinem Scipt zu tun hat. Trigger aus das Script, der immer Nachts aufgerufen wird. Die Implementierung, das von IPS auch direkt umzustellen, wurde hier im Forum schon ausführlich besprochen.

Oder meintest Du, dass es aus meinem Script heraus schön wäre?

Hier wäre dann noch mal der Hinweis angebracht, dass das Script ja kein explizites HM Script ist und universell einsetzbar sein soll; dabei auf individuelle Einzel-Dinge wie die CENT-Steuerung von HM gehört eigentlich nicht zum Plan …

Bei dieser speziellen Sache, könnte ich mir aber schon vorstellen, das eventuell zu implementieren, da es wahrscheinlich nur ein geringer Aufwand ist. Aber auch hier stellt sich wieder einmal die Grundsatzfrage was man erreichen will.

Ich könnte sehr einfach mit dem überprüfen der normalen Temperatur immer CENT wieder aktivieren (so wie Du einmal in der Nacht). Dann entfällt aber die Möglichkeit, tatsächlich die MANUELL Funktion der Thermostate zu nutzen. Weil jedes mal, wenn Du es umstellt, wird es vom Script wieder zurückgestellt. Die Variante, dass es im Heizplan einmal pro Nacht ausgeführt wird, würde ich aber wiederum design-technisch nicht im Heizungsscript sehen sondern in einem Trigger, den jeder selbst anlegt (Begründung siehe oben, weil es kein universelles Problem ist, sondern nur HM) …

Was erwartest Du davon, dass das Heizungssscript das können sollte?

Hallo ernie,

ich habe das ganze Heizungs-Script nun installiert und es lief auf auf Anhieb fehlerfrei. Einrichtunszeit: ca. 1,5 Stunden.

Ich habe da allerdings noch eine Frage bzgl. des Wochenendes.

Theoretisch müssten bei Samstag und Sonntag zwei Werte „an“ sein, wenn ich den Code richtig verstanden habe? Oder habe ich etwas falsch gemacht?

Wäre für kurze Hilfestellung dankbar…

Gruß,
Christoph

Hallo,

ja den beiden Screenshots nach schon …

Den Heizplan komplett neu erstellt (createHeizplanOneWeek) hast Du sicherlich mal gemacht, oder?

Poste mal die config.php komplett als Code, dann finden wir den Fehler sicherlich.

Gruß,

ernie

Jo, Wochenheizplan habe ich noch mal erstellen lassen.

Hier der Code:

<?

/*
 ################################################################################
 # 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']	= 32297 /*[Allgemein\Heizungssteuerung\Scripte\aktionsScripte-changeWebfrontVariable]*/ ;
		$this->heizungssteuerung['createHeizplanConstants']['WebFrontVariableProfileName'] 				= "Anwesend-Abwesend";
		// $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] = 56607 /*[Allgemein\Heizungssteuerung\Heizplan\00-Temperatur Profile]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][1] = 19278 /*[Allgemein\Heizungssteuerung\Heizplan\01-Montag]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][2] = 32944 /*[Allgemein\Heizungssteuerung\Heizplan\02-Dienstag]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][3] = 45699 /*[Allgemein\Heizungssteuerung\Heizplan\03-Mittwoch]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][4] = 45971 /*[Allgemein\Heizungssteuerung\Heizplan\04-Donnerstag]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][5] = 10494 /*[Allgemein\Heizungssteuerung\Heizplan\05-Freitag]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][6] = 18162 /*[Allgemein\Heizungssteuerung\Heizplan\06-Samstag]*/;
		$this->heizungssteuerung['rootNodesHeizplan'][7] = 25226 /*[Allgemein\Heizungssteuerung\Heizplan\07-Sonntag]*/;

		// ###
		// ### 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'] 			= 39142 /*[Badezimmer\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 /*[Objekt #54771 existiert nicht]*/; // 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'] 			= 42715 /*[Objekt #42715 existiert nicht]*/; // 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'] 				= 54276 /*[Badezimmer\CLIMATECONTROL_REGULATOR]*/ ;
		/*
		$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'] 				= 20574 /*[Badezimmer\WEATHER\TEMPERATURE]*/ ;
		/*
		$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
		*/

		// ###
		// ### 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'] 				= 52917 /*[Objekt #52917 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['heizStatiRaeume']['Büro']				= 46508 /*[Objekt #46508 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['heizStatiRaeume']['Gästezimmer'] 		= 31397 /*[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] 				= 40376 /*[Allgemein\Heizungssteuerung\Dummy_Window]*/ ;


		// ###
		// ### 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'] 				= 54043 /*[Allgemein\Heizungssteuerung\Heizplan\00-Temperatur Profile\Badezimmer - Anwesend]*/ ;
		$this->heizungssteuerung['temperaturProfile']['Bad']['Abwesend'] 				= 36055 /*[Allgemein\Heizungssteuerung\Heizplan\00-Temperatur Profile\Badezimmer - Abwesend]*/ ;
		/*
		$this->heizungssteuerung['temperaturProfile']['Büro'] = array();
		$this->heizungssteuerung['temperaturProfile']['Büro']['Anwesend'] 			= 23609 /*[Objekt #23609 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Büro']['Abwesend'] 			= 25567 /*[Objekt #25567 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Gästezimmer'] = array();
		$this->heizungssteuerung['temperaturProfile']['Gästezimmer']['Anwesend'] 	= 16056 /*[Objekt #16056 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['temperaturProfile']['Gästezimmer']['Abwesend'] 	= 32661 /*[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:15 Uhr - Frühmorgens";
		$this->heizungssteuerung['zeitProfile']['Bad'][1] = "07:15 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:15 Uhr - Frühmorgens"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Werktags']["07:15 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 08:00 Uhr - Frühmorgens"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["08:00 bis 10:00 Uhr - Morgens"] 		= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["10:00 bis 22:00 Uhr - Tagsüber"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Bad']['Wochenende']["22:30 bis 23:30 Uhr - Abends"] 		= TRUE;

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

		// ### Raum Definitionen - Gästezimmer
		$this->heizungssteuerung['zeitProfile']['Gästezimmer'] = array();
		$this->heizungssteuerung['zeitProfile']['Gästezimmer'][0] = "07:00 bis 23:00 Uhr - Einheitlich";
		$this->heizungssteuerung['standardZuordnung']['Gästezimmer'] = array();
		$this->heizungssteuerung['standardZuordnung']['Gästezimmer']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Gästezimmer']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Gästezimmer']['Werktags']["07:00 bis 23:00 Uhr - Einheitlich"] = FALSE;
		$this->heizungssteuerung['standardZuordnung']['Gästezimmer']['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'] 			= "KEINE";
		/*
		$this->heizungssteuerung['raumSteuerungsTechnik']['Büro'] 			= "KEINE";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Gästezimmer'] 	= "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']['Büro'] 			= "SOLL-IST-VERGLEICH";
		$this->heizungssteuerung['raumSteuerungsTechnik']['Gästezimmer'] 	= "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']['Büro'] 			=  0.5;
		$this->heizungssteuerung['simpleDeltaTemperatur']['Gästezimmer'] 	=  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

?>

Hallo,

wir sanieren gerade unser neues altes Haus. Deshalb könnten auch in nächster Zeit eventuell die Antwort-Zeiten etwas länger als sonst dauern :frowning:

Aber deinen Fehler habe ich gefunden :slight_smile:

Ich zitiere aus Seite 11 des Threads – und ja, ich stimme mit euch überein, dass man wenn man das Heizungsscript einrichtet, nicht alle 24 Seiten lesen muss …

Ich werde das – leider erst nachdem unser Haus fertig sein wird :slight_smile: ins Wiki und in die Config Datei als Hinweis mit aufnehmen …

Viele Grüße,

ernie

Hallo ernie,

vielen Dank für die Hilfe! Nun funktoiniert alles so, wie es funktionieren muss.

Die ersten auftretenden Probleme konnte ich mit Hilfe dieses Threads lösen, aber die kompletten 24 habe ich tatsächlich nicht gelesen - gebe ich zu :rolleyes:

Gruß,
Christoph

Hallo ernie,

erstmal besten Dank für das wirklich gute Script. Ich habe es bei mir im Büro und zu Hause laufen. An dem Problem vom Christoph bin ich auch angekommen und habe es so gelöst, dass ich als „Basis“ Zeitplan einfach einen sehr ausführlichen nehme und da wo ich nicht viel ändern möchte schlicht öfter die selben Werte drin lasse.

Hier mal ein Ausschnitt meiner Konfig:

// ### Raum Definitionen - Küche
$this->heizungssteuerung['zeitProfile']['Küche'] = array();
$this->heizungssteuerung['zeitProfile']['Küche'][0] = "00:00 bis 06:00 Uhr - Frühmorgens";
$this->heizungssteuerung['zeitProfile']['Küche'][1] = "06:00 bis 09:00 Uhr - Morgens";
$this->heizungssteuerung['zeitProfile']['Küche'][2] = "09:00 bis 12:00 Uhr - Vormittag";
$this->heizungssteuerung['zeitProfile']['Küche'][3] = "12:00 bis 15:00 Uhr - Frühnachmittags";
$this->heizungssteuerung['zeitProfile']['Küche'][4] = "15:00 bis 19:00 Uhr - Spätnachmittags";
$this->heizungssteuerung['zeitProfile']['Küche'][5] = "19:00 bis 00:00 Uhr - Abends";
$this->heizungssteuerung['standardZuordnung']['Küche'] = array();
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags'] = array();
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende'] = array();
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["00:00 bis 06:00 Uhr - Frühmorgens"] = FALSE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["06:00 bis 09:00 Uhr - Morgens"] = TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["09:00 bis 12:00 Uhr - Vormittag"] = TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["12:00 bis 15:00 Uhr - Frühnachmittags"]= TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["15:00 bis 19:00 Uhr - Spätnachmittags"]= TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Werktags']["19:00 bis 00:00 Uhr - Abends"]=FALSE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["00:00 bis 06:00 Uhr - Frühmorgens"]=FALSE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["06:00 bis 09:00 Uhr - Morgens"] =TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["09:00 bis 12:00 Uhr - Vormittag"]=TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["12:00 bis 15:00 Uhr - Frühnachmittags"]=TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["15:00 bis 19:00 Uhr - Spätnachmittags"]=TRUE;
$this->heizungssteuerung['standardZuordnung']['Küche']['Wochenende']["19:00 bis 00:00 Uhr - Abends"]=FALSE;

Seitdem ich das so mache ist es nur leider so, dass es immer wieder die Fehlermeldung gibt, dass kein passendes Profil hinterlegt wurde. Im Büro, wo ich die Zeiten so habe wie Du ursprünglich, klappt alles.
Hier also meine Frage: Habe ich irgendwo einen dämlichen Typo oder kann man die Zeitprofile nicht frei zusammenbauen wie man sie benötigt? Natürlich müssen dann alle das selbe Zeitprofil haben.

Besten Dank für Eure Hilfe!

Peter

Hallo,

ich hab damit Problem gehabt bei mir:

$this->heizungssteuerung['zeitProfile']['Küche'][5] = "19:00 bis 00:00 Uhr - Abends"; 

Entweder das Script oder IPS kommt mit dem Zeitpunkt bis 0:00 scheinbar nicht klar.
Als ich den Wert auf 23:59 geändert habe, gabs keine Probleme mehr. Gleiches gilt dann auch für Zeiträume, die über Mitternacht hinaus gehen.

Ich hänge mal einen auszug aus meiner aktuellen Config an, vielleicht kannst du da was mit anfangen:

		// ### Raum Definitionen - Arbeitszimmer
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'] = array();
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][0] = "00:00 bis 05:30 Uhr - Nachts";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][1] = "05:30 bis 06:30 Uhr - Frühmorgens";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][2] = "06:30 bis 08:00 Uhr - Morgens";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][3] = "08:00 bis 12:00 Uhr - Vormittag";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][4] = "12:00 bis 16:00 Uhr - Nachmittat";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][5] = "16:00 bis 22:30 Uhr - Abends";
		$this->heizungssteuerung['zeitProfile']['Arbeitszimmer'][6] = "22:30 bis 23:59 Uhr - Spätabends";
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer'] = array();
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags'] = array();
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende'] = array();
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["00:00 bis 05:30 Uhr - Nachts"] 			= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["05:30 bis 06:30 Uhr - Frühmorgens"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["06:30 bis 08:00 Uhr - Morgens"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["08:00 bis 12:00 Uhr - Vormittag"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["12:00 bis 16:00 Uhr - Nachmittat"] 	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["16:00 bis 22:30 Uhr - Abends"] 			= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Werktags']["22:30 bis 23:59 Uhr - Spätabends"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["00:00 bis 05:30 Uhr - Nachts"]		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["05:30 bis 06:30 Uhr - Frühmorgens"]	= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["06:30 bis 08:00 Uhr - Morgens"] 		= FALSE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["08:00 bis 12:00 Uhr - Vormittag"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["12:00 bis 16:00 Uhr - Nachmittat"] 	= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["16:00 bis 22:30 Uhr - Abends"] 		= TRUE;
		$this->heizungssteuerung['standardZuordnung']['Arbeitszimmer']['Wochenende']["22:30 bis 23:59 Uhr - Spätabends"] 	= TRUE;

HI!

Super, das ist ein guter Tipp.
Den ganzen Tag über hat´s super geklappt nur jetzt im letzten Zyklus „18:00 bis 00:00h“ gibt´s Probleme, das scheint also schon so zu sein wie Du sagst. Ich änder das gleich mal und melde dann ob´s geklappt hat.

Thanx!!

Nachtrag:

Genau das war´s! Ich hab jetzt zur Sicherheit immer 00:01 und 23:59 genommen.
Danke für die Hilfe!!

Gruß
Peter

Hi,

bin erst seit ein paar Tagen stolzer Besitzer einer Homematic CCU und IP-Symcon.

Ich versuche gerade dein Script zum Laufen zu bringen und im 2. Versuch schaut das Ganze schon gar nicht sooo schlecht aus… :slight_smile:

Allerdings werde ich noch die eine oder andere Hürde nehmen müssen. Aktuell hakt es hier:

HomeMaticHeizenJaNein
NEU eingeführt in Revision 3

readRaumSollTemperatur Array: Hier müssen die IPS-Variablen verlinkt werden, in denen die SOLL-Temperaturen gespeichert werden
writeRaumSollTemperatur Array: Hier müssen die HomeMatic THERMOSTAT ObjectIDs verlinkt werden.
istRaumTemperatur Array: Hier müssen die HomeMatic Wetter-Temperature ObjectIDs verlinkt werden.

writeRaumSollTemperatur Array: Hier müssen die HomeMatic THERMOSTAT ObjectIDs verlinkt werden.

Ich kann diese THERMOSTAT ObjectID einfach nicht finden, sorry. Habe in der Verzweiflung die SETPOINT-Var verwendet, was natürlich nicht funktioniert hat. Bis auf die bereits verwendete Wetter-Temperature-Var finde ich nichts, was seitens HM mit Temperatur zu tun hat.

Vielen Dank im Voraus für die Hilfe!

Grüße

Günter