Thermostat Wärmeanforderung an Junkers-Therme weitergegeben

Begonnen von maddhin, 15 Oktober 2022, 23:40:36

Vorheriges Thema - Nächstes Thema

maddhin

Hallo,
ich habe mal eine Detailfrage.

Mein Setting: Junkers Therme mit CR/CW400 Regelung, auf die ich via ESM-ESP zugreifen kann. Dazu Homematic Thermostate in den Räumen.

Problem: Meine Regelung hängt im Flur, d.h. wenn die Regelung z.B. auf 20 Grad eingestellt ist und im Flur 20 Grad sind bleibt die Therme aus, selbst wenn ich z.B. im Wohnzimmer das Heizungsthermostat auf 23 Grad gestellt ist. D.h. das Wohnzimmer bleibt "kalt".

Was ich möchte: ist, dass wenn ein Thermostat auf eine höhere Temperatur als in der Regelung eingestellt wird, dass dann die temp-desired in der Regelung entsprechend erhöht wird UND bei erreichen der temp-desired im entsprechenden Raum dann wieder zurückgestellt wird. Also soll die Regelung quasi virtuell in den Raum mit der größten Wärmeanforderung verlegt werden.

Hat damit jemand Erfahrung? Ggf. konkrete Ideen zur Umsetzung? Das Hochsetzen der temp-desired erscheint mir verhältnismäßig einfach (doif), aber das Runtersetzen und Steuern der Temperatur erscheint mir nicht trivial (Takten der Heizung, etc).

Würde mich über Ideen und Kommentare sehr freuen.

maddhin

ich antworte mal selbst mit einer weiteren Frage - vielleicht traut sich ja jemand zu kommentieren oder zu sagen, wie ihr das so macht...

Wisst Ihr, ob es eine Art virtuelle Regelung für ESM-ESP gibt und es überhaupt Sinn macht die physische Bosch/Junkers-Regelung anzusprechen anstatt über ein virtuelle Regelung zu gehen oder gar direkt die Befehle an die Junkers-Therme zu senden?

Schönen Sonntag!

Hmayr

Hallo maddhin,

Bin zwar kein (bzw. nicht mehr) Fhem Nutzer, befasse mich aber auch gerade mit dem Steuern meiner Buderus GB112 Gastherme über EMS-ESP und Home Assistant. Ich nutze das EMS-Gateway von bbqkees elektronics.
Hier habe ich die Möglichkeit, dem Brenner eine Brennleistung oder eine Vorlauftemperatur vorzugeben. Damit startet dann die GB112 und läuft bis zum Erreichen der Vorlauftemperatur bzw. bei Vorgabe der Leistung ca. 5 Minuten. Ich habe eine Funktion für eine Heizkurve gefunden, die in Abhängigkeit der Außentemperatur, der Neigung und des Niveaus eine Zieltemperatur liefert. Mit der füttere ich den Brenner, sobald die Vorlauftemperatur die Zieltemperatur unterschreitet. Da ich noch nicht überall Thermostatköpfe montiert habe, bei denen ich die Ventilstellung auslesen kann, ist das für mich erst mal der sinnvolle Weg. Sobald ich das aber umgesetzt habe, wird noch eine Bedingung sein, dass mind. ein Thermostat warmes Wasser verlangt durch Aufregeln des Ventils.
Ich kann dir jetzt nicht sagen, ob sich deine Junkers-Therme genauso verhält, aber eine Vorgabe der Leistung bzw. Vorlauftemperatur sollte auf jeden Fall gehen, sobald ein Thermostat Wärme braucht. Und Abschalten spätestens, wenn das Ventil wieder zu dreht.
Über die Regelung im Flur selbst würde ich nicht gehen (wobei ein Ändern der Solltemperatur über EMS auch möglich sein sollte).

Noch eine Anmerkung: Da meine Therme niedrige Vorlauftemperaturen sehr schnell erreicht und ggf. nur 1-2 Minuten brennt, setze ich bei Temperaturen bis 40°C lieber die niedrigste Brennerleistung. Allerdings bin ich erst seit ein paar Tagen am Testen, ich muss mal sehen, wie sich das bei kühleren Außen-Temperaturen verhält.

Ich hoffe ich konnte ein paar Anregungen liefern.

Viele Grüße,

Harry

maddhin

Hallo Harry,

leiben Dank für Deine Kommentare/Hilfe! Da ich meinen FHEM-Server (RPI2->RPI4) neu aufgesetzt habe ich dabei gleich ein paar Docker-Images aktualisiert und mal alles etwas besser organisiert habe, hat es leider etwas gedauert, bis ich wieder zum "Spielen" komme;)

Was Du schreibst, ist genau das, was ich vorhabe. In FHEM gibt es das Modul VALVES (im Forum suchen) welches einen Mittelwert aus den Öffnungsgraden der Thermostate bildet und so einen guten Indikator für den aktuellen Heizbedarf gibt. Ich habe seit gestern nun alle Heizungsventile auf Homeatic IP umgestellt, d.h. technisch wäre ich bereit für die Implementierung.

Ich habe gestern etwas mit dem Ansteuern der Therme gespielt und festgestellt, dass die Therme eine Vorlauftemp und eine Brennerleistung benötigt, um anzuspringen. Allerdings läuft die Therme dann nur die min. Zeit von 3min und errreicht dabei ca. 35°C der angeforderten 40°C Vorlauftemp. D.h. wahrscheinlich muss man Vorlauftemp und Brennerleistung wiederholt an die Therme geben. Zumal es bei der Junkerstherme nicht möglich scheint wirklich die Brennerleistung festzulegen. Wenn ich beispielsweise 50% anfordere, geht das Gerät trotzdem auf z.B. 70%. Auch wenn ich als max Brennleistung grudnsätzlich 50% definieren. Hat da jemand Erfahrung mit?

Was mir im Moment Kopfschmerzen bereitet ist die Funktion (Neigung, Heizkurve - kenne mich da nicht aus) über die dann die Therme gesteuert wird. Hat da jemand vielleicht schon was gebastelt, was ich als Basis/Startpunkt nehmen könnte? Im Moment weiß ich nichtmal genau wo ich da anfange - ein DOIF oder ein DUMMY, etc. Theoretisch könnte man da sogar ein Modul draus machen, was dann mit den Steuerungsbefehlen und einigen individuellen Parametern gefüttert wird. Das wäre cool.

Schönen Sonntag!

Hmayr

Zitat von: maddhin am 23 Oktober 2022, 14:17:32
Was mir im Moment Kopfschmerzen bereitet ist die Funktion (Neigung, Heizkurve - kenne mich da nicht aus) über die dann die Therme gesteuert wird. Hat da jemand vielleicht schon was gebastelt, was ich als Basis/Startpunkt nehmen könnte? Im Moment weiß ich nichtmal genau wo ich da anfange - ein DOIF oder ein DUMMY, etc. Theoretisch könnte man da sogar ein Modul draus machen, was dann mit den Steuerungsbefehlen und einigen individuellen Parametern gefüttert wird. Das wäre cool.
Hallo maddhin,

ich habe in den Tiefen des Internets diese EXCEL-Datei gefunden. Die original-Formel in den Spalten B + D finde ich etwas umständlich, die von mir in Spalte K eingetragene Formel ist da etwas eleganter. Damit kannst du dir in Fhem eine Heizkurve basteln. Der variable Parameter ist natürlich die Außentemperatur, die Eingangsparameter legst du oben links in den Einstellungen fest. Ich habe auch noch die Heizkurve meines Reglers (ERC) als Vergleich mit reinkopiert.

Was die Leistung und die Brenndauer angeht. Über EMS zeigt mein Brenner eine minimale Leistung von 37% an, maximal 100%. Meistens startet er (auch wenn ich 37% Leistung vorgebe) mit leicht höheren Werten, hält dann aber die 37%. Solange die Rücklauftemperatur des Brenners nicht 2°C über der Zieltemperatur (-> Heizkurve) liegt, füttere ich den Brenner alle Minute erneut mit der gewünschten Leistung. Damit läuft er dann länger, wenn nötig (normalerweise auch nur knappe 5 Minuten). Bei den jetzt noch niedrigen Zieltemperaturen ist die im Vorlauf schnell erreicht, daher steuere ich mit der Leistung.

Ich hoffe das hilft dir weiter.

Schönen Sonntag,

Harry

maddhin

Zitat von: Hmayr am 23 Oktober 2022, 17:16:38
Ich hoffe das hilft dir weiter.

Sehr! Ich werde mir mal einen DUMMY basteln und sehen, dass ich die Berechnung in FHEM bekomme. Sollte machbar sein.

Was mir jetzt noch fehlt ist eine intelligente Integration der Ventilstände vs. der Sollraumtemperatur der Heizkurve. Da muss ich erstmal etwas überlegen.

@Hmayr : genial, lieben Dank für Deinen Input!

Hmayr

Hallo maddhin,

Die Ventilstände haben doch nichts mit der Heizkurve zu tun!? Die sagt doch erst mal nur aus, welche Vorlauftemperaturen für welche Außentemperatur notwendig ist. Und das hat u.a. was mit dem Wärmeverlust deines Hauses/Wohnung zu tun.
Die Ventilstände wiederum sagen dir, ob der jeweilige Raum mit warmen Wasser versorgt werden muss, also ob im Zweifel der Brenner angeschmissen werden muss, weil die Vorlauftemperatur nicht auf dem nötigen (durch die Heizkurve vorgegebenem) Niveau ist.
Du brauchst also für die Heizkurve entweder einen Außentemperaturfühler, oder nimmst die Daten der Wettervorhersage.
Und wenn alle Ventile zu sind, wirfst du denn Brenner nicht an, selbst wenn die Vorlauftemperatur unter dem Zielwert ist. Bzw. wirfst den Brenner an, wenn eines der Ventile über einem bestimmten Schwellwert ist.

Viele Grüße,

Harry

maddhin

Zitat von: Hmayr am 23 Oktober 2022, 18:54:56
Die Ventilstände haben doch nichts mit der Heizkurve zu tun!?

Stimmt natürlich - ich dachte nur daran die Raumsolltemperatur in Abhängigkeit des Bedarfes (neben der Außentemperatur) zu ändern und so die Heizkurve noch weiter anzupassen. Das erscheint mir aber (nun) eher als eine unnötige Spielerei.

Die Heizkurve* habe ich mal in ein dummy-device gepackt:

defmod heizkurve dummy
attr heizkurve DbLogExclude .*
attr heizkurve readingList aussentemperatur nachtabsenkung neigung niveau raumsolltemperatur vorlaufmintemp vorlaufmaxtemp
attr heizkurve room 4.1_Heizung
attr heizkurve setList aussentemperatur:slider,-30,0.5,40 nachtabsenkung:-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0 neigung:1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8 niveau:1,2,3,4,5,6,7,8,9,10 raumsolltemperatur:slider,3,0.5,30 vorlaufmintemp:slider,20,0.5,85 vorlaufmaxtemp:slider,20,0.5,90
attr heizkurve stateFormat vorlauftemp
attr heizkurve userReadings vorlauftemp {\
my $Nei = ReadingsVal("heizkurve","neigung",0);;\
my $RTsoll = ReadingsVal("heizkurve","raumsolltemperatur",0);;\
my $AT = ReadingsVal("heizkurve","aussentemperatur",0);;\
my $Niv = ReadingsVal("heizkurve","niveau",0);;\
my $VLmin = ReadingsVal("heizkurve","vorlaufmintemp",0);;\
my $VLmax = ReadingsVal("heizkurve","vorlaufmaxtemp",0);;\
\
my $VLtag = round(0.55*$Nei*($RTsoll**($AT/(320-$AT*4)))*((-1*$AT+20)*2)+$RTsoll+$Niv,1);;\
\
if ($VLtag < $VLmin) {return $VLmin} elsif ($VLtag >= $VLmax) {return $VLmax} else {return $VLtag}}, \
\
vorlauftempnacht {\
my $Nei = ReadingsVal("heizkurve","neigung",0);;\
my $RTsoll = ReadingsVal("heizkurve","raumsolltemperatur",0);;\
my $AT = ReadingsVal("heizkurve","aussentemperatur",0);;\
my $Niv = ReadingsVal("heizkurve","niveau",0);;\
my $VLmin = ReadingsVal("heizkurve","vorlaufmintemp",0);;\
my $VLmax = ReadingsVal("heizkurve","vorlaufmaxtemp",0);;\
\
my $VLtag = round(0.55*$Nei*($RTsoll**($AT/(320-$AT*4)))*((-1*$AT+20)*2)+$RTsoll+$Niv,1);;\
\
my $NAS = ReadingsVal("heizkurve","nachtabsenkung",0);;\
my $VLnacht = ($VLtag+$NAS);;\
\
if ($VLnacht < $VLmin) {return $VLmin} elsif ($VLnacht >= $VLmax) {return $VLmax} else {return $VLnacht}\
}


Die Außentemperatur wird über ein notify automatisch angepasst und damit auch die Vorlauftemperatur neu berechnet:

defmod heizkurve_UpdateAussenTemp notify WetterOW:temperature:.* setreading heizkurve aussentemperatur $EVTPART1
attr heizkurve_UpdateAussenTemp DbLogExclude .*


Der Dummy ist natürlich nicht besonders elegant. Das kann man alles wesentlich besser machen (Berechnung über Funktion, ordentliche Namen für readings, etc.). Ist aber erstmal funktional. Verbesserungsvorschläge und konstruktive Kritik sind immer willkommen!

Jetzt muss ich im Grunde nurnoch eine "Heizzentrale" basteln, die dann die Daten von VALVES und Heizkurve nimmt und die Therme entsprechend steuert. Da muss ich mir dann auch etwas intelligentes einfallen lassen.



*die Heizkurve wird über die Formel in der Excel-Datei von Hmayr berechnet - ggf. kann man das noch verfeinern.