Fussbodenheizung Vorheizzeit automatisch lernen

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

4_motion
Beiträge: 45
Registriert: 24.01.2016, 12:13
Hat sich bedankt: 2 Mal

Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von 4_motion » 24.01.2016, 17:39

Liebe Gemeinde des Homematic-Forums.

Jetzt habe auch ich es geschafft, mich vom Homematic-Fieber anstecken zu lassen. Das heißt natürlich auch, dass ich absoluter Neuling auf diesem Gebiet bin. Sollte ich also trotz aller Bemühungen einmal eine Forumsregel nicht ganz einhalten oder vielleicht auch die eine oder andere Frage stellen, die den Wissensstand der Profis womöglich beleidigt, so bitte ich um Eure Nachsicht. Ich versichere schon hier einmal, dass nichts von mir böse gemeint ist.

Nun hoffe ich auf Eure Hilfe. Ich habe mir eine CCU-2 (HM-RCV-50), einen 4-fach Schaltaktor (HM-LC-Sw4-SM) und 4 Raumthermostate (HM-TC-IT-WM-W-EU) zugelegt. Derzeit habe ich nur einen Raumthermostat mit einem Kanal des Schaltaktors direkt über die CCU-2 verbunden. Ich nutze das im Thermostat integrierte Programm (z.B. von 6 bis 22 Uhr 22°C und 22 Uhr bis 6 Uhr 17°C, siehe angehängtes Screenshot). Das funktioniert erwartungsgemäß problemlos.

Da die Fußbodenheizung ja aber etwas träge ist, möchte ich gerne die Vorheizzeit berechnen lassen, so dass zur programmierten Zeit die Wunschtemperatur erreicht ist und die Heizung nicht erst dann das Heizen anfängt. Die Heizung soll also zur programmierten Zeit minus der Vorheizzeit eingeschaltet werden. Die Vorheizzeit soll jeden Tag neu gelernt werden, da diese ja z.B. von der Jahreszeit und den damit verbundenen Außentempertauren, der Dämmung des Raumes usw. abhängt.

Meine Vorstellung ist dabei folgende:
Das System merkt sich heute zum Zeitpunkt des Einschaltens des Kanals am Schaltaktor die Uhrzeit und die Isttemperatur des Raumes. Wenn die Solltemperatur erreicht ist müsste aus der benötigten Zeit (Einschaltdauer des Kanals vom Schaltaktor) und der aufgeheizten Temperaturdifferenz (Temperatur_Ausschaltzeitpunkt minus Temperatur_Einschaltzeitpunkt) eine Aufheizzeit pro °C bestimmt werden, die das System heute benötigt hat. Diese Information benutze ich morgen zum Starten der Heizung. Die neue Vorheizzeit errechnet sich also aus der gestern benötigten Aufheizzeit pro °C mal die aktuelle Temperaturdifferenz (Soll – Ist). Die Heizung sollte sich also dann zum programmierten Zeitpunkt minus der errechneten (gelernten) Vorheizzeit einschalten.
Ich bin noch ein absoluter Laie, sowohl mit der WebUI-Programmierung und noch mehr mit der Script-Programmierung. Ich stelle mir vor, dass bei jeder Temperaturänderung des Raumthermostaten ein Script durchlaufen wird, welches die neue Vorheizzeit errechnet.
Es wäre schön, wenn mir bei dieser selbstgestellten Aufgabenstellung jemand helfen könnte. Vielleicht gibt es ja Gleichgesinnte, die so etwas auch gut fänden. Vielen Dank schon mal für Eure Antworten.

4_motion
Dateianhänge
Grundprogramm Homematic.JPG

etv
Beiträge: 195
Registriert: 06.12.2010, 09:26

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von etv » 24.01.2016, 18:12

Hallo 4_motion,

so etwas ähnliches hab ich bei mir umgesetzt, da auch bei uns ein "laufen lassen" der FBH keinen Sinn macht, weil wir mit Kachelofen und 30m2 Fenster Richtung Süden genauso heizen und ich am Markt auch nix gefunden hab.

Das mit dem "selber Lernen" hab ich aber nicht umgesetzt, ich hab diese Heizzeiten (es sind insgesamt 4 Faktoren) einfach selbst ermittelt und dann abhängig von Differenz Temperatur und Außentemperatur im Script angepasst, d.h. die Heizkurven für jeden Raum so selber angepasst. Ist nach der ersten Heizperiode auf jeden Fall geschafft.

Ich bin leider unterwegs und kann das aktuelle Script jetzt nicht posten, aber such nach Beiträgen von mir - ich glaube eine ältere Version, bzw. auch eine Version für nur einen Raum mal hier gepostet zu haben.

Das Script schaut recht kompliziert aus, ist im Prinzip aber immer das Selbe, nur eben für jeden Raum extra.

Weiters hab ich auch verschiedene Heizmodes eingebaut, die verschiedene Solltemperaturen beachten, bzw. auf verschiedene Szenarien reagieren wie:
- es ist den Bewohnern zu kalt
dann wird über die Soll drüber geheizt
...niemald hier will eine frierende Frau zu Hause [emoji1]
- es kühlt ein Raum zu sehr aus (z.B. im Urlaub)
dann wird bis knapp über eine mindeste Wohlfühltemp. geheizt
- normales Heizen, damit es um X:XX Uhr warm ist und
- Boden anwärmen, weil eigentlich warm genug, aber...
...wer will eine Frau mit kalten Füßen zu Hause [emoji1]


Grüße
etv
__________________________________________________________________
zwei CCU2 und den ioBroker auf einem Raspi4 der die beiden synchronisiert,
eigentlich mittlerweile das HIRN des Smarthomes darstellt und vor allem mit
Javascript alles steuert, regelt, loggt - und - visualisiert...

4_motion
Beiträge: 45
Registriert: 24.01.2016, 12:13
Hat sich bedankt: 2 Mal

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von 4_motion » 24.01.2016, 20:05

Hallo etv,

vielen Dank für die schnelle Antwort. Erst einmal gute Fahrt.
Ich habe schon mal nach Deinem Script gesucht, leider bis jetzt ohne Erfolg. Aber ich bin ja noch Neuling und werde das irgendwann schon rausfinden.

Das "selber Lernen" möchte ich eigentlich unbedingt haben, da sich diese Vorheizzeit ja immer durch die Umgebungsbedingungen (Jahreszeit, Außentemperatur usw.) ändert. Deshalb dachte ich, dass ich zunächst auch keine Außentemperatur brauche, weil durch diese sich abhängig von der Raumdämmung ja auch wieder auf die Innentemperatur und damit auf die aufzuheizende Temperaturdifferenz niederschlägt. Im Moment gehe ich davon aus, dass sich die Umgebungsbedingungen nur langsam verändern (mal sehen was die Wetterkapriolen der nächsten Jahre noch bringen :wink: ), so dass ich mit der Vorheizzeit von gestern heute eigentlich gut klarkommen sollte. Damit entsteht ja das "Lernen" von selbst, wenn das System immer die gelernte Zeit von gestern nimmt. Später könnte ich mir dann vorstellen, dass man die Veränderung der Außentemperatur noch mit einfließen lässt. Also z.B. wenn die Außentemperatur gegeüber gestern gesunken ist, dann kommt ein kleiner Faktor auf die Vorheizzeit drauf, so dass noch ein wenig früher angefangen wird. wenn die Außentemperatur steigt, dann würde eben entsprechend ein klein wenig Vorheizzeit abgezogen werden und der Anheizvorgang startet etwas später. aber so weit bin ich ja noch lange nicht. Der erste Teil würde mir zunächst genügen.

Ich freue mich schon auf weitere Ideen und Kontakte.

Viele Grüße

4_motion

4_motion
Beiträge: 45
Registriert: 24.01.2016, 12:13
Hat sich bedankt: 2 Mal

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von 4_motion » 28.01.2016, 19:55

Hallo noch einmal an alle,

ich bin wirklich an einer Lösung interessiert. Ich habe mir inzwischen noch einige Gedanken gemacht und möchte jetzt vielleicht um eine konkretere Hilfe bei der Programmierung bitten. Ich habe folgendes vor:

Wenn der Schaltaktor für den Stellmotor eingeschaltet wird möchte ich die aktuelle Uhrzeit in die Variable "t-ein" und die aktuelle Temperatur des zugehörigen Wandthermostaten ind die Variable "T-EIN" schreiben. Wie muss ich das in ein Script programmieren, welches ich dann ausführen würde, wenn der Schaltaktor eingeschaltet wird.
Wenn der Schaltaktor für den Stellmotor dann ausgeschaltet wird, möchte ich die aktuelle Uhrzeit in die Variable "t-aus" und die aktuelle Temperatur des zugehörigen Wandthermostaten in die Variable "T-AUS" schreiben. Aus den dann vorliegenden Informationen möchte ich dann die benötigte Heizzeit pro °C errechnen, z.B. "t-Grad" = ("t-aus" - "t-ein") / ("T-AUS" - "T-EIN"). Wie muss ich das in ein Script programmieren, welches ich dann ausführen würde, wenn der Schaltaktor ausgeschaltet wird.
Aus der Variablen "t-Grad" möchte ich dann die Vorlaufzeit für den nächsten Heizvorgang ("t-Vorlauf") ermitteln. Dazu benötige ich die programmierte Solltemperatur des Wandthermostaten, auf die ausgeheizt werden soll ("T-SOLL") und die aktuelle Temperatur des Wandthermostaten ("T-IST"). "t-Vorlauf" soll dann ("T-SOLL" - "T-IST") x "t-Grad" sein. Wie müsste das Script dazu aussehen?
Und zum Schluss möchte ich nun die Heizung (den Schaltaktor) einschalten, wenn die programmierte Einschaltzeit des Wandthermostaten minus "t-Vorlauf" erreicht ist und die programmierte Soll-Temperatur des Wandthermostaten größer als die Ist-Temperatur des Wandthermostaten ist. Wie müsste diese Programmierung aussehen.

Es wäre schön, wenn mir hierbei ein oder mehrere Wissende helfen würden. Die Informationen über meine vorhandenen Komponenten stehen ja im ersten Beitrag von mir hier in diesem Thread.

Vielen Dank.

4_motion

paul53
Beiträge: 2535
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 8 Mal

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von paul53 » 29.01.2016, 00:44

4_motion hat geschrieben:Wenn der Schaltaktor für den Stellmotor eingeschaltet wird möchte ich die aktuelle Uhrzeit in die Variable "t-ein" und die aktuelle Temperatur des zugehörigen Wandthermostaten ind die Variable "T-EIN" schreiben.

Code: Alles auswählen

string t = system.Date("%F %T");
dom.GetObject("t-ein").State(t);
real T = dom.GetObject("Name von Kanal 1 des WT").DPByHssDP("TEMPERATURE").Value();
dom.GetObject("T-EIN").State(T);
4_motion hat geschrieben:Wenn der Schaltaktor für den Stellmotor dann ausgeschaltet wird, möchte ich die aktuelle Uhrzeit in die Variable "t-aus" und die aktuelle Temperatur des zugehörigen Wandthermostaten in die Variable "T-AUS" schreiben. Aus den dann vorliegenden Informationen möchte ich dann die benötigte Heizzeit pro °C errechnen, z.B. "t-Grad" = ("t-aus" - "t-ein") / ("T-AUS" - "T-EIN"). Wie muss ich das in ein Script programmieren, welches ich dann ausführen würde, wenn der Schaltaktor ausgeschaltet wird.

Code: Alles auswählen

string t = system.Date("%F %T");
dom.GetObject("t-aus").State(t);
real T = dom.GetObject("Name von Kanal 1 des WT").DPByHssDP("TEMPERATURE").Value();
dom.GetObject("T-AUS").State(T);
integer dt = t.ToTime().ToInteger() - dom.GetObject("t-ein").Value().ToTime().ToInteger();
real dT = T - dom.GetObject("T-EIN").Value();

! Gradient in s / K
real grad = (1.0 * dt) / dT;
dom.GetObject("t-Grad").State(grad);
4_motion hat geschrieben:Aus der Variablen "t-Grad" möchte ich dann die Vorlaufzeit für den nächsten Heizvorgang ("t-Vorlauf") ermitteln. Dazu benötige ich die programmierte Solltemperatur des Wandthermostaten, auf die ausgeheizt werden soll ("T-SOLL") und die aktuelle Temperatur des Wandthermostaten ("T-IST"). "t-Vorlauf" soll dann ("T-SOLL" - "T-IST") x "t-Grad" sein.

Code: Alles auswählen

real x = dom.GetObject("Name von Kanal 1 des WT").DPByHssDP("TEMPERATURE").Value();
! Ziel-Sollwert aus SV vom Typ Zahl (aktueller Sollwert im WT ist niedriger)
real w = dom.GetObject("T-SOLL").Value();
real grad = dom.GetObject("t-Grad").Value();
! Vorlaufdauer in s
dom.GetObject("t-Vorlauf").State((w - x) * grad);
Hast Du bedacht, dass die Temperatur nicht linear von der Zeit abhängt ?
Der Temperaturanstieg von 18 auf 19 °C erfolgt wesentlich schneller als der von 21 auf 22 °C.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

etv
Beiträge: 195
Registriert: 06.12.2010, 09:26

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von etv » 29.01.2016, 08:32

paul53 hat geschrieben:]Hast Du bedacht, dass die Temperatur nicht linear von der Zeit abhängt ?
Der Temperaturanstieg von 18 auf 19 °C erfolgt wesentlich schneller als der von 21 auf 22 °C.
...so ist es und es ist auch jedes mal eine andere Zeit um nur ein Zehntelgrad wärmer zu werden, daher brauchst du auf jeden Fall pro Raum insgesamt 5 Variablen, wovon du 4 quasi "erlernbar" machen musst.
1. die Zeit bis zum ersten Zehntelgrad Anstieg, denn DANN fängt es erst zu Heizen an
2. wie lange der Raum bei gegebener Außentemperatur für ein ganzes Grad braucht
3. wie lange es nach dem Abschalten der Heizung dauert bis die wirkliche maximale Temperatur erreicht wird
4. um wieviel Grad der Raum nach dem Abdrehen "überheizt" wird
5. die ist fix, welche Temperatur du haben willst....

Weiters gilt es eben auch zu checken, wie lange die Heizung läuft, denn je länger, desto mehr wird überheizt, desto schneller steigt die Temperatur und somit muss früher mit dem Heizen aufgehört werden....

Ich bin nun endlich wieder daheim und hänge dir da mein abgespecktes (nur ein Raum) Script an von dem du dir ein paar Dinge anschauen kannst.

Grüße
etv
Dateianhänge
Heizungssteuerung - V6.2.txt
die aktuelle Version mit zusätzlichen Features wie auch am Nachmittag zeitgeführtes Heizen und Umstellung auf Variablen für die Zieltemp pro Raum
(38.61 KiB) 91-mal heruntergeladen
Heizungssteuerung - V4.5a - abgespeckte Version.txt
ältere Version mit nur einem Raum (ist übersichtlicher)
(9.88 KiB) 72-mal heruntergeladen
__________________________________________________________________
zwei CCU2 und den ioBroker auf einem Raspi4 der die beiden synchronisiert,
eigentlich mittlerweile das HIRN des Smarthomes darstellt und vor allem mit
Javascript alles steuert, regelt, loggt - und - visualisiert...

iRudi
Beiträge: 85
Registriert: 28.09.2011, 10:19
Wohnort: Berlin

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von iRudi » 29.01.2016, 08:47

Ich finde das Thema recht spannend - allerdings klingt das doch recht kompliziert und fehleranfällig ...

Ich nutze für meine Fußbodenheizung das Thermostat Device aus dem CUxD. Das arbeitet als PID Regler und ich bin damit recht zufrieden. Vielleicht solltest Du Dir das mal ansehen.

Gruß,
Rudi

Benutzeravatar
jmaus
Beiträge: 7057
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 154 Mal
Danksagung erhalten: 667 Mal
Kontaktdaten:

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von jmaus » 29.01.2016, 09:53

etv hat geschrieben: Ich bin nun endlich wieder daheim und hänge dir da mein abgespecktes (nur ein Raum) Script an von dem du dir ein paar Dinge anschauen kannst.
Interessante Skripts, danke dafür. Aber folgende Dinge solltest du hier noch beachten:
  • Du solltest jetzt deinen Prowl API-Key ändern den du hier im Skript jetzt mitgeschickt hast und dich ansonsten jetzt Leute mit Nachrichten aufs Handy bombardieren könnten ;)
  • Du stellst in deinem Skript die Ventile ja komplett selbst ein. In einer gemischten Heizungsventil + Raumthermostat-Lösung ist dies aber IMHO suboptimal da hier ja der Wandthermostat die Heizungsventile entsprechend stellen sollte.
  • Du verwendest hier recht viele lokale Variablen in dem Skript. Gerade in einer CCU-Umgebung mit vielen Programmen die mit Skripten ausgestattet sind gibt es aber leider momentan den CCU-Bug das es eine maximale Anzahl von ca. 200 Variablennamen erlaubt sind über die gesamte CCU (nicht nur innerhalb eines einzelnen Skriptes). Siehe
RaspberryMatic 3.55.10.20210213 @ ESXi, ~190 Hm-RF/HmIP-RF/HmIPW Geräte, ioBroker – RaspberryMatic GitHub Projekt / Twitter

etv
Beiträge: 195
Registriert: 06.12.2010, 09:26

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von etv » 29.01.2016, 11:39

Hallo jmaus,

danke für die Info zur PushApp...die hab ich vergessen raus zu nehmen - ist aber eh nicht mehr in Betrieb, da die gesamte Verständigung nun über iobroker und Pushbullet läuft.

Die Thermostate dienen mit nur für die Messung, sonst nichts. Ich hab die gesamte Heizlogik und Heizkurven in meinem Script.
Warum: ich kann so der Heizung sagen ab wann ich welche Temperatur haben will und das Script errechnet dann, ab wann und wie lange geheizt werden soll.
Mit meinem Script treffe ich nun in der zweiten Heizperiode die Wunschtemperatur etwa zwischen -0,1 und +0,4 Grad - also schon recht genau, egal wie lange nicht geheizt wurde (Urlaub), ob die Sonne durch unsere 30m2 Glas heizt, oder der Kachelofen am Abend an war - und natürlich egal wie kalt es draußen ist. Da wurde in den letzten Wochen neu korrigiert, denn -10 und weniger hatten wir hier schon sehr lange nicht mehr = keine Erfahrungswerte damit.

Das Script sieht sehr kompliziert aus, weil jede Möglichkeit des Heizens extra abgebildet wurde und jede Möglichkeit dann wieder für jeden Raum existiert. Im Prinzip ist es aber immer das Selbe.

Aja, danke auch für die Info zu Variablen - das wusste ich nicht, hab mich in den letzten Tagen nur gewundert, dass hier zum Thema Scriptoptimierung ein paar Posts waren....
...sollte ich sicherheitshalber mal durchzählen, aber auf meiner CCU läuft per Script eigentlich nur Heizung, Warmwasser und Anwesenheitsermittlung....der Rest ist heuer zu Weihnachten auf einen Raspi mit iobroker übersiedelt worden.

Grüße
etv
__________________________________________________________________
zwei CCU2 und den ioBroker auf einem Raspi4 der die beiden synchronisiert,
eigentlich mittlerweile das HIRN des Smarthomes darstellt und vor allem mit
Javascript alles steuert, regelt, loggt - und - visualisiert...

paul53
Beiträge: 2535
Registriert: 26.04.2012, 20:42
Wohnort: Berlin
Danksagung erhalten: 8 Mal

Re: Fussbodenheizung Vorheizzeit automatisch lernen

Beitrag von paul53 » 29.01.2016, 11:49

etv hat geschrieben:...so ist es und es ist auch jedes mal eine andere Zeit um nur ein Zehntelgrad wärmer zu werden, daher brauchst du auf jeden Fall pro Raum insgesamt 5 Variablen, wovon du 4 quasi "erlernbar" machen musst.
So kritisch ist es nun auch wieder nicht, denn die Nichtlinearität wirkt sich bei einem schnellen Wetterumschwung aus oder, wenn die Absenkdauer zu unterschiedlich ist. An langsame Veränderungen passt sich der Gradient an.
iRudi hat geschrieben:Ich nutze für meine Fußbodenheizung das Thermostat Device aus dem CUxD. Das arbeitet als PID Regler und ich bin damit recht zufrieden.
Das hat nichts mit der Vorheizzeit zu tun :!: Ein PI-Regler mit PWM-Ausgang ist angezeigt, wenn die Raumtemperatur mit einem 2-Punkt-Regler zu stark überschwingt, weil die Vorlauftemperatur zu hoch ist.
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)

Antworten

Zurück zu „HomeMatic allgemein“