Vaillant Therme über eBus steuern

Wo und wie greifst Du denn die eBus-Befehle zwischen eBus-Adapter-vrDialog ab ?

Ich nicht, aber mit USBlyzer geht das wohl.

Wie weit ist denn der Franzose … hast Du vielleicht einen Kontakt zu ihm den Du mir senden könntest?

Besten Dank!

Wir sind sehr weit, kennen bereits sämtliche Parameter und Befehle zum auslesen und haben die Bedeutung der neusten Antworten entschlüsselt. Schreiben der wichtigsten Befehle auch. Überlegen gerade, wie es weiter gehen soll, er will entweder Linux-Treiber für VRDialog oder .Net DLL, ich natürlich IPS-Anbindung über Eservice Adapter.

Ich muss mich an dieser Stelle mal wieder in die Diskussion einschalten. Da meine eigene Heizungssteuerung noch einige unschöne Schwächen aufweist, die ich gerade erst zu verstehen beginne, wollte ich mal fragen ob es schon sachdienliche Hinweise zu dein im Wiki noch als „unknown“ bezeichneten Parametern des Befehls 0xB5 0x10 (set operational data) gibt?

	$sourceAddr = 	0x00; // source
	$destAddr =    0x08; // dest (3 + 5) brenner slave

	$primCmd =     0xB5; // vaillant proprietär
	$secCmd =      0x10; // set operational data

	$dataBytes[] = 0x00; // unknown 00
	$dataBytes[] = 0x00; // unknown 00
	$dataBytes[] = $flowTemp;
	$dataBytes[] = 0x0F; // brauchwasser
	$dataBytes[] = 0xFF; // unknown FF
	$dataBytes[] = 0xFF; // unknown FF
	$dataBytes[] = 0x00; // unknown 00
	$dataBytes[] = 0xFF; // unknown FF
	$dataBytes[] = 0x00; // unknown 00

	$myString = zeropad(dechex($sourceAddr)) .
		zeropad(dechex($destAddr)) .
		zeropad(dechex($primCmd)) .
		zeropad(dechex($secCmd)) .
		zeropad(count($dataBytes));
	for($i = 0; $i < count($dataBytes); $i++)
		$myString .= zeropad(dechex($dataBytes[$i]));

Irgendwo in diesen Bytes M6-M14 muss doch die Antwort stecken: http://ebus.webhop.org/twiki/bin/view.pl/EBus/ServiceB510

Nö, da steht nix mehr drin. Wir reden ja hier von den periodisch gesendeten Befehlen zwischen Steuerung und Brenner und umgekehrt. Das hatte ich über Monate mitgeloggt, das Wiki ist da aktuell. Mit dem B509 kann man alle Befehle senden, die auch VRDialog kann. Einige sind weiter oben bereits erklärt, den Rest stelle ich beizeiten hier rein.

Mal ne Frage am Rande - wie wird bei e-Bus festgelegt wer Master und wer Slave ist??

Und wenn ein Gerät Master ist, wie nimmt es dann Befehle an ??

mfg

Das geht meines Erachtens über die Addressierung. Bspw. sendet meine Calormatic Steuerung als Master mit 10h und empfängt als Slave mit Adresse 15h. Schau mal in die Doku.

Ich hab die Doku von dem Befehl schon fast auswendig drauf. Auch trial-and-error mäßig einige Flags noch gefunden, bspw. heute eines für den Sommerbetrieb (habe die Therme mit Klartextdisplay).

Aber warum bei der eBus-Ansteuerung so komische Temperaturpeaks entstehen, das leuchtet mir wirklich nicht ein… mehr wie Solltemp. setzen macht mein Regler nicht und das tut er wesentlich sinnvoller als der Analogregler, der ja alles anhand der Wohnzimmertemp. zu regeln versucht.

Moment: bei mir wird aus unerfindlichen Gründen der WW-Tank 2-3x im Monat auf 60-70 Grad aufgeheizt. Habe immer noch keine Ahnung warum, gefühlt wenn ich viel auf dem Bus schreibe. Meinst du das?

Nein, das ist beim Brauchwasser vmtl. der Legionellenschutz?

Nix Legionellenschutz - den bekomme ich beim wöchentlichen Badeprogramm :slight_smile: Setze dann kurzfristig die WW-Solltemp hoch…

Das ist löblich, aber ich bin mir fast sicher, dass die Vaillant-Geräte schon einen eingebauten Schutz haben. Es gibt auch irgendein dokumentiertes Paket in diesem eBus-Wiki, in dem das erwähnt wird.

Was denn für ein Schutz? CRC natürlich, deshalb wundert mich das ganze ja auch.

Nein, ich meinte nur, dass die Vaillant-Geräte mit Warmwasserbereitung auch einen eingebauten Legionellenschutz haben, sprich: Sie regeln die Solltemp. des Wasserspeichers selbsttätig in regelmäßigen Abständen mal etwas höher. Es gab Hinweise auf dieses Feature irgendwo in der eBus-Doku. Insofern würde mich das jetzt nicht so überraschen beim Warmwasser.

Beim Heizwasser ist es eine ganz andere Sache und da habe ich mich auch schon gewundert wegen CRC. Dass da durch einen Bitkipper oder eine Kollision plötzlich ein falscher Wert ankommt und die CRC-Summe zufällig genau passend mit verfälscht wird, halte ich mal für so extrem unwahrscheinlich, dass es wohl zu vernachlässigen ist.

Ich halte es für möglich, dass die Therme intern auch per eBus ihre einzelnen Komponenten, insbesondere die interne Umlaufpumpe, anspricht. Das wäre das einzige, was ich mir vorstellen könnte.

Dieses „Feature“ konnte ich über 8 Monate mitlauschen beim besten Willen nicht entdecken. Erst seitdem ich auch Schreibe trifft das zu…

Dann hat es möglicherweise doch ähnliche Ursachen… insbesondere die Korrelation mit „viel senden“ wäre dazu interessant. Meine Steuerung sendet, wenn sie nur mitliest, alle 15 Sekunden eine Statusabfrage. Wenn sie auch regelnd (schreibend) eingreift, sendet sie zeitlich versetzt ebenfalls alle 15 Sekunden ein Paket mit Solltemp. etc… Vielleicht ist das einfach zu oft.

Ich mache das deshalb so oft, weil ich eine gewisse Redundanz gegenüber fehlschlagenden Sendungen, aufgrund von Buskollisionen etc, erreichen wollte. Ich sende ja direkt über den COM-Port, ohne zu gucken ob die Leitung „frei“ ist. Falls es da schon einen saubereren Algorithmus geht, kann ich das natürlich auch mal umstellen.

Oder ich sende allgemein eben einfach etwas seltener. Ergibt es denn von der Theorie her irgendwie Sinn, dass man einen Mikrocontroller derart mit Sendungen überfrachten kann, dass er deshalb Mist baut und z.B. vergisst, die Pumpe anzusteuern?

So ganz schlüssig erscheint mir diese Theorie noch nicht.

Ich sende ja gar nicht oft - max. 20 Befehle am Tag. Steuerung und Brenner sind da viel gesprächiger. Da läuft was anderes schief…

Ich muss es wohl einfach weiter probieren… ich habe jetzt mal die Sendeintervalle des Steuerbefehls B510 intelligenter geregelt. Sende jetzt zwar immer noch aus Redundanzgründen in 3-Sek-Intervallen erneut, aber nur falls die Therme den Befehl nicht quittiert, ansonsten erst nach 2 Minuten erneut. Vielleicht war das bisherige „Dauerfeuer“ ja zumindest in meinem Fall verantwortlich für die Ausfälle.

Hat eigentlich schon mal jemand herausgefunden, was der B512 macht? Der kommt bei mir alle paar Minuten, dann jeweils vier mal kur hintereinender, vom „Firing Automat“ zur Pumpe anscheinend, mal mit den Daten 02 00 und mal mit 02 FE. Mich würde ja mal interessieren, was der eigentlich soll.