Universelle Heizungssteuerung

hier mal der Screenshot…

Hallo,

Wo hast du den die IST-Temperatur und Luftfeuchte vom Wandthermostat ?

Schau dir mal meinen Screen dazu an, etwas weiter oben ist auch ein Script von mit mit passenden Screenshot, da kannst du die Variablen mal vergleichen, wenn du willst.

deine SETPOINT Variable hast Du in „Gewünschte Temperatur“ umbenannt …

Was aber noch nicht die fehlende IST-Temperatur und Luftfeuchte erklärt …

Sorry, dass die beiden Variablen nicht in meinem Screenshot dabei waren; die waren irgendwie gerade ausgeblendet … Aber bei Tuxtom007 sieht man das ja auch super

Guten Abend! :slight_smile:

readRaumSollTemeratur ist die SETPOINT-Variable … bei dir 44655
writeRaumSollTemperatur ist die Instance-ID des HM-Devices mit der Adr. :2 … bei dir 30675
readRaumIstTemeratur ist die TEMPERATURE-Variable … bei dir vermutlich 19724

wieso hast du das HomeMatic Device Raumklima in ein Dummy Module geladen und dann die Variablen darin verlinkt?

Lg,
Christian.

Im Script:

    
        // ### 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

In der WIKI:

SIMPLE-DELTA
letzte Änderung in Revision 2
$this->heizungssteuerung['raumSteuerungsTechnik']['Bad'] 			= "SIMPLE-DELTA";
Bei dieser Raumsteuerungstechnik wird der Wunsch-Temperatur die SIMPLE-DELTA Temperatur hinzu bzw.
bei negativen Zahlen abgerechnet.

Nur zur Info

Hallo,

ich möchte bei unseren Fenstern Tür-/Fenster-Kontakte nachrüsten um zu erkennen, ob Fenster eben offen oder geschlossen sind und diesen Status auch direkt für die Heizungssteuerung übernehmen.

Jetzt sehe ich, das die Drehgriff-Kontakte ja vorgesehen sind, aber wie binde ich die Magnet-Tür/Fenster-Kontakte am besten ein ? Diese liefern ja nur zwei Stati zurück ( False = geschlossen, True = offen ).

Auszug config.class.ips.php

		// ###
		// ### 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] 				= 49883 /*[Configuration\Hardware\HomeMatic\Bad\Bad - Tür-/Fenster-Kontak_03\Status]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'] = array();
	   $this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'][0] 	= 24094 /*[Configuration\Hardware\HomeMatic\Arbeitszimmer\Arbeitszimmer - Tür-/Fenster-Kontak_01\ERROR]*/; // cAOIDs ok
	   $this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'][0] 	= 14444 /*[Configuration\Hardware\HomeMatic\Arbeitszimmer\Arbeitszimmer - Tür-/Fenster-Kontak_02\Status]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Gäste-WC'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Gäste-WC'][0] 	= 58608 /*[Objekt #58608 existiert nicht]*/; // cAOIDs ok
		$this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'] = array();
	   $this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'][0] 	= 45803 /*[Configuration\Hardware\HomeMatic\Schlafzimmer\Schlafzimmer - Tür-/Fenster-Kontak_04\Status]*/; // cAOIDs ok
	   $this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'][0] 	= 33768 /*[Configuration\Hardware\HomeMatic\Schlafzimmer\Schlafzimmer - Tür-/Fenster-Kontak_05\Status]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Küche'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Küche'][0] 			= 58608 /*[Objekt #58608 existiert nicht]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][0] 		= 58608 /*[Objekt #58608 existiert nicht]*/; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][0] 		= 58608 /*[Objekt #58608 existiert nicht]*/; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][0] 		= 58608 /*[Objekt #58608 existiert nicht]*/; // cAOIDs ok

aber wie mache ich das in INTERFACES_Heizungskomponenten.ips.php:

geht das so ?


//	public function getWindowStatus ($objectID) {return GetValueInteger($objectID);}
	public function getWindowStatus ($objectID) {return GetValue($objectID);}

	// Fenster Stati-Funktionen für HomeMatic
	public function getOpendWindowValue() {return TRUE;} // $FENSTER_OFFEN = 2;
//	public function getTitedWindowValue() {return 1;} // $FENSTER_GEKIPPT = 1;
	public function getClosedWindowValue() {return FALSE;}// $FENSTER_GESCHLOSSEN = 0;

Muss ich weitere Anpassungen vornehmen ?

Drehgriffkontakte fallen aus diversen Gründen leider aus, sieht zum einen nicht aus auf dunklen Holzfenstern und bei den Dachflächenfenstern passen die nicht dran und funktionieren auch nicht richtig. Somit muss ich die Magnetkontakte nutzen.

Danke im Voraus

Hey,
Schau mal ein paar Seiten vorher, da gab es Beispiele für die Änderungen am Code.
Allerdings gab es da noch ein Problem und es hat bei mir nicht so ganz funktioniert.

@ernie
Hast du hierfür mittlerweile eine Lösung?

Gruß Daniel

Gesendet von meinem HTC Desire HD A9191 mit Tapatalk 2

Nein, eigentlich sollte es mit TRUE und FALSE funktionieren, wenn es nur diese beiden Stati gibt …

Hast Du mal versucht, ob es klappt?

Hallo,

Heute morgen unfreiwillig, hatte gestern erst die Änderungen gemacht und die Kontakte an die Fesnter gepackt:

Die Räume mit Kontakten wurde nicht geheizt, die Räume ohne Kontakte und entsprechende ohne Konfiguration wurden entsprechend heute morgen aufgeheizt.

Ergo: geht nicht.

Jetzt gerade hab ich die Kontak-Konfig auskommentiert und das Script nochmal laufne lassen, siehe da, Arbeitszimmer geht auf 21,5°. Entweder stimmt die Zuordnung ( false = zu, true = offen ) nicht, was bei Homematic eh immer merkwürdig ist, oder das ganze funktioniert so noch nicht.
Werd eim laufe des Tages weiter basteln.

Hallo Daniel & Ernie,

Ja, hab ich gefunden, aber ich hab da ähnliche Probleme:

Mit dem ECHO drin, bekomme ich folgende Rückmeldung:

hallo 0hallo 2hallo 2

würde heisen nach Ernie Beschreibung: Fenster 1 zu, Fenster 2 & 3 auf - aber ich habe nur ein Fenster konfiguriert und der Rest auskommentiert, das eine Fenster ist auch definitiv zu, sagt Homematic und sagt IPS, guckst du hier:

		// ###
		// ### 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] 				= 49883 /*[Configuration\Hardware\HomeMatic\Bad\Bad - Tür-/Fenster-Kontak_03\Status]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'][0] 	= 40612 /*[Configuration\Hardware\HomeMatic\Arbeitszimmer\Arbeitszimmer - Tür-/Fenster-Kontak_01\Status]*/; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Arbeitszimmer'][1] 	= 14444 /*[Configuration\Hardware\HomeMatic\Arbeitszimmer\Arbeitszimmer - Tür-/Fenster-Kontak_02\Status]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['GästeWC'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['GästeWC'][0] 			= xxxxx; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'][0] 	= 45803 /*[Configuration\Hardware\HomeMatic\Schlafzimmer\Schlafzimmer - Tür-/Fenster-Kontak_04\Status]*/; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Schlafzimmer'][1] 	= 33768 /*[Configuration\Hardware\HomeMatic\Schlafzimmer\Schlafzimmer - Tür-/Fenster-Kontak_05\Status]*/; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Küche'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Küche'][0] 			= xxxxx; // cAOIDs ok
		// $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'] = array();
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][0] 		= xxxxx; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][1] 		= xxxxx; // cAOIDs ok
	   // $this->heizungssteuerung['rootNodesFenster']['Wohnzimmer'][2] 		= xxxxx; // cAOIDs ok

	public function getWindowStatus ($objectID) {return GetValue($objectID);}

	// Fenster Stati-Funktionen für HomeMatic
//	public function getOpendWindowValue() {return 2;} // $FENSTER_OFFEN = 2;
   public function getOpendWindowValue() {echo "hallo 2"; return TRUE;} // $FENSTER_OFFEN = 2;
//	public function getTitedWindowValue() {return 1;} // $FENSTER_GEKIPPT = 1;
//	public function getClosedWindowValue() {return 0;}// $FENSTER_GESCHLOSSEN = 0;
   public function getClosedWindowValue() {echo "hallo 0"; return FALSE;}// $FENSTER_GESCHLOSSEN = 0;

Woher zaubert das Script nun die beiden weiteren Fenster, da eines ja virtuell „offen“ ist geht das Script auch in den „Abwesenheits“ Modus und regelt die Heizung runter, siegt mal im Log-Fenster.

Ideen ? ich hab keine, leider

ah ich erinnere mich wieder an Daniels Problem… Ist irgendwie in den vielen Posts zu dieser Zeit untergegangen :frowning:

Ich erinnere mich noch, dass es bei mir auch so war (mehre Ausgaben bei nur einem konfigurierten Fenster). Ich glaube es hängt mit der Anzahl der Räume zusammen. Hast Du 3 Räume?

Ich hoffe, dass ich am Wochenende vielleicht noch mal dazu kommen, mir das für euch beide genauer anzuschauen. Morgen ist erst mal wieder den ganzen Tag Baustelle angesagt …

Bis dann,

ernie

Hallo Ernie,

Ich hab ings. 6 Räume, aber derzeit nur in 3 Räumen die Fensterkontakte montiert

Das klingt doch Gut :slight_smile:
Momentan haben 2 von 6 Räumen Kontakte, die Restlichen werden aber noch folgen. Das ist hoffentlich auch erledigt bis zum Jahreswechsel.

Gruß Daniel

Gesendet von meinem A511 mit Tapatalk 2

Hallo Ernie,

ich möchte mich mal kurz melden und antworten.

Vielen Dank für das Lob an alle und für dein Feedback. Ich nehme es bei Gelegenheit mit ins Wiki auf. Vielleicht kannst Du noch einen Satz über dein PHP Kentnisse sagen. So in die Richtung „rudimentär, gut, PHP-Web-Entwickler“ … Das ist sicherlich für andere von Interesse, die sich überlegen das Script auch einzubauen.

Meine PHP Kenntnisse waren zu diesem Zeitpunkt eher dürftig.
Ich habe mir inzwischen ein Buch besorgt (Einsteigen und durchstarten mit PHP 5 vom dpunkt.verlag) und auch darin gelesen.

Ich habe mich 3 Monate (sofern es meine Zeit zuließ) intensiv mit deinem Heizungsscript beschäftigt und kann vieles nachvollziehen.
Eine große Herausforderung war die Objektorientierte Programmierung (mit den Class und so). Damit komme ich jetzt ganz gut zurecht.

Hier im Thread sind einige Wüsche und Herausforderungen genannt worden.
Auf diese möchte ich kurz eingehen.

Einige habe ich bei mir angepasst.

  1. Das Lesen und Mitschreiben der aktuellen Werte (Ist-, Soll-Temp. Fensterstati und Ventilestatis usw. loggen) im IPS. Wer Interesse hat kann sich gerne melden.
  2. Ich habe das Interface auch um eine Funktion erweitert. Ich nenne Sie mal „max-soll-Delta“.

Kurz eine Beschreibung (nur Homematic)

Die Wunschtemperatur sei 24 °C Das Delta ist 1,5 °C. Daraus ergibt sich eine Wunsch Delta Temperatur von 22,5 °C. Solange diese nicht erreicht ist, wird das Ventil voll aufgefahren(SetPoint von HM = 30°C ). Ist die Wunsch Delta Temperatur erreicht, wird auf Standardregelung zurückgestellt (SetPoint = 24°C in diesem Fall). Wird die Wunschtemperatur überschritten wird das Ventil geschlossen (SetPoint = 6°C).
Ist seit heute fertig geworden und läuft zum Testen unter V2.7(beta).
Den Test lasse ich mal 4 Wochen laufen und dann schauen wir mal.

  1. Übergang von einem Heizplan zum anderen.
    Hier habe ich folgendes festgestellt.
    Läuft der Trigger alle 60 sec oder kleiner und beginnt genau bei 0:00:00 git es eine Zeit in der kein Heizplan hinterlegt ist.
    $this->heizungssteuerung[‚standardZuordnung‘][‚Büro‘][‚Werktags‘][„12:00 bis 16:00 Uhr - Tagsüber“] = True;
    $this->heizungssteuerung[‚standardZuordnung‘][‚Büro‘][‚Werktags‘][„16:00 bis 19:30 Uhr - Nachmittags“] = True;
    genau zwischen 16:00:01 und 16:00:59 gibt es keine Heizplan.

Die Ursache liegt in zeile 187 in trigger.class.ips.php
if ($now > $timeStart && $now < $timeStop)
ändert man dies Zeile in
if ($now >= $timeStart && $now < $timeStop)

Dann fahren die Ventile nicht zu und gleich wieder auf.

  1. Ich hatte mal überlegt ein Script zu schreiben, welches alle Katogorien, Variablen usw. anlegt.

Hab ich auch. Ist leider nicht so komfortabel wie ich es mir gedacht hatte. Für meine Zwecke hats gereicht.
Kommt ein Raum dazu, den Raum und die HM Module eintragen, script straten und alles ist da. Dann noch die IDs in die config eintragen und das wars.

so das solls für heute gewesen sein. Ich hoffe das es diese Jahr nicht nur bei diesem Beitrag bleibt.
Lesen im Forum gehört bei regelmäßig dazu.

Respekt, wenn Du Dir als Anfänger das gesamte Script reingezogen hast und es im groben verstanden hast … Wenn noch was unklar ist, frag einfach hier …

Hier bin ich in 4 Wochen auf deine Ergebnisse gespannt. Bei mir läuft HomeMaticHeizenJaNein. Mir hat es bisher gereicht, aber für noch ausgefeiltere Lösungen bin ich immer zu haben. Meine Zeit erlaubt leider momentan nicht mehr :frowning:

Super! Ich hatte einfach noch keine Zeit, den Fehler zu suchen :frowning: Ich schau es mir demnächst an und übernehme es dann. Aber viel mehr konnte es nicht sein …

Wenn ich nächstes Jahr (nach Umbau, Umzug und Einrichtung einer komplett neuen Elektroverkabelung inkl. IPS) dazu komme, schreibe ich das Script für die Library um. Dann sind all solche Funktionen durch die Library abgedeckt und man muss Sie nicht selbst schreiben …

Gruß,

ernie

Hallo Ernie,

ein ganz so blutiger Anfänger bin ich nicht. Ich bin Beruflich als Netzwerkadmin tätig. Da schreibt man so die eine oder andere Batch. Ich musste mich erst in die Syntax einlesen und PHP verstehen.
Ich würde dich gene bei deinem Vorhaben unterstützen. Ich habe inzwischen sehr viel Freude daran gefunden.
Mit der Library muss ich mich erst noch beschäftigen.

Hier mal ein Bild

Ab ca. 18.00 wurde die neue Funktion aktiviert.
Sieht schon ganz gut aus.

zwischen 10:00 Uhr und 15:00 Uhr sieht man auch ganz deutlich das unter „3. Übergang von einem Heizplan zum anderen“ beschrieben Problem, danach is es weg. Ich habe zu jeder aktuellen Stunde einen Heizplan.

Hallo,

Das merkwürdige Verhalten zw. den Heizplanübergängen kann ich bei mir auch nachvollziehen, währe schön, wenn das irgentwie wegzubekommen währe.

Hast du jetzt wirklich für jede Stunde einen Heizplan gemacht - ist das nicht zu unübersichtlich ?

Was mir im Moment noch Probleme macht, wie ich meine neuen Tür/Fensterkontakte damit reinbekomme, derzeit streikt das Script. Es meldet immer ein Fenster mehr als ich wirklich habe und das ist dann auch immer offen.

Übrigens hast du die Darstellung im Webfront sehr schön übersichtlich gemacht - das ist bei mir derzeit noch so einen Dauerbaustelle - hab noch noch nicht die für mich optimale Darstellung gefunden.
Werden auch mal testweise das ganze „Raumweise“ zusammenstellen wie bei dir, gefällt mir recht gut.

@Ernie: coole Idee, das Heizungsscript auf IPSLibary umzubauen - ich finde das ganze, vor allen mit der neuen GUI total klasse. Ein Lob an die Jungs, die daran mitgearbeitet haben.

Wenn Du (@Tuxtom007) zumindest zuvor noch eine Version ohne Library bringen würdest, wären einige hier sehr dankbar. :wink:
Nicht jeder nutzt aus verschiedensten Gründen diese „Erweiterung“.

So langsam interessiert mich die universelle Heizungssteuerung doch.

Schöne Umschreibung ^^ volles Verständnis

Das Raumweise zusammenstellen habe ich mir schon länger gewünscht, weiß aber immer noch nicht so recht wie das umzusetzen ist. Ich hatte mal testweise die Links genommen und manuell zusammengebaut, aber nach einer Woche wird der Heizplan ja neu erzeugt, oder? Zumindest waren danach die Links unbrauchbar. Somit muss das Raumweise zusammenstellen ja schon bei der Erzeugung des Heizplans berücksichtigt werden.

Könntest du mal genauer beschreiben wie du das gelöst hast?

Gruß
Jens