Vaillant Heizung(en) per Ebus ansteuern ohne Thermostat

Habe ein mittlerweile recht umfangreiches Heizungsystem:

[ul]
[li]zwei übereinander gelegene Wohnungen, durch eine Treppe zur Maisonette zusammengefasst
[/li][li]jede Wohnung hat eine Vaillant-Etagenheizung mit eBus
[/li][li]ein RasPi mit ebusd spricht über zwei eBus-Koppler von esara mit den jeweiligen Heizungen
[/li][li]in allen Räumen HomeMatic Heizkörper- sowie Raumthermostate
[/li][li]aktuell in der unteren Wohnung die eigentliche Ansteuerung der Heizung noch per analoger 7/8/9-Schnittstelle
[/li][/ul]

Der Wärmebedarf wird anhand der Ventilöffnung und der Differenz Soll/Ist der Raum- bzw. Heizkörperthermostate ermittelt. Daraufhin steuere ich derzeit in der einen Etage die „Modulation“ der Heizung per analoger Schnittstelle/Arduino. Ebus verwende ich hier aktuell nur zum Auslesen der aktuellen Daten.

In dem anderen Geschoss möchte ich auf diesen analogen Umweg möglichst verzichten und direkt digital die Vorlauf-Solltemperatur setzen. leider ist dies nicht ohne weiteres möglich; das Feld Vorlauf-Soll ist readonly. Ich kann derzeit nur durch setzen der Max-Vorlauftemperatur (ist schreibbar) die Modulation der Heizung beeinflussen. Sie aber bspw auf Sommerbetrieb zu schalten geht auf die Weise nicht, es sind nur Werte >= 40° setzbar.

Ich habe bei meinen Recherchen festgestellt, dass die meisten, die ihre Vaillant-Heizung per eBus steuern, dies machen indem sie die Raumsoll des Thermostaten setzen. Ich habe aber keine Thermostate von Vaillant und will auch ungern welche anschaffen, weil ich sie ja technisch nicht wirklich brauche.

Ich würde gern, dass sich IPS selbst wie der Thermostat verhält und den Heizungen direkt sagt, welche Vorlauf-Soll sie machen sollen.

Hat jemand das schon so gelöst? Oder zumindest Ideen hierzu?

Danke & VG

Ich habe mir dann mal die Bauteile bestellt, um mir einen Wandler von PWM auf analoge 7/8/9-Schnittstelle zu bauen. Erstaunlich, dass das nötig ist aber ich scheine wieder nicht drumherum zu kommen, wenn ich kein sinnloses Thermostat will. :banghead:

Du kannst direkt per eBUS Befehlen die Vorlauftemperatur einstellen.
Gruß
Klaus

Hast du eine Idee, wie? Ich stehe da ziemlich auf dem Schlauch ehrlich gesagt.

Du kannst über die IO-Instanz Deiner Symcon Installation die eBUS Kommandos schicken.

Die Struktur sieht so aus:
eBUS Kommandostruktur: QQ ZZ PB SB NN <Nachricht> CRC AAh

QQ ist die Quelle, also 00h bei Symcon
ZZ ist die Zieladresse auf dem eBUS. z.B: der Mischer VR61 als slave: 50h
PB SB sind die Grundbefehle und NN die Länge der Nachricht.

das sieht dann so aus: 00 50 B5 09 04 0E 32 00 2E D6 setzt die Temperatur auf 23Grad
senden kannst Du dass mit CSCK_SendText(IOInstanz, $HexString);

Im Internet sind diverse Wikis vor allem in Github die Beschreibung für ebusd. Dort sind die Befehle dokumentiert.
Hier im Forum hat das mal Terényi gut beschrieben und den PHP Code veröffentlicht.

Gruß
Klaus

Es gibt im Store auch das ebusd Modul :smiley:

Ich nutze ja das Modul, bloß damit bekomme ich ja lediglich Statuswerte der Heizung ausgelesen. Vorlauf-SOLL ist dabei schreibgeschützt.

Edit: Wie sende ich denn mit dem Modul eigentlich so einen Ebus-Befehl? Mit EBM_Publish kann ich ja nur schreibbare Parameter setzen, was nett ist aber mir in diesem Fall ja nicht hilft. Oder kann ich den Parameter schreibbar machen?

Hallo Klaus, danke für die Hilfe. Ich habe das ja vor Jahren schon mal probiert, damals mit dem Paket B510, was nach damaligem Erkenntnisstand das korrekte für „sende der Heizung die Vorlauf-Solltemperatur“ zu sein schien. Es führte aber zu sehr problematischen Fehlern bis hin zur Notabschaltung der Heizung.

Du verwendest ja jetzt B509, wozu ich hier etwas gefunden habe (set device configuration, nach dem Erkenntnisstand damals als ich es versuchte, war das ein Befehl rein für Solarthermie).

Allerdings ist die verwendete Adresse 32h dort nicht dokumentiert (Vorlauf-Soll?).

Magst du mir sagen, wo genau du diesen Befehl her hast? Da bin ich jetzt durch Google noch nicht hingekommen. Ich muss das etwas besser verstehen, bevor ich mich traue, wieder wild auf den eBus zu schreiben. Will nicht dass die Heizung wieder verrückt spielt.

Danke & VG

Welche Therme hast du denn genau und welche Konfigurationsdatei beim ebusd wird geladen?

Bei mir wird über die „08.bai.csv“ die "„vaillant/bai.0010015600.inc“ und die „hcmode.inc“ geladen. In den Konfigurationsdateien ist definiert, welche Parameter lesend/schreibend definiert sind.

Bei mir gibt der Parameter „FlowTemp“ die Vorlauftemperatur aus. Er ist aber read only. Dann gibt es den Parameter „SetMode“. Das ist sicherlich derjenige, über den die Therme zu steuern ist. Leider ist das ein Parameter, über den ein ganzes Set an Parametern gesetzt wird. In der Richtung müsste man forschen. Ich selber habe da leider noch keine Erfahrung.

Ein Ansatzpunkt wäre zunächst mal herauszufinden, wie man den SetMode Parameter über ebusctl setzen kann.

Ist „setmode“ nicht zufällig der, den Klaus da beispielhaft angeführt hat? Für den suche ich nämlich mal eine brauchbare Dokumentation.

Der Befehl ist sehr umfangreich:

# type (r[1-9];w;u),circuit,name,[comment],[QQ],ZZ,PBSB,[ID],field1,part (m/s),datatypes/templates,divider/values,unit,comment
uw,,SetMode,Betriebsart,,,,00,,,hcmode,,,,flowtempdesired,,temp1,,,,hwctempdesired,,temp1,,,,hwcflowtempdesired,,temp0,,,,,,IGN:1,,,,disablehc,,BI0,,,,disablehwctapping,,BI1,,,,disablehwcload,,BI2,,,,,,IGN:1,,,,remoteControlHcPump,,BI0,,,,releaseBackup,,BI1,,,,releaseCooling,,BI2,,,,

Vielleicht hilft dir das hier weiter.

Danke, das ist der B5 10, welcher bei mir früher zu Überhitzen und Trockenbrand des Heizkessels geführt hat. Wenn ich den nicht irgendwo dokumentiert finde (ein Thread zu einem Bug ist für mich leider keine Doku) dann traue ich mich nicht, den zu benutzen :frowning:

Also mit dem B5 09 kann man eine Menge tolle Dinge machen, das ist das was auch ebsud hauptsächlich verwendet um die ganzen Konfigurations- und Statuswerte auszulesen, Aber die Solltempertur ist dort eben nicht schreibbar. Habe es eben auch mal direkt per TCP-Befehl „hex“ probiert - man kann an die entsprechende Adresse der Solltemperatur schon schreiben, es wird aber von der Heizung ignoriert.

Die Thermostate scheinen den B5 10 aka SetMode zu benutzen.

Falls irgendwo eine Dokumentation dieses Befehls auftaucht bin ich sehr interessiert.

Edit: Die hier gefunden, das ist die die ich schon damals benutzt habe aber ohne Fortschritte seit Jahren.
https://ebus-wiki.org/doku.php/ebus/serviceb510

Ich habe nochmal darüber nachgedacht. Ich glaube ja, ich war schon „damals“ auf der richtigen Spur mit dem B5 10, aber irgendwas war eben falsch und der Fehler trat ja auch nicht nur bei mir auf.

(Einzige Theorie die mir gerade bleibt ist, dass die Absenderadresse stimmen muss, damit die Heizung wirklich denkt sie habe ein Thermostat, siehe hier, sonst kommt es zu dem Fehler)

Bei denen, deren Heizung auch Warmwasser bereitet, betraf er den Warmwasserkreis. Das wurde von 3 anderen Usern berichtet. Hin und wieder heizte das Gerät deutlich über den eingestellten Sollwert auf.

Bei mir (Therme ohne Brauchwasserkreis) trat der Fehler im Heizwasserkreis auf und war noch dramatischer (STB angesprochen, lautes Zischen, Trockenbrand statt nur komischer Temperaturpeak). Das war unheimlich und hat mir den Spaß am Herumsenden von Befehlen verdorben.

Fakt ist, eine fein säuberliche Doku werde ich nicht finden, die könnte nur von Vaillant kommen und die hüten ihre Geheimnisse ja lieber,

Also gäbe es für mich nur einen Fall in dem ich mich trauen würde, es noch mal zu probieren: Wenn es irgendwer schon so macht und es dort gut geht, also ohne komisches Verhalten.

Daher meine Frage: Benutzt irgendwer den Befehl B5 10, um seiner Heizung die Vorlauf (bzw. Rücklauf-)solltemperatur mitzuteilen, ohne dass es zu komischem Verhalten kommt?

Bin überrascht, dass es bei Dir zu Problemen geführt hat.
Den Beispielcode habe ich durch Mitlesen der Befehle von VR470 verifiziert und aus dem ebusd-configuration/ebusd-2.x.x/de/vaillant at master · john30/ebusd-configuration · GitHub Konfig entnommen.
Dort siehst Du auch welche Arten es gibt. Bei mir VR61.

Klaus

Na ja, das ist ja der B5 09 der funktioniert bei mir auch, aber da kann man halt keine Vorlauf-Soll der Heizung setzen.
Der B5 10 ist der den ich wohl bräuchte und der zu genannten Problemen geführt hatte.

So, ich sitze mal wieder hieran. Zum setzen der Solltenperaturen (Warmwasser, Heizkreis) nutze ich nun bei der neuen Heizung tatsächlich B5 10 aka SetMode (ist in derConfig durchaus definiert), allerdings per „hex“-Befehl auf den ebusctl-Port (8888 by default), da der Befehl wie hierdiskutiert nicht schreibbar ist und man das nur aktivieren könnte indem man an der Config herumeditiert (was ich nicht will da sie wenn ich recht verstehe automatisch geupdatet wird).

Der Code in IPS sieht dann so aus:

function send($inst_id, $lead_temp_hc, $lead_temp_ww, $flags) {
    $lead_temp_hc = floor($lead_temp_hc * 2);
    $lead_temp_ww = floor($lead_temp_ww * 2);
    CSCK_SendText($inst_id, "hex -s 10 08B510090000" . hex($lead_temp_hc) . hex($lead_temp_ww) . "FFFF" . hex($flags) . "FF00
");
}

Ich schreibe also direkt auf eine Client Socket die sich mit dem Port 8888 (oder welcher es auch immer in der konkreten Situation ist, ich habe ja zwei Heizungen also ist es bei der anderen 8889) verbindet.

Leider bin ich aus der bandwurmlangen CSV

# HC Betriebsart2,,,,,,,,,,,,,
*r,,,,,,"B511",,,,,,,
*uw,,,,,,"B510",,,,,,,
uw,,SetMode,Betriebsart,,,,00,,,hcmode,,,,flowtempdesired,,temp1,,,,hwctempdesired,,temp1,,,,hwcflowtempdesired,,temp0,,,,,,IGN:1,,,,disablehc,,BI0,,,,disablehwctapping,,BI1,,,,disablehwcload,,BI2,,,,,,IGN:1,,,,remoteControlHcPump,,BI0,,,,releaseBackup,,BI1,,,,releaseCooling,,BI2,,,,
r,,Status01,Vorlauftemperatur/Rücklauftemperatur/Aussentemperatur/WW Temperatur/Speichertemperatur/Pumpenstatus,,,,01,,,temp1;temp1;temp2;temp1;temp1;pumpstate,,,
r,,Status02,Betriebsart/Maximaltemperatur/ReglerCurrentTEMP/Maximaltemperatur/ReglerCurrentTemp,,,,02,,,hwcmode;temp0;temp1;temp0;temp1,,,
r,,Status,Status,,,,03,,,temp;press;press;hcmode2;HEX,,,

Noch nicht schlau geworden, irgendwie mehr als die beiden Solltemperaturen zu setzen (benutze stattdessen noch diese veraltete Informationsquelle).

Über die „flags“ kann man wenn ich mich recht entsinne auch so Sachen machen wie dass im Display steht „Sommerbetrieb“. Das wäre aber eher kosmetisch, ich kann ja auch einfach den Heizkreis auf Solltemperatur 15° setzen.

Auf jeden Fall ist es nötig, diesen Befehl periodisch abzusetzen (sonst stellen sich die Solltemp. nach 15 Minuten auf Defaultwerte zurück) und ich wage es jetzt, trotz meiner schlechten Erfahrungen, ihn testweise zu benutzen. Im Unterschied zu früher benutze ich ihn (zunächst) nur auf meiner neueren Brennwerttherme und mit einer anderen Absenderadresse (10 anstatt wie früher 00), tue also als ob ich wirklich ein Raumthermostat bin. Ich gehe also davon aus dass das unerfreuliche Verhalten früher damit zusammenhing, dass die Absenseradresse falsch war, denn ansonsten sende ich ja jetzt genau das, was auch ein ebus-Raumthermostat senden würde.

Mal sehen, wenn die Therme wieder komische Dinge tut und sich abschaltet, dann werde ich das sofort außer Betrieb setzen.

Kleines Update zum Befehl B5 10: Ich setze diesen seit einigen Wochen bei meiner Brennwerttherme mit Warmwasserbereitung ein und es gibt keine Probleme.

Auffällig: Wenn ich Brauchwasser-Sollwert auf 15° setze (Etage ist noch Baustelle und Warmwasser wird noch nicht benötigt) springt periodisch alle 24h eine Legionellenschutzfunktion an, die den Speicher einmal auf ca. 75°C aufheizt.

Meine Theorie zu dem Problem, das ich mit der Heizwerttherme im anderen Stockwerk hatte (die kein Brauchwasser bereitet, aber prinzipiell dafür ausgerüstet wäre) ist nun, dass ich dort durch das setzen der Warmwasser-Solltemperatur auf 15° ebenfalls diese periodische Legionellenschutzfunktion ausgelöst hatte. Dort ist aber in dem Brauchwasserkreis gar kein Wasser (Rohre sind nicht verbunden).

Was ich hätte machen müssen, so jedenfalls meine wilde Theorie, ist beim Befehl B510 das Bit für „Brauchwasser aus“ setzen, oder, im Handwerkermenü die Legionellenschutzfunktion deaktivieren.

Ich mag das aber nicht mehr ausprobieren (ich gebe der Heizung noch 3-5 Jahre…) und belasse es daher in dem Stockwerk bei der analogen Ansteuerung per 7-8-9-Schnittstelle :o