Universelle Heizungssteuerung

Nein. Unterschiedliche Heizungen zu mischen, kann das Script nicht. Wie im Wiki bschrieben, unterscheiden sich die Interfaces. HomeMatic Thermostate erwarten eine Temperatur Angabe, EinsWire Stellantriebe TRUE/FALSE.

Wählst Du als Interface HomeMaticHeizungJaNein und steuerst ein Stellantrieb von EinsWire an, bekommt diesser 6° für abkühlen, nicht aber FALSE geschickt. Hier müsste es möglich sein, für jeden Raum das Heizungssystem zu unterscheiden, aktuell geht das aber nur global.

Die einzige Möglichkeit, momentan unterschiedliche Heizungssysteme anzusteuern sehe ich darin, für jedes System das Script zu installieren. Bei Dir also 2x.

Noch mal kurz zu meiner Definition von Temperaturen:
Wunsch-Temperaturen sind die Temperatur, die Du gerne im Raum haben möchtest
SOLL-Temperaturen sind die die Temperaturen, die der Raum gerade haben soll. Wenn also nicht das Thermostat regelt (nur Variante 1), dann muss sich das Script ja merken, wann es abschalten und nicht mehr heizen soll. Also im Heiz-Fall 0,5° über der Wunsch-Temperatur, im Abkühl-Fall 0,5° unter der Wunsch-Temperatur. Die SOLL-Temperatur (die nur in Variante 2 und 3 genutzt wird) toggelt also bei 15° Wunsch-Temperatur permament von 14,5° auf 15,5° und zurück.
IST-Temperaturen sind die aktuellen Temperaturen die zu dieser Sekunde im Raum vorhanden sind.

Von Dir müssen ausschließlich die Wunsch-Temperaturen geändert werden. Alle übrigen SOLL-Variablen werden vom Script gesteuert.

Eine Wunsch-Soll Temperatur sollte es nirgendwo geben …

Wie im Wiki beschrieben, wird bei HomeMatic die SOLL-Temperatur aus der SETPoint Variable gelesen, die Temperatur aber am Thermostat selbst geschrieben. Deshalb READ und WRITE IDs.

Je nach Interface werden dann die SOLL-Werte an den entsprechenden Orten abgelegt. Bei beiden HomeMatic Interfaces im Thermostat (bei Variante 1 wird die Wunsch-Temperatur gesendet, bei Variante 2 6° oder 30°) bei EinsWire in den IPS-Variablen.

Das HomeMaticHeizenJaNein Interface nimmt KEINEN anderen Modus im Thermostat. Es ist weiter ZENTRALEN-MODUS. Nur wird dem Stellantrieb 0% und 100% aufgezwungen, indem das Script die min. (6°) oder max. (30°) Temperatur als SOLL-Temperatur ans Thermostat sendet. Damit kann ich den Stellantrieb selbst regeln.

Ich hoffe, es ist jetzt noch etwas verständlicher. Aber frag weiter, wenn es noch nicht klar ist.

Verständlicher ? … hmm … bedingt :smiley:

Das was ich verstanden habe ist, das ich HM erst einmal raus lassen muss… (ist aber eh nur der Handtuchheizkörper) und das ich bei den Temperaturen nur die Wunschtemperaturen anpassen muss. Ich glaub das ist etwas mit dem ich erst mal arbeiten kann :wink:

Soll Temperaturen READ und WRITE sind bei der Lösung 1Wire/Wago ja gleich.

Was ich noch nicht verstanden habe ist das mit dem READ/WRITE bei den HM Thermostaten … die Solltemp. stammt aus der SETPOINT Variable … aber welche Variable(ID) wird dann für WRITE benutzt? :confused::confused:

Gruß
Jens

Die des Klima-Thermostats selbst.

siehe Screenshot.

Du liest aus der Variable 53751, aber schreibst per HM_WriteValueInteger ( integer $InstanzID, string $Parameter, integer $Wert) an 30084 mit dem Parameter „SETPOINT“ den neuen Wert. (HM_WriteValueInteger: IP-Symcon :: Automatisierungssoftware)

Ich habe das NICHT erfunden bzw. geschrieben :wink: Hat auch bei mir einen Moment gedauert, bis es klick gemacht hat …

Oder habe ich die Frage missverstanden?

Guten Morgen :wink:

Ja, das war genau das was mit gefehlt hat … die Instanz vom Thermostaten direkt ansprechen … ich sollte mich öfter mit dem HM Kram beschäftigen :rolleyes:

Danke !!

Hallo allerseits und einen schönen Gruß in die Runde

sehr interessantes Script… an dem ich mich gerade an der Installation versuche… mit der „EinsWireWagoKombinationsKomponenten“.

Die aktionsScripte-trigger.ips.php erzeugt nun leider den Fehler:
„Heizungs-Komponenten-Object konnte nicht erstellt werden. (EinsWireWagoKombinationsKomponenten)“

Die Scripte aktionsScripte-createHeizplan.ips.php und createHeizplanForOneWeek.ips.php funktionieren ohne Fehlermeldungen.

Die config.class.ips.php sieht so aus:


		// ##################################################
		// ###
		// ### 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']	= 24951 /*[HeizungsSteuerung-TEST\Scripte-unklar\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] = 25207 /*[HeizungsSteuerung-TEST\Heizplan\01-Montag]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesHeizplan'][1] = 25207 /*[HeizungsSteuerung-TEST\Heizplan\01-Montag]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][2] = 58349 /*[HeizungsSteuerung-TEST\Heizplan\02-Dienstag]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][3] = 46274 /*[HeizungsSteuerung-TEST\Heizplan\03-Mittwoch]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][4] = 57687 /*[HeizungsSteuerung-TEST\Heizplan\04-Donnerstag]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][5] = 50613 /*[HeizungsSteuerung-TEST\Heizplan\05-Freitag]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][6] = 54512 /*[HeizungsSteuerung-TEST\Heizplan\06-Samstag]*/; // cAOIDs ok+
		$this->heizungssteuerung['rootNodesHeizplan'][7] = 34941 /*[HeizungsSteuerung-TEST\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']['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'] 			= 40345 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Bad]*/; // cAOIDs ok+  //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
		$this->heizungssteuerung['readRaumSollTemeratur']['Büro']			= 28304 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Büro]*/; // 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']    			= 40345 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Bad]*/; // cAOIDs ok+ ;
//		$this->heizungssteuerung['writeRaumSollTemeratur']['Büro']				= 28304 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Büro]*/; // 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'] 				= 40345 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Bad]*/; // cAOIDs ok //[Heizung\Heizungssteuerung\heiz - Soll Temperaturen\Bad]
		$this->heizungssteuerung['writeRaumSollTemeratur']['Büro']				= 28304 /*[HeizungsSteuerung-TEST\heiz - Soll Temperaturen\Büro]*/; // 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'] 				= 17844 /*[HeizungsSteuerung-TEST\eigene Hilfsvariablen\Bad-IST-Temperatur]*/; // cAOIDs ok+
		$this->heizungssteuerung['readRaumIstTemeratur']['Büro']				= 26192 /*[HeizungsSteuerung-TEST\eigene Hilfsvariablen\Büro-IST-Temperatur]*/; // 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'] 				= 22325 /*[HeizungsSteuerung-TEST\heiz - Stati\Bad]*/; // cAOIDs ok+
		$this->heizungssteuerung['heizStatiRaeume']['Büro']				= 22498 /*[HeizungsSteuerung-TEST\heiz - Stati\Büro]*/; // 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] 				= 53163 /*[HeizungsSteuerung-TEST\eigene Hilfsvariablen\Fensterkontakt Bad]*/; // 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'] 				= 37974 /*[HeizungsSteuerung-TEST\Heizplan\00-Temperatur Profile (Wunsch-Temperaturen)\Bad - Anwesend]*/; // cAOIDs ok+
		$this->heizungssteuerung['temperaturProfile']['Bad']['Abwesend'] 				= 54930 /*[HeizungsSteuerung-TEST\Heizplan\00-Temperatur Profile (Wunsch-Temperaturen)\Bad - Abwesend]*/; // cAOIDs ok+
		$this->heizungssteuerung['temperaturProfile']['Büro'] = array();
		$this->heizungssteuerung['temperaturProfile']['Büro']['Anwesend'] 			= 25624 /*[HeizungsSteuerung-TEST\Heizplan\00-Temperatur Profile (Wunsch-Temperaturen)\Büro - Anwesend]*/; // cAOIDs ok+
		$this->heizungssteuerung['temperaturProfile']['Büro']['Abwesend'] 			= 39598 /*[HeizungsSteuerung-TEST\Heizplan\00-Temperatur Profile (Wunsch-Temperaturen)\Büro - Abwesend]*/; // 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: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 - 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'] 			= "SIMPLE-DELTA";
//		$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
		// ###
		// ##############################################################

Nach Stunden kann ich nun fast nicht mehr zwischen Variablen, Scripten, Profilen o.ä. unterscheiden. :o

Wen kann bitte mal als ‚Joker‘ einspringen und hoffentlich den entscheidenden Tipp geben.

Gruß und Vielen Dank

Hi,

und erst mal HERZLICH WILLKOMMEN :slight_smile:

TetraPack hat das leztens bei sich installiert und wir haben noch einige Fehler gefunden, deren BugFixes ich vor dem Herbst noch nicht veröffentlicht hatte.

Ich habe kein Wago/EinsWire und konnte es nur mit dem HomeMaticKomponentenHeizenJaNein Interface testen.

Ich hoffe, Du hast nicht all zu lange gesucht :frowning:

Versuch mal folgendes:

config.php ab Zeile 72 folgendes hinzufügen:

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

Und erstze die beiden angehängten Dateien

trigger.class.ips.php und
INTERFACES_Heizungskomponenten.ips.php

Wenn der Heizplan funktioniert, bist Du schon ziemlich weit …

Klappt es mit den Änderungen?

Ich werde im Herbst versuchen, dem Gesamt-Script noch eine etwas bessere Installationsroutine zu schreiben, die vielleicht einige Instanzen selbst anlegt, damit man nicht so lange benötigt um es zu installieren.

Aber Respekt, wenn Du Dir dieses Script als Anfangs-Projekt herausgesucht hast … Wenn Du das als Neuling zum laufen gebracht hast, steht Dir noch eine große IPS Zukunft bevor :wink:

Gruß,

ernie

Archiv.zip (7.38 KB)

Hallo,

Mit dem Code und den Dateien sieht das schon ganz anders aus.:slight_smile:
Die Fehlermeldung ist verschwunden und alles scheinbar OK.
Jetzt heisst es erstmal beobachten :eek:

Frage noch zum Fensterkontakt: Wenn ich den nicht brauche/habe, einfach die zwei Zeilen auskommentieren oder kann es da anderweitig Fehler produzieren?
$this->heizungssteuerung[‚rootNodesFenster‘][‚Bad‘] = array();
$this->heizungssteuerung[‚rootNodesFenster‘][‚Bad‘][0] = 53163;

Danke !

Gruß chartmann.

ob Du die erste Zeile die das Array öffnet auskommentierst, dürfte egal sein. Wenn keine Fenster da sind, macht es Sinn, das Fenster rauszunehmen …

Auskommentiert gibt es dann einfach keine Fenster, Fehler sollte das nicht verursachen.

Gruß,

ernie

Hallo ernie!

Hab mir heute Nachmittag mal deine Heizungssteuerung installiert, ging wunderbar, funktioniert auch soweit, großes Lob dafür :wink:

habe 2-3 Stunden für 10 Räume, neben Frau und Kind was unterhaltet werden will, gebraucht… g

Eine Frage hätte ich jetzt noch, da ich ja 10 Räume habe, sieht der Heizplan ziemlich unübersichtlich aus, wäre es möglich diesen noch zu gliedern?
also zb. so:


01 - Montag
  Wohnung 1
    Küche
    Bad
    Schlafzimmer
    Wohnzimmer
    Kinderzimmer 1
    Kinderzimmer 2
  Wohnung 2
    Wohnküche
    Bad
    Schlafzimmer
  Keller
    Büro
02 - Dienstag
usw.

ich hätte es mal probiert, aber dann meckert er wegen den Kategorien beim neu Erstellen.
bei den Temperaturprofilen ansich sollte es ja gehen, aber bei den einzelnen Tagen werden die Variablen ja immer wieder gelöscht und neu erzeugt oder?
Somit kann ich ja auch nicht mit Links fürs Webfront arbeiten.

Hoffe mal du verstehst mein Anliegen und vl. gibts ja auch eine einfache Lösung, wenn nicht, muss ich halt damit leben g

einen schönen Abend noch

Christian.

Hallo Christian,

schön, dass das Script sich so schnell einrichten lies.

Wenn es Dir nichts ausmacht, würde ich im Wiki erwähnen, wie lange Du für die Installation gebraucht hast. Als Anhaltspunkt für andere die es installieren wollen.

Aber nun zur Frage:
Ja, es ist richtig, dass es aktuell noch keine Kategorien für die Räume gibt. Die Räume werden nach dem Alphabet sortiert.

Als Workaround kannst Du z.B. „W1-Bad“ und „W2-Schlafzimmer“ vor die Raum-Namen schreiben. Damit kannst Du zumindest eine Sortierung der Räume nach Wohnung erreichen. Wenn ich das Script für den Herbst überarbeite, schreibe ich mir das als Wunsch auf.

Ich hoffe, der Präfix-String hilft Dir schon mal etwas weiter …

Gruß,

ernie

Hallo ernie!

Klar, kannst du machen :slight_smile:

ja, das mit dem Präfixes hab ich sowieso schon von Anfang an gemacht, also Whg1/… usw.
is jetzt auch nicht so ein Problem, funktionieren tuts ja super

einen schönen Tag noch :slight_smile:

Ich muss hier mal einhaken, ich will bei mir auch das Homematic System verwenden aber ich habe Fußbodenheizung also kann ich die Stellantriebe nicht verwendne sonden muss Schaltaktoren ansteuern, die entweder das Ventil ganz auf oder ganz zu setzen also An/aus.

Gehe ich recht in der Annahmen, , dass das Skript das ohne Anpassung nicht kann?

mws

Ich würde bei FBH nicht auf Homematic setzen. Die Stellantriebe mußt Du sowieso direkt anfahren und ein einfacher Temperatursensor i.V.m. IPS kann das mindestens genauso gut, nur deutlich preiswerter.

Unabhängig der Diskussion, welcher Hersteller bei FBH mehr oder weniger Sinn macht (wo ich überhaupt nichts kompetentes zu sagen kann …), könnte das Script das.

Wenn Du das Eins-Wire-Wago Interface einbindest, werden alle Stati in IPS emuliert und für die Heizung (z.B. Wago) gibt es eine Boolean Variable, die entweder auf Heizen-Ja oder auf Heizen-Nein (also abkühlen) steht … Diese kannst Du an die Heizung senden.

Im Wiki ist das noch mal genauer erklärt …

OK, danke, das muss ich mir dann noch mal genau ansehen.

@Boui
Was würdest Du denn empfehlen?
Ich hab ja extra HomeMatic gekauft weil die Heizungsregelung damit funktionieren sollte und die Thermostate alles schön anzeigen. Außerdem hab ich schon ein paar Dinge damit realisiert und finde das System recht brauchbar.
Ich bin aber noch für alles offen.

m.E. kannst du die HM-WT’s trotzdem verwenden: als Temperatursensor-, Solleingabe und Anzeige-Device. Die Auswertung und Anteuerung von Steuergliedern muß dann eben über IPS und nicht über den WT erfolgen. Das Stellglied kann doch dann durchaus ein FBH-Ventil sein, oder?

Also ich nutze Ernies Script auch und zwar mit Wago Relais zur Ansteuerung der Ventile und 1Wire Temp.Sensoren.
Dazu 1x HM Thermostat und Stellventil. Das Thermostat zum Einlesen der Ist-Werte und zur Anzeige der Werte (im Bad). Der Zustand Heizen/Abkühlen ist vom Zeitprofil und den Ist-Werten abhänging und somit legst du einfach ein Script an das auf die Variable reagiert und kannst damit dann schalten was du willst. Im Prinzip doch auch einen HM Stellantrieb, dann muss der Sollwert eben so hoch gewählt werden, das der Antrieb voll auf ist. Umgekehrt dann den Wert so niedrig, das auf jeden Fall der Antrieb auf 0% fährt.

Gruß
Jens

@Ernie: Kannst du schon sagen, wann es eine nächste Version des Skriptes gibt?

VG
Heiko

Tja dann würde ich es wie @RS beschreibt auch nutzen. Bei Neuanschaffung würde ich es mir sparen. Ich habe alle Zimmer auf Homematic (aber ohne FBH) und auf die deutlich > 10 Wandthermostate schaut kein Mensch außer mir vielleicht. Das macht alles das WFE-Terminal und ne gute Logik per Skript.
Für Frauen reicht im Prinzip ein Knopf ohne Temperaturangabe - nur „warm“ muss da drauf stehen und der WAF stimmt.

Was fehlt Dir im Moment?

Ich denke, dass ich in den nächsten 4 Wochen dazu komme, die Sachen einzuarbeiten, die ich mit Tetrapack im Laufe des Sommers getestet habe und die aktuell über die letzten 4 Seiten des Threads etwas verstreut sind …