Universelle Heizungssteuerung

schön wäre es wenn ich im anderen thread genügend hilfeansätze bekommen hätte, dann würde ich ja hier bestimmt nicht nachfragen.

ich weiß nicht was ich in das script schreiben soll, damit es funktioniert, habe noch kein script geschrieben!!!

Hi Snow,

das ist sicher nicht ganz einfach sich in die Materie einzuarbeiten, ging uns wohl allen so. Anbei ein ganz simples Script, welches über IPS Deine Aktoren schalten könnte. Für eine perefekte Heizungssteuerung reicht das bei weitem nicht aus, macht aber genau das was Du beschrieben hast. Aber das lässt sich ja mit fortschreitendem Wissen aufbohren. Da ich nicht weiss welche Aktoren Du verwendest mußt Du die Schaltbefehle selbst einfügen (oder hier nachfragen). Anpassen mußt Du noch die Variable aus der die Isttemperatur ausgelesen werden kann (vom Wandthermostat). Das Script würde ich durch ein Event starten, das Event sollte „bei Aktualisierung“ der Variable der Isttemperatur des Wandthermostaten das Script aufrufen.

Wichtig: Doku lesen (ein paar Stichworte hab ich ja genannt) und fragen!
Das wird schon;)


<?
// ++++++++++++ Konfig +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$isttemp = getValueFloat(44927 /*[Haussteuerung\Wohnzimmer\HZ Ist-Daten\Temperatur]*/);
$solltemp = 21.5;
$einschalttemp = 20.0;
// ++++++++++++ Konfig Ende ++++++++++++++++++++++++++++++++++++++++++++++++++++

if ($isttemp >= $solltemp)
{
	// hier Aktor-Schaltbefehl für "AUS"
}
elseif ($isttemp < $einschalttemp)
{
   // hier Aktor-Schaltbefehl für "EIN"
}

?>

Hi Snow77 und herzlich willkommen :cool:

Wenn Du Dich noch nicht gut mit IPS und PHP auskennst, macht es wie Du schon selbst festgestellt hast nicht so richtig viel Sinn mit meinem Script anzufangen …

Aber wir helfen Dir auch gerne bei den einfachen Anfängen erst mal die Heizung zum rennen zu bekommen :slight_smile:

Gruß,

ernie

Aber eine Info, wie man das mit dem PWM realisiert fände ich trotzdem hilfreich. Das Ein- und Ausschalten ist kein Problem aber wie realisiert man die verschiedenen Schaltzeiten?

Ich könnte mir das so vorstellen:

[ul]
[li]Schalt Skript aufrufen, prüfen welcher Fall (also wie nah an der Solltemeratur ist die Isttemperatur) vor liegt, wenn der Aktor aus ist, einschalten und Timer setzen für das Ausschalten, wenn er an ist, ausschalten und den Timer setzen für das Einschalten
[/li][li]usw.
[/li][/ul]

passt das so oder gibt es eine bessere Lösung?

mws

Vom Prinzip würde ich das auch so sehen.

Kontrolle SOLL/IST, prüfen ob Relais aus ist und dann je nach Fall mit Timer das Relais setzen. Falls das Relais bereits an ist, dürfte doch aber keine Aktion erfolgen, erst wenn die Zeit abgelaufen ist kommt der Ausschaltbefehl … !?

@Snow: Rakete hat dir da ein schönes Beispiel zum Üben geliefert, wobei die Grundinfo bereits in dem anderen Thread zu finden war.
Generell solltest du dich mal durch die Doku arbeiten und ein wenig mit PHP vertraut machen, denn das ist die Grundlage für ein Arbeiten mit IPS. :wink:
Evtl. erstellst du einen neuen Thread zu deinem Problem, damit der hier für das eigentliche Thema übersichtlich bleibt oder machst in dem anderen weiter, denn da ging es ja um das gleiche Thema.

Gruß
Jens

Ach ja, man kann dem Relais ja eine Einschaltdauer mit geben, daran hatte ich gar nicht gedacht.

Also alle 10 Minuten prüfen und dann je nach Fall das Relais für x Minuten einschalten. Das kann auch für 10 Minuten sein, dann werden es halt 100%.

Reicht es da alle 10 Minuten zu prüfen?

Ich wollte dann noch prüfen, wenn die Solltemp sich ändert, damit ich auf die Absenkung reagieren kann.

Wie schaut es bei Fußbodenheizung mit der Abschaltung bei geöffneten Fenstern aus? Macht das Sinn?

mws

Bei geöffneten Fenstern abschalten bzw. runter regeln macht eher keinen Sinn, weil die FBH einfachzu träge ist, aber wenn es dein Gewissen beruhigt, dann bau es mit ein :wink:
Bei einer Solltemperaturänderung könnte man den Timer löschen und einen neuen per Script anlegen/starten oder aber die 10min warten. Schneller aufheizen wird sich der Raum ja auch nicht, da du nur die Zeit veränderst.
Bei einer Solltemp.änderung nach unten, könnte man evtl. eine Timerlöschung einbauen.

Bezgl. der Auflösung (Einschaltzeit = max 10min) muss das wohl jeder für sich selbst herausfinden. Hängt ja auch immer von der Heizleistung ab, von der Bodenbeschaffenheit, Raumgröße usw. … aber ist eigentlich auch egal, denn wenn nach 10min die Temperatur nicht erreicht ist, dann wird eben erneut eingeschaltet !? 10min lassen sich nun mal gut in 10% Schritte einteilen :smiley:

Hört sich sinnvoll an zumal die Ventiele ja auch etwa 3 Minuten brauchen bis sie ganz ausgesteuert haben.

mws

Vielen Dank Raketenschnecke und ernie,

ich habe diese Aktoren HomeMatic Funk-Schaltaktor 4-fach, Aufputzmontage EQ-767-96 Schaltleistung max. 4x 16 A im Conrad Online Shop

in dem Script habe ich bei getValueFloat die ID angegeben, wo mir in IPS die Temperaur des raumthermostat angegeben wurde.

was muss ich bei der variablen noch anpassen?

Danke für euere Hilfe :o

Gruß Snow77

perfekt, mher musst du nicht tun.

eigentlich nix, nur noch im Script das hier "// hier Aktor-Schaltbefehl für „AUS“ gegen den Schaltbefehl austauschen. dann sollte es laufen

<?
// ++++++++++++ Konfig +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$isttemp = getValueFloat(51872 /[Haussteuerung\Wohnzimmer\HZ Ist-Daten\Temperatur]/);
$solltemp = 23.0;
$einschalttemp = 21.5;
// ++++++++++++ Konfig Ende ++++++++++++++++++++++++++++++++++++++++++++++++++++

if ($isttemp >= $solltemp)
{
HM_WriteValueFloat(21478 /[HKV EG 4]/, „False“, 22,8); // hier Aktor-Schaltbefehl für „AUS“
}
elseif ($isttemp < $einschalttemp)
{
HM_WriteValueFloat(21478 /[HKV EG 4]/, „True“, 21,5); // hier Aktor-Schaltbefehl für „EIN“
}

?>

sorry, aber wie lautet der Schaltbefehl für ein?

HM_WriteValueFloat ?

nee, du steuerst ja einen Schalter an, dem einen Float-Wert zu übergeben wird beim Aktor eher zu Brechreizen führen.

eher sowas:


HM_WriteValueBoolean(34507 /*[Haussteuerung\Wohnzimmer\WZ SS06  SILEX 3000GB]*/, "STATUS", false);

Achja: der Befehl steuert imnmer eine HM-Instanz, nicht dessen Variable!

Hallo,

dieses tolle Heizungsskript scheint genau das zu sein, was ich schon so lange suche. Ich habe nur - und das ist ja immer so - eine leicht abweichende Konfiguration.

Mein Haus wird ausschließlich durch Wandheizung beheizt. Das ist wie eine Fußbodenheizung, nur etwas weniger träge. Die einzelnen Wände werden mit an/aus Stellantrieben mit einer Laufzeit von einigen Minuten angesteuert.
Zum Schalten habe ich einen Allnet 4000 Ethernetsensormeter, der 8 Relaisausgänge besitzt, die durch Aufrufen einer URL geschaltet werden können. Das klingt schwer nach Wago-Interface. Zum Messen der Temperatur verwende ich FHT80 Thermostate und ALL4000 Temperatursensoren, je nachdem, ob Kabel verfügbar waren, oder nicht.

Ob ich das mit diesem Skript ohne weitreichende PHP Kenntnisse zum Laufen bringen werde ? Eigentlich müsste es dem Skript doch ganz egal sein, wo die Istwerte herkommen, wenn sie eine objectID haben, oder? Bleibt nur noch das Problem, einen Schaltaktor durch Aufruf einer URL zu steuern, oder gibt es da einen standard-Befehl, den ich einfügen kann? Bin für jeden Tipp sehr dankbar!

Lieben Gruß
Patrick

Kannst du machen wie du möchtest.
Das „Wago-Interface“ setzt im Grunde nur Variablen auf True/False und da kannst du dann ein Event dran hängen mit dem du ein Skript deiner Wahl ausführst (in deinem Fall der Aufruf der URL!?).

Das mit den IST Werten hast du ja schon richtig erkannt, da ist es nur wichtig das eine Variable(ID) vorhanden ist.

Gruß
Jens

Schön, da es Dir gefällt :slight_smile: Das mit der Konfigutation ist meistens so. Deshalb habe ich versucht, das Script ziemlich modular zu halten, dass es leicht anzupassen ist, wenn es etwas noch nicht unterstützt.

was ich hier alles noch lerne … Wand-Heitzung … noch nie gehört :slight_smile:

Eigentlich kannst Du mein Script als Front-End für die Steuerung benutzen. Ich werde das „EinsWireWago-Interface“ im nächsten Relase in „HeizenJaNeinEmuliereBoolean“ oder so ähnlich umbennenen. Heraus kommst aus diesem Interface für jeden Raum eine Variable, ob der Raum momentan aufgrund der IST- und WUNSCH-Temperatur geheizt werden soll oder nicht. Da kannst Du dann wie TetraPack schon sagt einfach ein Script dranhängen, was z.B. alle 10min schaut ob geheizt werden soll und die Wand-Heizung dann antriggert.

Versuch es mal zu einzurichten und sagt Bescheid, wenn es Probleme gibt. ich kann heute Abend noch mal ein Zwischen-Revision online stellen, dann musst Du nicht die Dinge der letzten 5 Thread-Seiten beachten.

Das geht viel einfacher, in dem man ein Event nimmt, welches auf die Variablenänderung reagiert … vorausgesetzt es gibt Befehle zum Ein UND Ausschalten der Ventile :wink:

Ja, aber wenn ein Aufruf der URL die Heizung für 10min anschaltet und Sie dann von alleine wieder ausgeht, da die URL nicht nochmal aufgerufen wird, das Zimmer aber dann noch zu kalt ist, wir es nie wieder wärmer, da die Variable immer auf Heizen stehen bleibt.

Die Veriablen-Änderung funktioniert nur, wenn nach dem Wechsel auf „HEIZEN“ das Zimmer auch tatsächlich wärmer als die Wunsch-Temperatur wird, damit das Script wieder auf „ABKUEHLEN“ umspringt …

Oder habe ich die Wand-Heizung-Steuerung falsch verstanden?

Und dann hast Du ein schönes Überschwingen im System (zumindes bei Fußbodenheizungen so) welche ja die PWM erforderlich macht um das sauber auszusteuern.

mws

PWM würde man dann mit dem Script umsetzen, welches von der HEIZEN JA/NEIN Variable angetriggert wird? In Ernies Script ist ja generell schon eine Logik integriert … oder besteht die Möglichkeit das mit einzubauen? Würde das hier nicht auch bei FBH funktionieren:

Implementierung einer dritten „Überschwapp-DELTA Raumsteuerungstechik“. Hier wird der Raum erst auf die Wunsch-Temperatur minus den jeweiligen Delta Wert hochgeheizt. Dann wird die tatsächliche Wunsch-Temperatur gesetzt. Damit soll verhindert werden, dass die Raumtemperatur „überschwappt“ bevor sich die Stellantriebe (vor allen Dingen bei HomeMatic) bei der Wunsch-Temperatur schließen

Die Überschwapp-DELTA Raumsteuerungstechik ist momentan noch nicht implementiert. Ich sehe leider bei meiner aktuell für IPS übrigen Zeit auch schwierigkeiten, dass zeitnah umzusetzen.

Ich bin mir auch nicht sicher, ob die Steuerungstechnik bei einer Wandheizung wirklich das Problem löst. Auf Dauer kann man das bestimmt vernünftig in die Logik einbauen, als erster sollte flatrat aber mal seine Heizung aufgrund der zur Verfügung gestellten Variablen des Scripts testen.

Außerdem sind die Raumsteuerungs-Technik und das Interface um die Heizung anzusprechen ja noch mal 2 ganz unterschiedliche Dinge. Die Steuerungstechnik könnte das eventuelle Überschapp-Problem lösen, die momentan aber nicht unterstützt Ansteuerung einer URL um die Heizung 10min anzumachen und danach wieder die Temperatur zu vergleichen ob man die Heizung noch ml 10min anmachen musst, wäre ein neues HEIZUNGS-INTERFACE a’la „HEIZEN_JA_NEIN_TRIGGERE_ZYKLISCH_URL“.

Doofe Frage: WAS IST PWM ???