Forum: Fahrzeugelektronik Webasto W-Bus


von Sascha W. (sascha-w)


Lesenswert?

Hallo Olli,

hast du mal versucht mit CMD 0x51 0x0C alias IDENT_WB_CODE auszulesen 
was die Heizung unterstützt?

#define     WB_CODE_0     0 /* Unknown supplemental heater feature */
#define     WB_CODE_ON    3 /* on/off switch capability */
#define     WB_CODE_PH    4 /* Parking heater capability */
#define     WB_CODE_SH    5 /* Supplemental heater capability */
#define     WB_CODE_VENT  6 /* Ventilation capability */
#define     WB_CODE_BOOST 7 /* Boost capability */

da sollte doch Bit 4 & 5 die gewünscht Info liefern.

Sascha

von Michael R. (mr-action)


Lesenswert?

@Olli: Seine Pumpe wird nicht automatisch anlaufen, denn er hat 
garkeine... VW verbaut die Pumpe nur bei einer Standheizung... Denn der 
Zuheizer läuft nur, wenn der Motor läuft und dann braucht man keine 
zusätzliche Wasserpumpe (von einigen Fahrzeugen mit Kühlwassernachlauf 
usw. mal abgesehen - aber das wäre mir im Touran neu)...

@Sascha: Sehr schöne Idee! Hatte ich garnicht im Kopf, was es so an 
Sensorwerten gibt...

von Olli Z. (z80freak)


Lesenswert?

Ja, Michael, das war auch mein erster Gedanke. Aber, again what learned 
;-) die haben alle eine solche Pumpe verbaut. Ist bei Ford aber 
eigentlich nicht anders, denn meiner hatte ja auch nur Zuheizer. Die 
scheint beim Start der Zuheizung sogar anzuspringen (laut Aussage). Also 
kein Wärmestau.

Einzig der Lüfter im Fahrzeug bleibt natürlich aus. Die Climatronic im 
VW ist also scheinbar nicht für SH Betrieb konfiguriert, oder die SH 
kann diese per CAN nicht steuern. Mit einem entsprechendem 
Softwareupdate wird wohl richtig Geld gemacht, wodurch einige sich 
einfach eine entsprechende SH kaufen, oder nur die Steuerplatine und die 
dann wechseln, weil da billger kommt. Ich hab bislang keine Idee wie ein 
solches Firmwareupdate aussehen könnte und ob man diese auch "kopieren" 
kann.

Die Climatronic scheint die Klappen in der Stellung zu lassen, wie man 
den Wagen ausstellt. Daher die Idee den Lüftermotor direkt anzusteuern, 
das würde reichen.

von Michael R. (mr-action)


Lesenswert?

Also früher hat VW sich die Pumpe wirklich gespart... Krass, das die die 
beim Touran dann immer reingeworfen haben (macht ja eigentlich beim 
reinen Zuheizer keinen Sinn)...

Was die Climatronic angeht, zumindest im Octavia 1Z soll die normale 
Climatronic auch die Standheizung unterstützen, wenn von dieser die 
Befehle übern CAN kommen... Ich hab allerdings direkt das Bedienteil 
getauscht, weil ich die Standheizungstaste haben wollte... Aber laut 
google solls auch mit dem anderen Bedienteil gehen... Konfiguriert wird 
da ja eh nix - die neueren VWs merken ja selbst, was verbaut ist...

Anders ist also wohl nur die Software von Webasto - die unterstützt beim 
Zuheizer ja auch keine Bedienteile...

Und da du nicht weißt, was die Climatronic zuletzt gemacht hat - bist du 
sicher, das es dann reicht nur den Lüfter anzusteuern?

Davon ab: Will man nicht immer die Software von dem Zuheizer updaten? 
Sonst hat man ja wirklich nur seine gebastelte Fernsteuerung und kann 
keine original Fernbedienung oder den Timer (übern Tacho bei VW) 
nutzen...

von Olli Z. (z80freak)


Lesenswert?

Also Du meinst, wenn man die richtigen CAN Nachrichten kennt, könnte man 
die einfach selbst anstelle der SH senden und alles ist gut?! Muss ich 
wohl mal intensiv nach suchen. Für das VW Zeugs gibt es eigentlich mehr 
Infos als zu Ford.

Zur Not halt nur Lüfter steuern. Und ja, wie ich doch schrieb verbleiben 
die Klappen in der letzten Position. Die fahren nicht zu. Man muss halt 
selbst dran denken die richtig einzustellen.

Das mit dem Firmwareupdate ist mir noch nicht klar. Wie genau wird das 
durchgeführt? Könnte mir vorstellen das das auch über den WBus läuft.

von Michael R. (mr-action)


Lesenswert?

Ja, genau das meine ich... ;-) Die passende Nachricht zu finden wird 
aber wohl nicht so easy - zumal die sicherlich auch Fahrzeugspezifisch 
ist... Also wenn du sie bei dir findest, ist die sicherlich anders wie 
im Touran...

Ja, sie verbleiben in der letzten Position - aber du weißt nicht, welche 
das ist... Du musst also um auf Nummer sicher zu gehen wirklich immer 
die Luft auf die Scheibe drehen, was immer auch gleichzeitig warm sein 
müsste... Du willst ja keine kalte Luft ins Auto schaufeln... Also muss 
man immer beim abstellen daran denken - das ist doch mega nervig! (man 
muss ja nicht gleich von Fehleranfällig sprechen)

Ja, das Firmware Update läuft übern WBus... Is mir schonmal im Netz 
übern weg gelaufen, sowas...

von Sascha W. (sascha-w)


Lesenswert?

Michael R. schrieb:
> Du willst ja keine kalte Luft ins Auto schaufeln... Also muss
> man immer beim abstellen daran denken - das ist doch mega nervig! (man
> muss ja nicht gleich von Fehleranfällig sprechen)
Das ist bei jeder nachgerüsteten SH aber auch so.
Dann ist halt früh die Scheibe gefrohren und dafür der Motor warm ;-)

Sascha

von Michael R. (mr-action)


Lesenswert?

Na, wir sind aber doch nicht in der Chrome Abteilung von ATU sondern auf 
µC.net - wir streben doch nach Höherem... ;-)

Ich hab grade mal in die Anleitung von Webasto geguckt (Nachrüstung in 
nem Octavia 1Z)... Die Klemmen sich auch nur zwischen Klimasteuergerät 
und Lüftersteuergerät... Wundert mich ehrlich gesagt etwas... Im Golf4 
(und allem, das ungefähr das gleiche Alter hat) gab es noch einen Pin an 
der Climatronic, den man für den Standheizbetrieb auf 12V legen musste 
und dann lief alles automatisch... "Etwas" kacke, das es sowas heute 
nicht mehr gibt...

Bleibt also nur, um den ganzen Komfort zu haben:
- Zuheizer auf Standheizung upgraden (per Software)
- CAN Messages rausfinden und selbst senden

Gibts eigentlich einen relativ günstigen CAN Gateway, der sich für den 
Bus transparent verhält, aber dem PC sagen kann, welche Nachricht über 
welchen Bus kam? Damit könnte man dann mal ein Steuergerät isolieren und 
protokollieren, welche Nachrichten es schickt... Das wäre ja schonmal 
ein Anfang, wenn man sowas rausfinden will...

von Olli Z. (z80freak)


Lesenswert?

Da muss ich Michael zustimmen, ich bin auch kein Freund von 
Bastellösungeb. Alles oder nichts! ;-)

Hatte gehofft im Internet mehr zu den CAN Nachrichten zu finden, aber 
fehlanzeige. Einzig canhack.de beschäftigt sich oberflächlich mit dem 
Thema. Leider ist das so halbmommerziell und undurchsichtig. Hatte mich 
da schon zweimal angemeldet, bin aber nach kurzer Zeit gesperrt worden. 
Scheinbar darf man da nur bleiben wenn man "dieselschrauberpunkte" 
kauft. Ich hab doch nur eine PayBack Karte! Scheiss Kapitalisten! ;-)))

Das mit dem CAN Gateway habe ich sogar schon begonnen. Die Hardware ist 
trivial, ein Arduino und zwei MCP2515 und MCP2551 als Transceiver. 
Dennoch muss man ja die eingehenden Pakete lesen, verarbeiten, ggf. 
einen Trigger für Serial oder so auslösen und auch wieder rausschreiben. 
Einfach nur RX/TX vertauscht verbinden ist wohl nicht... Wenn hierzu 
einer eine Idee hat, bitte melden! Ich werdedafür aber einen neuen 
Thread aufmachen, hat hier nix zu suchen.

Die Sache mit der SH Firmware treibt mich noch um. Nicht es langt die 
Codierung anzupassen?! Die steht ja vermutlich auf Zuheizer und dann 
könnte die TTV ja einfach keine CAN Befehle zur Climatronic senden. Am 
CAN muss ja doch sein, sonst könnte die Zuheizung nicht gesteuert 
werden. Der WBus war nicht verbunden.

von Michael R. (mr-action)


Lesenswert?

Zum canhack, da war ich früher mal - da gabs aber keine Infos, die es 
nicht auch so offen im Internet gab...

Also kurz zum CAN Gateway... Ich glaube nicht, das der AVR das schafft, 
wenn da viel auf dem Bus los ist! Und die externen SPI Transceiver sind 
auch keine Performancewunder - kann gehen, muss es aber nicht, wenn die 
das Timeing ziemlich streng kontrollieren... ;-)

Zum Update, du ließt deine E-Mails nicht, oder?

von Olli Z. (z80freak)


Lesenswert?

Sascha W. schrieb:
> hast du mal versucht mit CMD 0x51 0x0C alias IDENT_WB_CODE auszulesen
> was die Heizung unterstützt?
>
> #define     WB_CODE_0     0 /* Unknown supplemental heater feature */
> #define     WB_CODE_ON    3 /* on/off switch capability */
> #define     WB_CODE_PH    4 /* Parking heater capability */
> #define     WB_CODE_SH    5 /* Supplemental heater capability */
> #define     WB_CODE_VENT  6 /* Ventilation capability */
> #define     WB_CODE_BOOST 7 /* Boost capability */

Hi Sascha! Also folgendes bekomme ich aus MEINER Heizung raus:
4F 0A D1 0C 31 3C C0 E3 3F 80 00 09

D0 = 0x0C = 0b00001100
Bit 4 mit PH ist klar. Aber was bedeutet Bit 3? Ist auch in der WBus-Lib 
nicht vorhanden.

D1 = 0x31 =
0b0011 0001
  0000 0001 ???
  0000 0010 External circulation pump control
  0000 0100 Combustion air fan (CAV)
  0000 1000 Glow Plug (flame detector)
  0000 1010 Fuel pump (FP)
  0011 0001 Circulation pump (CP)
  0100 0000 Vehicle fan relay (VFR)
  1000 0000 Yellow LED
Also mit Zirkulationspumpe. Obwohl ich weiss das da eine Dosierpumpe für 
den Kraftstoff vorhanden ist... oder ist FP was anderes?

D2 = 0x3C =
0b0011 1100
  0000 0001 Green LED present
  0000 0010 Spark transmitter
  0000 0100 Solenoid valve present (coolant circuit switching)
  0000 1000 Auxiliary drive indicator (whatever that means)
  0001 0000 Generator signal D+ present
  0010 0000 Combustion air fan level is in RPM instead of percent
  0100 0000 (ZH)
  1000 0000 (ZH)
Also hab ich ein "Solenoid valve"(?) einen Auxiliary drive indicator 
(ist das vielleicht das Ding was den Betrieb der Heizung nach "außen" 
hin zum Fahrzeug steuert/anzeigt? Also die CAN-Sendefunktion?)
Ein Generator-Signal (? Ist doch nur die popelige Spannungsüberwachung?)
Und ein "Combustion air fan level in RPM" (hmmm, drehzahl der Lüftung?)

D3 = 0xC0 =
0b1100 0000
  Unbekannte Werte

D4 = 0xE3 =
0b1110 0011
  0000 *    ?
  0000 1111 (ZH)
  0001 0000 Heating energy is in watts
  0010 0000 (ZH)
  0100 0000 Flame indicator (FI)
  1000 0000 Nozzle Stock heating
Also "Nozzle", "Flammwächter", (ZH), und etwas unbekanntes.

D5 = 0x3F =
0b0011 1111
  00** **** ?
  0010 0000 Ignition (T15) flag present
  0100 0000 Temperature thresholds available
  1000 0000 Fuel prewarming resistance and power can be read.
Auch hier nur das T15 Flag (meinen wohl "Klemme 15", also Zündung AN im 
Auto)

D6 = 0x80 =
0b1000 0000
  Unbekannte Werte

von Olli Z. (z80freak)


Lesenswert?

Michael R. schrieb:
> Ich glaube nicht, das der AVR das schafft
Es gibt hier im Forum bereits ein paar ältere Threads dazu. Die arbeite 
ich gerade durch. Es geht wohl schon, alles halbsowild. Vor allem reden 
wir hier nicht über einen HS-CAN, sondern MS-CAN mit 125kbit/s (gähn). 
Da langweilt sich doch wohl selbst ein 8-Bit 16 MHz Arduino und zwei 
SPIs ;-)

> Zum Update, du ließt deine E-Mails nicht, oder?
Na klar. Wenn da was hätte ankommen sollen, kam nichts. :-(

von Michael R. (mr-action)


Lesenswert?

Naja, Daten aus dem einen per SPI raus, in den anderen per SPI rein und 
nebenbei noch per UART oder so an den PC schicken... Achja, und das 
eigentlich zeitgleich in beiden Richtungen, weil du ja auch Kolisionen 
auflösen musst und so Späße... Also ich denke nicht, das das soooo easy 
für den kleinen AVR ist... Da macht sich ein Controller, der mal eben so 
kann und zwei CAN Controller direkt drin hat sicher ne ganze ecke 
besser... ;-)

Aber das sollte man echt wo anders diskutieren - zurück zum Thema: Bist 
du bei deiner Auswertung vom IDENT_WB_CODE nicht um ein Byte verrutscht? 
Das erste Datenbyte müsste doch 0x31 sein und nicht 0x0C?

von Olli Z. (z80freak)


Lesenswert?

Michael R. schrieb:
> Bist du bei deiner Auswertung vom IDENT_WB_CODE nicht um ein Byte verrutscht?
> Das erste Datenbyte müsste doch 0x31 sein und nicht 0x0C?

Aaargh! Stimmt. 0x0C ist ja noch teil des bestätigten Wbus Kommandos! 
|-/

von Olli Z. (z80freak)


Lesenswert?

So, also hier mal der Codevergleich
Mondeo: 4F 0A D1 0C 31 3C C0 E3 3F 80 00 09
Touran: 4F 0A D1 0C 31 3C C4 E7 3F 80 00 09
Das sind eht ja aus, als würde die TTV im Touran auch auf Standheizung 
(0x21) reagieren. Tut sie aber nicht!

von Alexander (Gast)


Lesenswert?

Hab da mal ne frage...

Wenn ich an der uhr 1533 die sofortheiztaste drücke.. sendet die uhr ja 
4 mal den AN befehl direkt hintereinander.. dann antwortet die heizung?! 
Aber wie oft?

Ist es normal das die uhr 4 mal AN sendet?

Ich hab mir mit nem arduino was programmiert um die heihung per wbus zu 
steuern...

Nur start ich die heizung per 1533 uhr und schalte sie direkt ab... 
(innerhalb der zeit wo 4 mal AN gesendet wird) geht uhr und heizung aus 
und heizung wieder an... mach ich das versetzt um 2 sekunden ist alles 
ok.

Ist das verhalten der uhr normal?

1533 uhr per wbus mit meinem gsm modul per arduino  gekoppelt.

Heizung ist ne alte thermotop ohne wbus.

Ich nutze den 12v schaltausgang der uhr.

Der wbus wird nur benutzt um die uhr mit nem fake telestart zu koppeln. 
So das ich an der uhr ausschalten kann usw. Oder die hsndgestsrtete/per 
timer gestelte uhr zum abbruch bringen ksnn..

Danke

von Olli Z. (z80freak)


Lesenswert?

Zu deiner Frage: Die Uhr sendet MAXIMAL vier Startbotschaften. Sie macht 
es solange, bis EINE Antwort (ACK) eintrifft. Kommt diese nicht, wie 
üblich und erwartet, direkt nach der ersten Botschaft (weil die 
Elektronik noch "schläft") so sendet sie ein weiteres mal. Nach viermal 
ist dann schluß.

Den Rest habe ich ehrlich gesagt nicht so ganz verstande. Wirkt etwas 
konfus auf mich, auch die Schreibweise... Wozu soll denn die Uhr dienen, 
wenn die Heizung ohnehin per Relais gestartet/gestoppt wird? Einen 
Schaltausgang und eine Sofort-Heizen Taste könntest Du doch auch mit dem 
Arduino realisieren.

Ein Telestart verwendet übrigens eine andere Wbus ID als ein Timer oder 
eine Heizung. Wenn Du vom Arduino alles richtig machst, erscheint im 
Display des Timers "TELE" - "ON".

von Alexander (Gast)


Lesenswert?

So hab den fehler gefunden.. hatte ein delay vergessen zu löschen...

Kann mir jemand sagen wie der befehl aussehen müsste wenn telestart 
60minuten standlüften sendet?

Und die antwort der heizung?
Sowie die statusabfrage und die antwort darauf?

Idealerweise noch das sauber ausschalten vom telestart und die antwort 
darauf?


Vielen lieben dank!

von Michael R. (mr-action)


Lesenswert?


von Denis R. (parabello)


Lesenswert?

langsam schwindet die Hoffnung...
Abend zusammen, ich befasse mich schon seit längerem mit dem Thema die 
TTV mit Hilfe eines Mikrokontrollers zum Laufen zu bringen, angefangen 
mit C-Control. Da ich ein Hobby Elektroniker bin und mir einiges an 
wissen fehlte-fehlt ist es nicht leicht für mich. So mit dem C-Control 
habe ich schnell aufgegeben da ich nicht weiterkam. Seit 2 Jahre spiele 
ich mit Arduino rum und habe das Thema wieder im Angriff genommen. Ich 
besitze eine TTV -als Zuheizer  Touran (J.2004)  und eine TTV als 
Standheizung aus BMW. Für den Touran habe ich damals eine Box bei 
Zuheizerupgrade gekauft in der eine C-Control steckt(meiner Meinung 
nach). nur Die "Blackbox" krigt die TTV aus BMW nicht an, warum auch 
immer ist aus dem Jahr 2013. Onkel Google hat mir einiges 
rausgeschmissen für Arduino aber nichts fenzte. ich benutze ein Arduino 
Nano + K-Line-Interface L9637 . und ich Kämpfe schon seit einige Zeit 
kriege sie einfach nicht ans Laufen, seit gestern habe ich rausgefunden, 
wen ich die Diagnose  Software WTT  starte und die Heizung wird 
initialisiert ich mein Adapter einschalte läuft sie an, ich war baff, 
das ist mir seit Monate nicht gelungen....   dachte es liegt am "Break" 
habe wie von Sascha gesagt mittels Transistor gelöst, hatt aber nichts 
gebracht.....  Kann mir vielleicht ein Tipp geben... welche Richtung ich 
suchen soll ???

hier mein Sketch:-------



int x=0;
int stat=0;
int st;
#define breakport 2
#define led  13
int incomingByte = 0;


void setup() {
 Serial.begin(2400, SERIAL_8E1);
 delay(1000);
 pinMode(breakport ,OUTPUT);
 pinMode(led ,OUTPUT);
}

void loop() {

//breack
if (st==0){
digitalWrite(breakport,HIGH);
delay(50); //50ms
digitalWrite(breakport,LOW);
delay(50); //50ms
st=1; //nur einmal Break
}
//24 03 21 3c 3a
Serial.write(0x24);//24 Funkfernsteuerung  ,F4 Software
Serial.write(0x03); //03
Serial.write(0x21); //21
Serial.write(0x3C); //1E
Serial.write(0x3A); // C8
//zur kontrolle alle 5 sekunden
digitalWrite(led,HIGH);
delay(2500);
digitalWrite(led,LOW);
delay(2500);

} //ende LOOP

muss ich bevor die Startsequenz kommt noch was schicken......komisch wen 
die WTT Software sich mit der TTV verbunden hat, akzeptiert sie meine 
Steuerung und startet auch...

: Bearbeitet durch User
von Olli Z. (z80freak)


Lesenswert?

Dein Break wird nicht ausgelöst, da du die Variable "st" nicht 
inialisierst. Die ist am Anfang von loop() NULL, du fragst auf 0 ab (das 
ist ein Unterschied in C!). Initialisiere die bei der Definition mit dem 
Wert 0.

von Denis R. (parabello)


Lesenswert?

Olli Z. schrieb:
> Dein Break wird nicht ausgelöst, da du die Variable "st" nicht
> inialisierst. Die ist am Anfang von loop() NULL, du fragst auf 0 ab (das
> ist ein Unterschied in C!). Initialisiere die bei der Definition mit dem
> Wert 0.

Hi, wen ich "st" nicht initialisiere  ist der Wert  "0",ich habe mit 
längeren Pausen überprüft das Programm läuft richtig ab.  habe   Loop 
verändert und zwar so:->

void loop() {
 //breack
while (st<4){
digitalWrite(breakport,HIGH);//HIGH   LOW
delay(50); //ootame 50ms
digitalWrite(breakport,LOW);
delay(50); //ootame 50ms

Serial.write(0xf4); //F4 Software 24 Funkfernsteuerung
Serial.write(0x03); //03
Serial.write(0x21); //21
Serial.write(0x1e); //1E
Serial.write(0xc8); //C8

delay(100);
st++;
}
delay(2000);
Serial.write(0xf4);//F4 Software, 24 Funkfernsteuerung
Serial.write(0x04); //03
Serial.write(0x44); //21
Serial.write(0x21); //1E
Serial.write(0x00); // C8
Serial.write(0x95); // C8
digitalWrite(led,HIGH);
delay(2500);
digitalWrite(led,LOW);
delay(2500);
}


Gestern zufällig rausgefunden......also wen der Break 4 mal durchläuft 
startet die TTV(von BMW) problemlos nur mit Arduino.....
K.A. irgendwie wacht die nicht beim ersten Mal auf, bei meinem Turi 
bleibt sie mit dem Sketch stille

Warum nicht beim einmaligen durchlauf????

: Bearbeitet durch User
von Olli Z. (z80freak)


Lesenswert?

Das ist Zufall. Es ist nicht definiert. C legt beim compilieren für die 
Variable "st" eine Speicherstelle fest. Diese ist dann nur per Zufall 
mit "00" initialisiert. Ich würde mich nicht drauf verlassen.

Als erstes würde ich die setup() Routine so gestalten:

void setup() {
  digitalWrite(breakport, HIGH);
  pinMode(breakport, OUTPUT);
  digitalWrite(led, HIGH);
  pinMode(led, OUTPUT);
  Serial.begin(2400, SERIAL_8E1);
  delay(1000);
}

Warum? Zum einen sollte man Ports setzen BEVOR man die Datenrichtung 
wählt. Das hat den Vorteil das dieser dann einen definierten Wert hat. 
Ähnlich wie bei Variablen wollen auch Port initialisiert werden. Daher 
zunächst ein, unschädlicher HIGH-Pegel.

Dann ist dein Break falsch. Im Ruhezustand liegt am W-Bus ein 
HIGH-Pegel. Der LIN-Transceiver ist nicht-invertierend. 2x 50ms sind 
m.E. auch zu lang, denn die Gesamtdauer des Break ist max. 50ms. Stelle 
die Werte mal auf 25ms (bzw. sogar 13ms) pro Periode:
  digitalWrite(breakport, LOW);
  delay(25);
  digitalWrite(breakport, HIGH);
  delay(25);

Den Befehl den Du zur Heizung schickst lautet:
  CMD 0x21 - "Parking heater on"
Es gibt aber neben dem Modus "Parking heater" auch noch:
  CMD 0x23 - "Turn on supplemental heating"
  CMD 0x20 - "Turn on heater (generic)"
Je nach Kodierung Deiner Heizung reagiert diese nur auf einen der 
Befehle. Versuche also auch mal die anderen Varianten.

Sicher weisst Du das das letzte Byte eine Prüfsumme ist, die sich ändert 
wenn sich die Bytewerte ändern. Also bei einem anderen CMD oder 
Adressbyte (24 anstelle F4) ist auch das CHK-Byte anders. Ich würde mir 
an Deiner Stelle gleich eine Routine zur Berechnung der Prüfsumme 
schreiben, das erleichtert die Tests. Stimmt die Prüfsumme nicht, 
reagiert die Heizung garnicht.
static unsigned char checksum(unsigned char *buf, unsigned char len, 
unsigned char chk)
{
  for (;len!=0; len--) {
    chk ^= *buf++;
  }

  return chk;
}

Hier hatte ich für mich mal einiges zum Thema dokumentiert, vielleicht 
hilft es Dir weiter: https://mk4-wiki.denkdose.de/grundlagen/w-bus/start

von Denis R. (parabello)


Lesenswert?

Olli Z. schrieb:
> Das ist Zufall. Es ist nicht definiert. C legt beim compilieren für die
> Variable "st" eine Speicherstelle fest. Diese ist dann nur per Zufall
> mit "00" initialisiert. Ich würde mich nicht drauf verlassen.
>
> Als erstes würde ich die setup() Routine so gestalten:
>
> void setup() {
>   digitalWrite(breakport, HIGH);
>   pinMode(breakport, OUTPUT);
>   digitalWrite(led, HIGH);
>   pinMode(led, OUTPUT);
>   Serial.begin(2400, SERIAL_8E1);
>   delay(1000);
> }
 habe ich so gemacht...

>
> Warum? Zum einen sollte man Ports setzen BEVOR man die Datenrichtung
> wählt. Das hat den Vorteil das dieser dann einen definierten Wert hat.
> Ähnlich wie bei Variablen wollen auch Port initialisiert werden. Daher
> zunächst ein, unschädlicher HIGH-Pegel.
>
> Dann ist dein Break falsch. Im Ruhezustand liegt am W-Bus ein
> HIGH-Pegel. Der LIN-Transceiver ist nicht-invertierend. 2x 50ms sind
> m.E. auch zu lang, denn die Gesamtdauer des Break ist max. 50ms. Stelle
> die Werte mal auf 25ms (bzw. sogar 13ms) pro Periode:
>   digitalWrite(breakport, LOW);
>   delay(25);
>   digitalWrite(breakport, HIGH);
>   delay(25);
>
ist er nicht weil,meine Schaltung sieht so aus: habe ein Transistor mit 
ihm ziehe ich den TX Pin des L9637 au Grund(dachte forher das es so 
besser ist), Arduino Pin High->schaltet den Transistor, der zieht mir 
die TX Leitung auf Grund ->nach 50 ms   Arduino Pin Low-> Transistor 
wird wieder gesperrt  50 ms warten und Startbefehl  schicken....
mein Loop weckt ja jetzt die Heizung auf, aber nur wen ich das 
Break-Teil min 4 mal durchlaufen lasse...... ich weiß da ist irgendwo 
ein Bock, aber wo.  Könnte es die Hardware sein???
Danke für Wiki,also sobald ich die Zeit ändere passiert überhaupt 
nichts...

> Den Befehl den Du zur Heizung schickst lautet:
>   CMD 0x21 - "Parking heater on"
> Es gibt aber neben dem Modus "Parking heater" auch noch:
>   CMD 0x23 - "Turn on supplemental heating"
>   CMD 0x20 - "Turn on heater (generic)"
> Je nach Kodierung Deiner Heizung reagiert diese nur auf einen der
> Befehle. Versuche also auch mal die anderen Varianten.
das weis ich
>
> Sicher weisst Du das das letzte Byte eine Prüfsumme ist, die sich ändert
> wenn sich die Bytewerte ändern. Also bei einem anderen CMD oder
> Adressbyte (24 anstelle F4) ist auch das CHK-Byte anders. Ich würde mir
> an Deiner Stelle gleich eine Routine zur Berechnung der Prüfsumme
> schreiben, das erleichtert die Tests. Stimmt die Prüfsumme nicht,
> reagiert die Heizung garnicht.
> static unsigned char checksum(unsigned char *buf, unsigned char len,
> unsigned char chk)
> {
>   for (;len!=0; len--) {
>     chk ^= *buf++;
>   }
>
>   return chk;
> }
hier oben gabs eine Exeltabelle daür,ja das mit der Prüfsumme habe ich 
auch verstanden....

>
> Hier hatte ich für mich mal einiges zum Thema dokumentiert, vielleicht
> hilft es Dir weiter: https://mk4-wiki.denkdose.de/grundlagen/w-bus/start

Hast du den bei dir was ans Laufen gekriegt???  wen ja mit welchen 
Kontroller??
Eine Frage noch, muss ich jedes Mal vor dem sende Break auslösen???? z.B 
wen ich den Befehl zum Heizung aus schicken will

: Bearbeitet durch User
von Olli Z. (z80freak)


Lesenswert?

Ok, mit dem Transistor ist das klar. Ich hab dafür einfach den TX Pin 
kurz als Ausgang definiert und es darüber gemacht.

Den BREAK muss man nur nach einer Kommunikationspause, bzw. Start 
senden. Er lässt die Elektronik in der Heizung "erwachen". Die Pause 
nach dem Low gibt der Heizung Zeit empfangsbereit zu werden. Es reicht 
den Break solange zu senden bis die Heizung antwortet und dann eret 
wieder wenn man eine längere Kommunikationspause macht. Einen genauen 
Wert dafür gibt es nicht, aber in der Praxis sind das so 20-30 Sekunden.

Ich setze auch den L9637 ein. Bei anderen LIN Transceivern muss man 
aufpassen, die lassen nämlich keinen langen LOW Pegel zu und man muss 
den Break mit einem Transistor erzeugen.

Sobald Du den Heizbefehl gesendet hast, sollte es von der Heizung eine 
Antwort geben. Diese kann positiv oder negativ sein. Erhälst Du sowas, 
bzw. überhaupt eine Antwort?

von Denis R. (parabello)


Lesenswert?

Also habe jetzt alle beide zum laufen gebracht, und zwar sende ich BREAK 
+Startbefehl mehrere Male hintereinander irgendwann nach 4-5 Mal springt 
die Heizung an und gibt mir eine Antwort, sehe es am HTerm. Wen ich 
jetzt nur einmal BREAK +Startbefehl sende bleibt alles ruhig. Ist es 
OKAY???? habe heute die damals gekaufte Black-Box ausgelesen, Sie sendet 
auch jede Sekunde BREAK +Startbefehl bis die Heizung nicht 
anspringt(insgesamt 20 mal, dan bleibt sie stehen). Bis dahin habe ich 
immer nur einmal gesendet und dachte sie Mus angehen.... Anscheinend ist 
es normal das man mehrmals hintereinander senden muss....   Die 
Standheizung aus BMW springt super an ,kann ein und ausschalten, die im 
Touran(Zuheizer) schalte ein->sofort aus, nachdem sie runtergefahren ist 
lässt sie sich nicht sofort wieder starten, aber das ist das kleinste 
Übel..
ich würde jetzt gerne wissen wie man Daten aus der Heizung abfragt.... 
das  wird schon  schwieriger https://www.youtube.com/watch?v=6zZjSFef4yA 
darauf bin ich gestoßen, nur bei mir funzt es nicht und das Programm ist 
schon für mich kompliziert.. mal schauen, alle Anfang ist schwer..

: Bearbeitet durch User
von Olli Z. (z80freak)


Lesenswert?

Grundsätzlich ist das so das man eine gewisse Zeit (Timeout) einen 
Einschaltbefehl wiederholt. Sobald die Heizungselektronik bereit ist und 
eine Antwort sendet, kann man von ausgehen das man nicht mehr mehrfach 
senden muss. Dennoch ist es gute Praxis auch hier eine Widerholung 
einzubauen, z.b. 4mal senden mit kurzer Wartezeit dazwischen. Der wbus 
kann ja kurzzeitig gestört gewesen sein.

Auch ist es völlig okay wenn die Heizung startet und danach wieder aus 
geht. Dafür ist ja der Erhaltungsbefehl zuständig. Dieser muss 
codetechnisch zum Startbefehl passen. Also, startest Du als Parking 
heater, musst Du auch als Parking heater erhalten. Der Erhaltungsbefehl 
wird, trotz angegebener Laufzeit beim Startbefehl, solange gesendet bis 
dieser negativ bestätigt wird. Es kann zig Gründe geben war die Heizung 
nicht an bleibt oder nach ner Zeit aus geht. Mangelnder Kraftstoff ist 
da nur eine. Aufschluß gibt hier eine Statusabfrage.

Es ist auch völlig okay wenn sich die Heizung nicht zig al 
hintereinander aus und einschalten lässt. Da gibt es eine Wartezeit, 
abkühlzeit.

Die Autohersteller versehen die Werksheizungen von Webasto gern mit auf 
sie zugeschnittener Firmware. Da können dann auch Abhängigkeiten zum 
Fahrzeug drin sein, wie das die Steuerung über den CAN Bus die 
Restkrqftstoffmenge ermittelt, oder ob es seit dem letzten Heizzyklus 
einen Motorstart gab, oder im Fall des Zuheizers ob der Motor überhaupt 
läuft und kalt ist.

Deine nächsten Schritte werden sein aus deinen Befehlen, Kommunikationen 
zu machen, also die Antworten der Heizung auszuwerten und entsprechend 
darauf zu reagieren. Ich würde das ganze grundsätzlich in einer 
Statemachine machen, so hast Du ja auch schon angefangen.

Wichtig ist keine Whileschleifen oder delays zu nutzen, da diesen den 
Programmzyklus hemmen und man evtl. wichtige Informationen "übersieht" 
während man irgendwo wartet. Für die Wiederholung sorgt schon die 
Arduino loop() selbst.

Die benötigst also eine globale Statusvariable die den Zustand dem SM 
hält. In der main loop kommt dann eine große if-Zweiung zum Einsatz die 
auf den Status, wie auch den Statusübergabg reagiert.

Neben dem Grundgerüst der SM brauchst Du dann noch eine Senderoutine die 
sich auch um die Antworten kümmert und zwar auch wieder 
nicht-blockierend. Ich würde vorschlagen mit einer Start-Funktion zu 
beginnen, z.b.
wb_start_ph(int runtime);
Die routine soll letztlich nur den Startbefehl zur Heizung schicken, 
ggf. mit einem Break davor und sofort zurückkehren. Jegliche Auswertung 
kommt im nöchsten Durchlauf. In der SM wird dann nach dem Aufruf der 
Status von ST_OFF auf ST_STARTING gesetzt.

In der nächsten Iteration wird darauf mit Abfrage der Rückmeldung 
reagiert. Also eine Routine die prüft ob am UART Daten eingegangen sind 
und eine gewisse Timeout zeit nicht überschritten wurde. Die Routine 
prüft auch ob die eingegangenen Daten vollständig und valide sind. Hier 
kommt wieder die Prüfsumme und das LEN Byte zum Einsatz. Ist die 
Nachricht vollständig, signalisiert sie es der Statusfunktion, welche 
ihrerseits überprüft ob die Antwort positiv oder negativ ist und setzt 
entsprechend den nächsten Status. So hangelt man sich weiter durch.

Das wichtige Konzept dabei ist, möglichst nirgendwo im code zu warten. 
Auch timeouts wartet man nicht ab, sondern setzt sich globale timer, 
entweder mit Abfragen oder richtige Timer mit Interrupts, welche dann 
wieder globale Statusvariablen füttern.

Ich weiss nicht wie gut Du im programmieren und umsetzten solcher 
Design,Patterns bist. Wenn Dir das alles zu theoretisch ist, können wird 
das auch gern Schritt für Schritt zusammen umsetzen. Wenn das 
Grundgerüst erstmal steht und die Verarbeitungsweise klar ist, ist der 
Rest nur noch Fleißarbeit. Auch die Abfrage von Statuswerten 
funktioniert auf diese Weise.

Je robuster und Protokollnäher die grundlegebdeb IO Funktionen sind, 
desto stabiler und besser wird später deine Anwendung sein.

von Denis R. (parabello)


Lesenswert?

Erstmals Danke für deine Hilfe.
Ich bin vom beruf Schlosser, habe mich aber schon immer für Elektrik 
interessiert, bin jetzt etwas weiter als ein Anfänger im 
programmieren...  so ungefähr habe ich dich verstanden. Das Größte 
Hindernis für mich ist das ich kein Englisch in der Schule gehabt habe, 
da muss ich schon fiel mit Übersetzer arbeiten, die aber nicht so 
gut(verständlich) übersetzen. Wen ich die Richtung weis dann könnte ich 
es schon hinbekommen, denke ich werde  aber deine Hilfe noch brauchen. 
Machst du fiel mit Arduino????
meine Frage wie soll ich vorgehen wen ich z.B. Temperatur abfragen will 
"Command 0x50" ? ?  Wie sieht der Befehl aus -> TX  f4 04 50 21 00 95 
Zurück kommt dann  RX 4f 03 c4 00 88 42(ist nur ein Beispiel)  wie werte 
ich die Daten aus, wo ist/steht die Temperatur oder andere Sachen, wie 
mache ich es praktisch.
in der W-Bus library sind ja die Befehle hinterlegt....

von Olli Z. (z80freak)


Lesenswert?

Fertiges klicki-bunti gibts nur im YT-Video, die Praxis ist voll mit 
fiesen kleinen aber wichtigen Details.

Du musst dich halt jetzt auch entscheiden - willst Du einen schnellen 
Erfolg ohne viel Einarbeitung, dann nutz eine fertige Library. Oder 
willst Du es wirklich verstehen und optimal auf Deine Bedürfnisse 
anpassen, mach es selbst und setz das um was Du brauchst.

Jetzt wieder mit Temperaturabfragrn anzufangen, obwohl Du noch keine 
vernünftige Kommunikationsroutine hast, halte ich für sinnlos. Das wird 
Dich in der Umsetzung nicht weiter bringen, fürchte ich...

von Michael R. (mr-action)


Lesenswert?

Hi Dennis,

auch wenn es bei dir mit dem Englisch ja eher schlecht aussieht, sei an 
dieser Stelle mal wieder auf die tolle Beschreibung in der libwbus 
verwiesen: 
https://sourceforge.net/p/libwbus/libwbus/ci/master/tree/webasto_wbus.txt

Da drin steht wirklich alles, was man über die Kommunikation wissen 
will... Zumindest habe ich meine Heizungen damit alle ohne Probleme ans 
laufen bekommen und als Bonus muss man sich die Infos nicht im Code der 
lib zusammensuchen...

Ansonsten hat Olaf recht, du solltest erst mal aufräumen und gucken, das 
die Checksumme und die Adressen automatisch gesetzt werden... Der Inhalt 
der Kommandos ist danach ein Kinderspiel, weil man ja fix mal was 
ausprobieren oder ändern kann....

von Denis R. (parabello)


Lesenswert?

Okay,werde es so machen....

von Denis R. (parabello)


Lesenswert?

Michael R. schrieb:
> Hi Dennis,
>
> auch wenn es bei dir mit dem Englisch ja eher schlecht aussieht, sei an
> dieser Stelle mal wieder auf die tolle Beschreibung in der libwbus
> verwiesen:
> https://sourceforge.net/p/libwbus/libwbus/ci/master/tree/webasto_wbus.txt
>

Hallo  Michael, kannst du mir vielleicht helfen, ich komme da nicht so 
richtig klar. Wenn ich das richtig verstanden habe kann ich die 
Umwälzpumpe ansteuern . "Command 0x24   Circulation pump external 
control" richtig und der Komplette Befehl wäre dann -> F4 03 24 3B E8 
richtig???  habe es versucht bleibt aber alles ruhig....

von Denis R. (parabello)


Lesenswert?

Hab's  -> f4 06 45 02 05 07 d0 67  dosirPumpe ein für 5 sekunden

von Sascha W. (sascha-w)


Lesenswert?

Denis R. schrieb:
> Hab's  -> f4 06 45 02 05 07 d0 67  dosirPumpe ein für 5 sekunden

Dosierpumpe und Zirkulationspumpe sind ja auch zwei verschiedene!
Die erste pumpt den Kraftstoff, hört man durch das typische Klicken. Die 
zweite befördert das Kühlwasser, glaube nicht das man da von aussen groß 
was hören kann.

Sascha

von Denis R. (parabello)


Lesenswert?

Ich weiß, wollte nur die Umwälzpumpe ansteuern und habe als erste aber 
die Dosier pumpe geschafft.....   f4 06 45 04 05 00 c8 7e für die 
Umwälzpumpe.

von Michael R. (mr-action)


Lesenswert?

Na, die Frage hat sich ja von alleine gelöst...

Zum Thema hören, die Dosierpumpe hört man wie gesagt klackern - die 
Umwälzpumpe hört man aber auch gut - sowohl im als auch außerhalb des 
Autos...

von saša (Gast)


Lesenswert?

from my experience, 1533 will wake up the bus.
i am using TT C Diesel from old Mazda 6 programmed as "zuheisser".
and when pin 1 from 6 pin connector(X1) IS CONNECTED TO WBUS PIN on 1533 
i can turn on and of the furnace.
problem is that furnace will be on for max 60 mins...

von Thomas (kosmos)


Lesenswert?

denke die 60 Minuten Begrenzung ist eher dazu da um die Batterie wegen 
des Lüfters nicht leer zu saugen.

von alex h (Gast)


Lesenswert?

hi ich hab eine thermotop c z d aus einrm bmw e39


mit der thermotest diagnose mit dongle kann ich die telegramme loggen!

kennt sich da jemand aus?

3f diagsoftware
länge
6b heizgerät
daten1
.
.
daten x
checksumme


die abfragen wie bei einer wbus heizung.. zb nach werten x50 x05 und 
richtiger checksumme ergeben nix!

anscheind ist das telegramm identisch aber es werden andere werte 
genutzt!

jemand ne idee?

danke!

von Olli Z. (z80freak)


Lesenswert?

Replay Attacke versuchen. Daten mitloggen, isolieren und mit eigener 
Software auf den Bus senden. Wenn das klappt versuchen die Telegramme zu 
isolieren um draus schlau zu werden. Binärbaum Technik, hälfte senden 
schauen ob das gesuchte passiert, wenn ja davon die Hälfte, wenn nein 
die andere Hälfte. Bis runter zum Einzeldiagramm.
Poste doch mal ein Log in dem du die Heizung abfrägst oder startest.
Und, wenn verfügbar auch das Diagramm eines Logicanalyzers dazu.

von alex h (Gast)


Lesenswert?

ich hab sogar ein video bzw screen capture...

eigentlich fehlt mir derzeit nur eine sache!

die berechnung des widerstandes des flammenwächters!

HEX DEC OHM    ohm/dec
3b   59   0,405  0,0068644068
3c   60   0,414  0,0069
3d   61   0,424  0,00695
40   64   0,455  0,007109375
42   66   0,476  0,0072121212
48   72   0,542  0,0075277778
4b   75   0,578  0,0077066667
4c   76   0,59    0,0077631579
4d   77   0,603  0,0078311688
4e   78   0,615  0,0078846154
5a   90   0,784  0,0087111111
5f   95   0,865  0,0091052632
61    97   0,9      0,0092783505

hex ist klar
dec ist hex in dec
ohm ermittelt aus der software
ohm/dec ohm durch dezimal und da sieht man.. nicht linear.... und ich 
weis nicht weiter.. die software hat irgend eine berechnungsgrundlage...

ich komme nicht weiter!

von Olli Z. (z80freak)


Lesenswert?

Ich verstehe zwar grad nicht was Du erreichen willst und wie, aber der 
Flammwächter dürfte ein NTC oder PTC sein und die haben nie eine lineare 
Kurve. Da wird vermutlich auch eher nichts berechnet, sondern über eine 
Lookuptabelle gearbeitet und Zwischenwerte interpoliert.

von alex h (Gast)


Lesenswert?

ich denke auf der einen seite hast du recht...auf der anderenseite...

hab ich die vermutung dss da trotzdem eine berechnung hinter steht...

zurzeit arbeite ich mit screencapture der diagnosesoftware.. dem 
telegram die komplette bandbreite aus... mit viel eiswasser und 
kältespray fehlen mir von 96 werten nur noch 30 stück...

ich hab ein loses steuergerät ein 20a 24v konstanter und den glühstift.


bei einer wbus heizung sind 2 hexwerte milliohm..

warum sollte es bei dem steuergerät anders sein?!

ich arbeite heute ne excel tabelle aus und ein diagramm...


nächste option wäre ein 0-2 ohm poti und damit weiter auflösen...


wie komm ich nur weiter?

von MichaR (Gast)


Lesenswert?

Die andere Frage wäre: Warum? Die Werte sind für einfaches an und aus 
doch uninteressant und für Diagnose haste ja den PC...

von alex h (Gast)


Lesenswert?

warum?

weil ich mich festgebissen hab und zurzeit mir das nur noch fehlt :(

von Ölfinger (Gast)


Lesenswert?

Hallo Fricklergemeinde

Ist in dem Fred noch Bewegung?

Ich habe mit bei eBay eine Webasto TT - C aus einem verunfallten Touareg 
geschossen und will die als Standheizung im meine WoMo Bj.85 einbauen. 
Da trifft die elektrische Steinzeit auf Microelektronik :-)
Mehr als 12Volt und Masse gibt es in dem Ducato nicht.
Zu Beginn werde ich schon froh sein wenn die TT schon mal als 
zusatzheizer laufen würde. (Die orginalheizung über den motorkreislauf 
ist eher ein Witz)

Ich stehe jetzt vor der Option mit eine Zeitschaltuhr von Webasto zu 
kaufen - oder was meinem Frickeldrang eher entgehen kommt die 
Ansteuerung mit einem Arduino selbst zu bauen.

Elektronisch bin ich gut unterwegs - Beim Software schreiben bin ich 
aber nie über 200 Zeilen Code rausgekommen.
Um da auch eher Java oder Python. Mit Ausnahme von ein paar Arduino- 
Scrips auch kein C.

Ich habe zwar schon ein paar mal den Thread hoch und runter gelesen, bin 
mir aber noch nicht so im Klaren wie ich anfangen soll.
Am liebsten wäre es mir wenn ich erst mal versuche die Steuerung mit dem 
Simulator ans laufen zu bringen und dann erst die TT zu quälen.
Welche Hardware brauche ich für den Simulator? Oder läuft die SW auch 
auf einem Arduino?

Gruß
Andreas

von Sascha W. (sascha-w)


Lesenswert?

Hallo Andreas,

wenn wieder mal jemand eine Frage hat dann geht es hier weiter.

Wenn du dich auf den von mir hochgeladenen Simulator beziehst - das ist 
ein Windowsprogramm. Als Hardware brauchst du eine Anpassung von (USB) 
-> Seriell -> K-Line/Linbus. Das kann man mit einem entsprechendem 
Treiber machen oder mit paar Transistoren. Wenn du nur den Arduino gegen 
den Simulator testen willst reicht auch eine Diode und ein Widerstand 
und am Arduino natürlich auch kein Treiber.
Die Heizung meckert aber auch nicht wenn man Ihr Mist sendet :)
Mit dem Arduino solltet du das Problemlos hinbekommen - vielleicht sogar 
mit 200 Zeilen.
Meine Fernbedienung hab ich in ASM programmiert, so das dir das auf dem 
Arduino und mit deinen Programmierkenntnissen nicht viel nützt.
Vielleicht kann Olli noch was beisteuern.


Sascha

von Olli Z. (z80freak)


Lesenswert?

Ob ich da mehr zu beisteuern kann...? Sascha ist hier eigentlich der 
Wbus-Gott ;)

Ich sag immer „Der nächste Winter kommt bestimmt“ und dann geht es auch 
hier sicher wieder fleißig weiter :-)
Ich selbst hab nur ne TT-V und meine mich zu erinnern das die 
Kommunikation da anders ist, aber das Prinzip, der W-Bus, ist dasselbe.
Arbeite dich einfach schichtweise hoch. Also zuerst 
Bitübertragungsschicht. Und persönlich würde ich Dir eher empfehlen die 
Lowlevel Routinen auf Hardware zu machen.
Dann die Sende und Empfangsroutinen für einzelne Frames.
Damit kannst Du dann schonmal einzelne Befehle schicken und Antworten 
empfangen.
Um dann ganze Abfolgen im Griff zu haben, z.B. Starten und heizen, 
empfiehlt sich der Einsatz, bzw. das Designpattern einer Statemachine.
Weitere Details und Hilfen gern hier.

von Ölfinger (Gast)


Lesenswert?

Hi Sascha,

Vielen Dank für die überraschend schnelle Antwort.
Ich hab zum Glück noch eine alten Notebook mit echter RS232 gefunden der 
mir den Murks mit dem USB->Seriell erspart, so dass ich mir nur die 
W-Bus Schnittstelle bauen muss.

Irgendwo weiter oben hab ich gelesen „ mit Hterm den Traffic 
mitschneiden .....
Wie soll das an der RS332 gehen ?
Sobald Hterm an der Schnittstelle ist ist die Adresse vergeben so dass 
die Webasto Thermo Test nicht mehr darauf zugreifen kann.
Oder sollte damit gemeint sein sich über die w-Bus Schnittstelle 
zwischen Heizung und Uhr/Fernsteuerung klemmen?

Gruss
Andreas

von Olli Z. (z80freak)


Lesenswert?

Mithören war da die Ansage. Wenn Du dir z.B. ein einfaches 
Diagnoseinterface baust, z.B.: 
https://mk4-wiki.denkdose.de/grundlagen/wbus_diagnoseadapter_bauen/start
kannst Du versuchen über die Webasto ThermoTest Software die Heizung 
anzusprechen.
Das was dann da über die Leitung geht sollte man sich näher ansehen :-)
Hierfür kannst Du dann Hterm nutzen, von einem weiteren PC aus, oder 
eine Software die das auf Treiberebene macht. Oder halt auch mit einem 
Logicanalyzer für ein paar Euro.

Wenn Du die Bytes des Nachrichtenframes im Voraus "berechnest" dann 
kannst Du durchaus mit HTerm auch einfache Befehle senden und schauen 
wie die Heizung darauf reagiert. W-Bus ist ja im Prinzip ein einfacher 
Serialbus mit 2400 Baud 8E1 (gerade Parity). Wichtig zu wissen: Die 
Heizung selbst sendet von sich aus nichts, sie reagiert nur auf Deine 
Kommandos.

Hier hab ich mal etwas zusammengefasst und da kannst Du dich vielleicht 
noch etwas einlesen: https://mk4-wiki.denkdose.de/grundlagen/w-bus/start

Das größte Problem bei einfachen Serial-Schnittstellen ist die Erzeugung 
des BREAK Signals. Die ist aber überaus wichtig, weil sonst gar keine 
Kommunikation stattfinden wird. Ich fand es immer wesentlich einfacher 
die von einem Arduino per IO-Pin zu erledigen zu lassen, weil das über 
Serial zu machen immer ein Gewürge ist.

von Ölfinger (Gast)


Lesenswert?

Olli Z. schrieb:
> Ob ich da mehr zu beisteuern kann...? Sascha ist hier eigentlich
> der Wbus-Gott ;)
>
> Ich sag immer „Der nächste Winter kommt bestimmt“ und dann geht es auch
> hier sicher wieder fleißig weiter :-)
> Ich selbst hab nur ne TT-V und meine mich zu erinnern das die
> Kommunikation da anders ist, aber das Prinzip, der W-Bus, ist dasselbe.
> Arbeite dich einfach schichtweise hoch. Also zuerst
> Bitübertragungsschicht. Und persönlich würde ich Dir eher empfehlen die
> Lowlevel Routinen auf Hardware zu machen.
> Dann die Sende und Empfangsroutinen für einzelne Frames.
> Damit kannst Du dann schonmal einzelne Befehle schicken und Antworten
> empfangen.
> Um dann ganze Abfolgen im Griff zu haben, z.B. Starten und heizen,
> empfiehlt sich der Einsatz, bzw. das Designpattern einer Statemachine.
> Weitere Details und Hilfen gern hier.

Hallo Olli,

Vielen Dank für die tips, ich werd dich wieder nerven sobald sobald die 
Hardware mit dem Linbus Driver zuckt.
Aber im Moment ist es ja noch so warm dass mich alleine der Gedanke den 
Lötkolben anzufassen ins schwitzen bringt.

Gruß
Andreas

von Alban G. (alban_g)


Lesenswert?

Hat jemand zur Zeit Interesse die Telestart von Sacha nachzubauen ?

Ich werde die Tage die Platine bestellen, bekomme Sie aber 3x .

Hätte also 2 übrig.

Mfg Alban

von SMax-Progger (Gast)


Lesenswert?

Das ist mir alles viel zu nerdig.

von Nathanael R. (naru)


Lesenswert?

Hallo zusammen,

es ist zwar schon eine Weile Ruhe hier, aber vielleicht hilft mein 
Beitrag doch dem ein oder anderen.
Ich habe eine Webasto Thermo Top Evo 5, also eine Heizung mit der 
neueren Wbus Version.

Außerdem hab ich das original Webasto Diagnose Teil für die neue Thermo 
Test Software (V3.x).

Zumindest das Byte welches den Betriebszustand angibt hat sich ja 
geändert im Vergleich zu dem was noch in der libwbus steht.
Ich habe also mal mit hterm am PC aufgezeichnet was die Thermo Test 
Software mit der Heizung austauscht.

Während der Diagnose sendet die Software endlos abwechselnd zwei Befehle
1
F4 0D 50 30 5F 60 61 0A 2A 3D 2B 23 0E 28 F4
 und
1
F4 17 50 30 1E 5A 33 03 01 04 02 58 59 32 10 15 13 34 24 2C 12 11 0C 51 B7
Die sehen deutlich länger aus als alles was ich sonst so gesehen hab.
Adresse Länge und Checksumme sind klar, auch der Befehl 0x50 macht Sinn 
(Read operational information registers - laut libwbus).
Statt einem weitern Byte als Paramter für den 0x50 Befehl kommt aber 
jetzt ein ganzer Haufen an Bytes. Was die bedeuten hab ich noch nicht 
herausgefunden.

Die Antwoten konnte ich aber zum Teil dekodieren und habe daher jetzt 
auch eine Liste an Betriebszuständen mit entsprechenden Hexcodes.

Die Antwort auf F4 0D 50 30 5F 60 61 0A 2A 3D 2B 23 0E 28 F4
sieht so aus:
1
ADRLENCMD00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
2
4F 1C D0 30 5F 00 63 60 00 62 61 00 01 0A 0D 2A 00 3D 03 20 2B 00 23 36
3
4
21 22 23 24 25 CHK
5
0E 34 9E 28 99 F5

 - Byte 20 ist die Umwälzpumpe in Prozent (Wert zwischen 0 und 200).

 - Byte 22 und 23 ist die Spannung. Genau wie in der libwbus 
beschrieben.

 - Byte 25 ist das state byte.

Ich habe also die Heizung einmal laufen lassen und die Thermo Test 
Software recorded und bin so auf folgende Zustände gekommen:
1
0x71: Wartezustand
2
0x73: Motor Check
3
0x75: Vorglühen 1
4
0x76: Vorglühen 2
5
0x79: Start1
6
0x7A: Start2
7
0x7B: Start3
8
0x7C: Start4
9
0x7D: Start5
10
0x7E: Start6
11
0x7F: Glühstiftrampe
12
0x80: Flammwächter Messung1
13
0x81: Flammwächter Messung2
14
0x99: Stufenlose Heizleistungsregelung
15
0x91: Teillastausbrand
16
0x95: Kühlung1
17
0x97: Kühlung2
18
0x8F: Pause
19
0x73: Motor Check
20
0x77: Vorglühen Teillast, Start
21
0x82: Start1 Teillast, Start
22
0x83: Start2 Teillast, Start
23
0x84: Start3 Teillast, Start
24
0x85: Start4 Teillast, Start
25
0x86: Start5 Teillast, Start
26
0x87: Start6 Teillast, Start
27
0x88: Glühstiftrampe Teillast, Start
28
0x89: Flammwächter Messung1 Teillast, Start
29
0x8A: Flammwächter Messung2 Teillast, Start
30
0x9A: Stufenlose Heizleistungsregelung-Halten
31
0x91: Teillastausbrand

Die Liste ist sicher nicht vollständig.
Wenn ich Zeit habe schreibe ich vielleicht einen Simulator und gucke was 
die Software draus macht.

Die Antwort auf
1
F4 17 50 30 1E 5A 33 03 01 04 02 58 59 32 10 15 13 34 24 2C 12 11 0C 51 B7
sieht so aus:
1
ADRLENCMD00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
2
4F 37 D0 30 1E 25 D0 5A 00 1E 39 33 6C 03 00 01 03 04 00 02 00 58 00 23
3
4
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
5
0B 59 00 00 05 32 00 10 01 15 7F 13 03 D9 34 04 6A 24 00 2C 00 12 C8 11
6
7
45 46 47 48 49 50 51 52 CHK
8
13 88 0C 68 51 00 00 00 CD

 - Byte 2 und 3 ist das Gebläse in rpm

 - Byte 9 ist die Kraftstoffpumpe, 0x6C=5.4Hz; 0x35=2.65Hz

 - Byte 13 könnte ein On/Off Byte sein. Es ist 0x00 im Wartezustand und 
0x03
wenn die Heizung läuft. Vielleicht steht 0x03 für Standheizen und 0x02 
würde für Zuheizen stehen.

 - Byte 29 ist Flammenerkennung 0x00 oder 0x01

 - Byte 33 und 34 ist der Widerstand des Glühstabs in mOhm (siehe 
libwbus)

 - Byte 39 ist der Glühstab in Prozent (wieder 0..200)

 - Byte 43 ist die Heizleistung in Prozent (0..200)

 - Byte 48 und 49 ist die Leistung in Watt. Die wird nicht mehr 
übertragen
wenn die Heizung mal im "Pause" Zustand war (0x0F), bleibt danach 
einfach auf 0. Byte 43 wird noch richtig geupdated.

 - Byte 51 ist die Temperatur+50 (siehe libwbus)

Die restlichen Bytes sind immer konstant geblieben bis auf Byte 3, 6 und 
11 beim ersten Befehl und Byte 7, 21 und 31 hier. Keine Ahnung was die 
bedeuten.

Mit diesen zwei Befehlen und dem Start und Stop Befehl habe ich mir 
jetzt eine Arduino Steuerung gebastelt, läuft (fast) problemlos.

von Nathanael R. (naru)


Lesenswert?

Simulator ist fertig, hier die vollständige Liste aller Statuscodes:
1
0x63: TRS-cooling .................................... TRS-Kühlung
2
0x64: Rest heat utilisation .......................... Restwärmenutzung
3
0x65: State activated ................................ ADR-Zustand aktiviert
4
0x66: Ready .......................................... Bereit
5
0x67: Burner regeneration ............................ Brennerregeneration
6
0x68: Initialisation process ......................... Initialisierungsprozess
7
0x69: Sleep_Mode ..................................... Sleep_Mode
8
0x6a: Continue fuel priming .......................... Fortsetzung Kraftstofffördern
9
0x6b: Continue stabilization, cold start ............. Fortsetzung Stabilisierung, Kaltstart
10
0x6c: Continue stabilization, warm start ............. Fortsetzung Stabilisierung, Warmstart
11
0x6d: After-run ramp ................................. Nachlauframpe
12
0x6e: Rest heat utilisation .......................... Restwärmenutzung
13
0x6f: Stabilization, cold start ...................... Stabilisierung, Kaltstart
14
0x70: PROCESSOR OFF .................................. Prozessor aus
15
0x71: WAIT STATE ..................................... Wartezustand
16
0x72: Continue stabilization ......................... Fortsetzung Stabilisierung
17
0x73: MOTOR CHECK .................................... Motor Check
18
0x74: FLAME MONITOR COOLING .......................... Flammwächterkühlung
19
0x75: PRE-GLOWING1 ................................... Vorglühen1
20
0x76: PRE-GLOWING2 ................................... Vorglühen2
21
0x77: PRE-GLOWING2 Partial Load Start ................ Vorglühen Teillast, Start
22
0x78: FLAME MONITOR CALIBATION Start ................. Flammwächterkalibrierung, Start
23
0x79: START 1 ........................................ Start1
24
0x7a: START 2 ........................................ Start2
25
0x7b: START 3 ........................................ Start3
26
0x7c: START 4 ........................................ Start4
27
0x7d: START 5 ........................................ Start5
28
0x7e: START 6 ........................................ Start6
29
0x7f: GLOW PLUG RAMP ................................. Glühstiftrampe
30
0x80: FLAME MONITOR MEASURMENT1 ...................... Flammwächter Messung1
31
0x81: FLAME MONITOR MEASURMENT2 ...................... Flammwächter Messung2
32
0x82: START1 Partial Load Start ...................... Start1 Teillast, Start
33
0x83: START2 Partial Load Start ...................... Start2 Teillast, Start
34
0x84: START3 Partial Load Start ...................... Start3 Teillast, Start
35
0x85: START4 Partial Load Start ...................... Start4 Teillast, Start
36
0x86: START5 Partial Load Start ...................... Start5 Teillast, Start
37
0x87: START6 Partial Load Start ...................... Start6 Teillast, Start
38
0x88: GLOW PLUG RAMP Partial Load Start .............. Glühstiftrampe Teillast, Start
39
0x89: FLAME MONITOR MEASUREMENT1 Partial Load Start .. Flammwächter Messung1 Teillast, Start
40
0x8a: FLAME MONITOR MEASUREMENT2 Partial Load Start .. Flammwächter Messung2 Teillast, Start
41
0x8b: FULL LOAD ...................................... Vollast
42
0x8c: RAMP DOWN ...................................... Auslauf
43
0x8d: PARTIAL LOAD ................................... Teillast
44
0x8e: RAMP UP ........................................ Hochlauf
45
0x8f: PAUSE .......................................... Pause
46
0x90: BURN-OUT Full Load ............................. Vollastausbrand
47
0x91: BURN-OUT Partial Load .......................... Teillastausbrand
48
0x92: BURN-OUT Start ................................. Startausbrand
49
0x93: BURN-OUT Partial Load Start .................... Teillast-Start-Ausbrand
50
0x94: BURN-OUT Overheating ........................... Überhitzungsausbrand
51
0x95: COOL 1 ......................................... Kühlung 1
52
0x96: FLAME MONITOR CALIBRATION ...................... Flammwächterkalibrierung
53
0x97: COOL 2 ......................................... Kühlung 2
54
0x98: Boost .......................................... Boost
55
0x99: CONTINUOUS COOLANT TEMPERATURE CONTROL ......... Stufenlose Heizleistungsregelung
56
0x9a: CONTINUOUS COOLANT TEMPERATURE CONTROL HOLD .... Stufenlose Heizleistungsregelung-Halten
57
0xa0: Stabilization, warm start ...................... Stabilisierung, Warmstart
58
0xa1: Start ramp, cold start ......................... Startrampe, Kaltstart
59
0xa2: Start ramp, warm start ......................... Startrampe, Warmstart
60
0xa3: Residual heat utilization test ................. Test Restwärmenutzung

Bei allen anderen Codes zeigt die TT Software <unknown Code>.
Wo genau die Grenze zwischen alter Wbus und neuer Wbus ist ist mir nicht 
ganz klar (falls es überhaupt eine klare Grenze gibt). Der normale 
"Ruhezustand" bei meiner Heizung ist jedenfalls 0x71 und nicht etwa 
0x66.
0x66 habe ich im normalen Betrieb noch nicht gesehen.

von Denis R. (parabello)


Lesenswert?

Danke dir,Ist eine Weile her, das ich da was angesteuert hatte. War eine 
TTV mit Arduino.  Mit freundlichen Grüßen

von Ulrich T. (ulrich78)


Lesenswert?

Super vielen Dank, sehr nützlich!

von Benni (Gast)


Lesenswert?

Hallo, ich habe eine STC 2000 Luftstandheizung und dort das 
Thermoconnect Teil dran. Egal welche Temperatur ich einstelle in der 
App, egal ob es warm oder kalt ist im Auto, die Heizung läuft auf Max.
Habe ich da in der App einen falschen Ausgang drin? In der erweiterten 
Einstellungen zum Ausgang gibts:
- deaktiviert
- aktiviert
- impulsregelung
- parallelregelung mit w bus
- parallelregelung mit w bus und impulsregelung

Kann das damit zusämmenhängen?

Aktuell ist parallelregelung mit w bus eingestellt. Möchte da aber nix 
verändert. Webasto Support versteht das Problem nicht.. und sonst finde 
ich bei Google nix dazu.. Könnt ihr mir helfen? Danke!

von Sascha W. (sascha-w)


Lesenswert?

Die Heizung kennt doch eigentlich nur Voll- / Teillast abhängig von der 
Kühlwassertemperatur. Um auch noch nach der Innenraumtemperatur zu 
regeln müsste die ja irgendwo gemessen werden - hast du da irgendwo 
einen sinnvollen Istwert?

Sascha

von Joachim B. (jar)


Lesenswert?

Sascha W. schrieb:
> Die Heizung kennt doch eigentlich nur Voll- / Teillast abhängig von der
> Kühlwassertemperatur. Um auch noch nach der Innenraumtemperatur zu
> regeln müsste die ja irgendwo gemessen werden

übernehmen das nicht die PKW eigenen Steuergeräte?

jedenfalls wurde eine Webasto immer el. zwischengebaut, von 2003 sogar 
so brutal das es selbst die Innenlüfter steuerte. Das war dann so das 
der Webastostromkreis mit 20A abgesichert war, obwohl mein Innenlüfter 
mit 30A lief, damit zur Folge hatte, wer nicht nach Anleitung die 
Lüfterdrehzahl drosselte den bestrafte die Webasto mit kaltem PKW, die 
20A war einfach durch!
Noch schlimmer, weil Wasser in den Luftschacht eindringen konnte, das 
die Lüfterachse rostete, was sie schwergängiger machte, verursachte auch 
mehr Motorstrom.
Ein falsch oder schlampig montierter Pollenfilter bei der Inspektion 
reichte.

: Bearbeitet durch User
von Sascha W. (sascha-w)


Lesenswert?

Jain,
früher war das wie von dir beschrieben, die Webasto hatte ein 
PWM-Steuergerät mit dem der Lüfter von der Bordelektrik getrennt und 
direkt angesteuert wurde. Da musste man auch immer dran denken die 
Lüftung auf die Scheibe zu stellen und die Temperatur hoch zu drehen 
damit die Klappen in der Lüftung richtig standen - sonst war es früh 
trotz Heizung kalt im Auto.
Aktuell gibts für alle (weiß nicht) neueren Fahrzeuge ein Gateway auf 
CAN-Bus, über das die Heizung sowohl den Lüfter als auch die 
Klappenverstellung ansteuern kann. Das heißt aber nicht das dabei die 
gesamte Klimasteuerung im Auto aktiv ist - zumidest zeigt die da auch 
nix an, daher glaube ich nicht das da die Temperatur entsprechend 
geregelt wird. Evl. könnte sich die Heizung aber über den CAN-Bus die 
Innenraumtemperatur besorgen.

Sascha

von Joachim B. (jar)


Lesenswert?

Sascha W. schrieb:
> neueren Fahrzeuge ein Gateway auf
> CAN-Bus

das meinte ich und vermutete es auch

Sascha W. schrieb:
> Evl. könnte sich die Heizung aber über den CAN-Bus die
> Innenraumtemperatur besorgen.

ist durchaus denkbar, das muss nicht zwingend am w-bus sichtbar sein!

von Sascha W. (sascha-w)


Lesenswert?

Joachim B. schrieb:
> ist durchaus denkbar, das muss nicht zwingend am w-bus sichtbar sein!
dann müsste die Reglung aber eher von der Klimasteuerung des Fahrzeugs 
vorgenommen werden, und dann könnte die über die App gesetzte Temperatur 
ggf. auch im Auto zu sehen sein?!
Kann erst mal nur Benni klären wie seine Heizung mit dem Fahrzeug 
gekoppelt ist. Ohne passende Kopplung kann man in der App warscheinlich 
sonst was einstellen - es hat dann halt keine Wirkung. Oder der 
Temperatursensor ist in der ThermoConnect irgendwo hintem 
Armaturenbrett.

Sascha

von Joachim B. (jar)


Lesenswert?

Sascha W. schrieb:
> Kann erst mal nur Benni klären

eben wir können nur spekulieren!

Nathanael R. schrieb:
> Simulator ist fertig, hier die vollständige Liste aller Statuscodes:

trotzdem eine Wahnsinnsleistung!

was habe ich seit 2003 alles versucht den Zicken meiner beiden Webasto 
auf den Grund zu kommen, etliche Dongles gekauft, selber gebaut und 
trotzdem nie Erfolg gehabt.

Selbst wenn man zu einer Webasto Service Stelle geht wird man abgezockt.

Vielleicht (ganz großes VIELLEICHT) meinte der Mensch es auch nett, aber 
Unterspannungsabschaltung hätte er mir ja nach Auslesen für 100,-€ auch 
sagen können, aber ein schlapper Akku bleibt ein schlapper Akku, da 
hilft auch Nachladen nichts, hat den Akkuneukauf nur verzögert aber im 
Winter nicht für ein warmes Auto gesorgt, wäre ich böse würde ich das 
Umsatzgenerierung nennen!
Es hätte mich ja noch einmal zu diesem "Service" bringen können.

von AufAchse (Gast)


Lesenswert?

Guten Tag, ich habe eine Frage zur Steuerung einer Webasto AirTop 
2000STC!

Ich habe mich durch diesen Forenthread gelesen und bin über das 
Fachwissen sehr beeindruckt! Daher meine Anfrage hier, in der Hoffnung 
dass ihr mir weiterhelfen könnt.

Ich würde diese Standheizung sehr gerne in einem "Leistungs - Modus" 
betreiben können. Soll heissen dass ich ihr zB minimum, oder halbe oder 
volle Leistung vorgeben will, ohne dass sie sich ständig über den 
Raumthermostat aus und einschaltet.

Es ist ausgesprochen lästig, dass sich die Webasto ständig ein und 
ausschaltet sobald sie mein Reisefahrzeug aufgeheizt hat. Ich möchte sie 
zB für die Nacht in den Miminum Leistung Modus versetzen so dass sie 
einfach durchläuft.

Ist es möglich über den K-Bus die Taktung der Spritpumpe und/oder die 
Lüfterdrehzahl vorzugeben?

Kein mir bekanntes Steuergerät für die AirTop 2000 von Webasto bietet 
diese Funktion. Bei Autotherm und diversen Chinaheizungen ist das 
problemlos möglich. Weiters will ich nicht auf einen anderen Hersteller 
wechseln, weil mein Fahrzeug mit Benzin betrieben wird und Webasto einer 
der wenigen Benzin Standheizungshersteller ist.

Vom Programmieren habe ich leider keine Ahnung, daher meine Anfrage 
hier.
Vielen Dank für euer Fachwissen und Grüsse,
Auf Achse
.

von Reiner J. (purehunter)


Lesenswert?

Hallo zusammen,

ich versuche seit einer Woche meine praktisch neue Dual Top (Wohnmobil 
Heizung) mit eigenen Mitteln "fernzusteuern" und verzweifle langsam...

Die Heizung soll am Ende an meinen selbst gebauten "Bordcomputer" auf 
Basis eines ESP32 angeschlossen werden und so wie mit einer Thermocall 
(auch) über Mobilfunk gesteuert werden können.

Um zu sehen was auf dem Bus passiert habe ich mir einen Sniffer gebaut 
(auf Basis eines ESP32 mit einem diskreten W-BUS Interface). Zusätzlich 
habe ich etwas mit der WTT Software herumgespielt.

Mit der (uralt) WTT Software, die im Netz verfügbar ist (V 2.13) kann 
ich eine Diagnose durchführen und mir den vollständigen Gerätestatus 
ansehen, aber ich kann die Heizung damit nicht steuern, nicht einmal die 
"einfachsten" Befehle (EIN - f4 03 20 ff 28 / AUS ...) werden von der 
Heizung ausgeführt, aber quittiert wie erwartet. Ebenso nicht von meinem 
zwischenzeitlich etwas aufgeüsteten Sniffer, den ich unter der Adresse 2 
(aber auch F probiert, also wie die Test-Software) senden lasse.

Auf dem Bus sehe ich allerdings die korrekte Kommunikation.

Sender sendet (24 03 20 ff f8) = beliebig lange einschalten. Heizung 
antwortet wie erwartet (42 03 a0 ff 1e), aber sie tut nichts. 
Angeschlossen war mein Sniffer und die Testsoftware an einem freien 
4-poligen Stecker in der Nähe des Bedienelements, der anscheinend für 
die Telestart ist.

Ich habe auch festgestellt, dass das Bedienelement ("Anzeige") an einem 
physikalisch anderen W-Bus hängt, als obengenannter Stecker, auf dem 
etwas anderes stattfindet. Ein Teil des Traffics vom Bedienelement-Bus 
wird auch auf den anderen Bus für die Telestart gesendet: z.B. (44 03 a0 
ff 18), das ist ebenfalls eine Quittung auf das Einschaltkommando vom 
Bedienelement, allerdings schickt die Heizung das quasi an sich selbst 
(44).

Wenn ich das Bedienelement einschalte, sendet die Heizung auf dem Bus 
für die Telestart 3 Mal (42 03 39 02 7a), das geht offensichtlich an 
eine -optional- vorhandene Telestart/Telecall (Adresse 2), ich habe aber 
keine. Im Anschluss sendet die Heizung 3 Mal (48 03 51 01 1b), das geht 
an Adresse 8 und scheint eine Abfrage der Geräte-ID (51 01) zu sein. 
Welche optionale Komponente die Adresse 8 hat, weiß ich nicht.

Ich könnte mir vorstellen, dass in dem Letztgeschriebenen das Geheimnis 
steckt: antworten diese Geräte auf die initiale Anfrage nicht, werden 
sie danach ignoriert (?). Vielleicht kennt sich ja jemand aus, und weiß, 
wie auf diese Anfragen der Heizung zu reagieren ist.

Oder was ich insgesamt anders machen muss ;-)

Versuchsweise habe ich mich auch schon an den W-BUS des Bedienelements 
gehangen (ohne das Bedienelement), dort bekomme ich auf den 
Einschaltbefehl (24 03 20 ff f8) allerdings sowas wie ein NAK zurück: 
(42 04 7f 20 11 08)

Was ich noch nicht gemacht habe, ist Datenverkehr zwischen Heizung und 
Bedienelement aufzeichnen, vielleicht lässt sich ja daraus noch etwas 
ableiten. Hoffe aber trotzdem auf etwas Input von hier :-)

Gruß

Purehunter

: Bearbeitet durch User
Beitrag #6958542 wurde von einem Moderator gelöscht.
von Nathanael R. (naru)


Lesenswert?

Hallo,

ich habe zwar keine Ahnung von der Dual Top aber vielleicht hilfts ja:

- Welche Dual Top ist das genau? Wenn ich das richtig gesehen habe gibt 
es welche die zusätzlich noch mit Strom heizen können. Vielleicht hat 
diese Einheit eine eigene Firmware mit der Adresse 8. Ist aber nur 
geraten.

- Hast Du schon versucht auf dem Bus an dem das Bedienteil angeschlossen 
ist mit der (eigenen) Adresse F zu senden? In Deinem Beitrag ist das nur 
für den Telestart-Bus sicher herauszulesen.

- Auf welchem Bus hast Du die WTT laufen lassen? Falls nur auf dem 
Telestart-Bus kannst Du das ja noch auf dem des Bedienpanels probieren.

- Mit welcher Wbus Version läuft die Heizung? Wird dann später 
interessant wenn sie mal läuft um den Betriebstatus richtig zu 
interpretieren.


Was ich machen würde ist genau das was Du selbst schon unten erwähnt 
hast, nämlich den Verkehr von Bedienteil und Heizung auf diesem Bus mit 
zu hören und genau das dann nachzubauen. Da die Heizung ja mit dem 
Bedienteil gestartet werden kann muss es dann auch mit deiner eigenen 
Hardware funktionieren. Genau so hab ich das auch gemacht.
Den anderen Bus würde ich einfach vergessen.

Grüße

von Sebastian N. (dakazze)


Lesenswert?

Hello!
Ich hoffe es stört nicht zu sehr, dass ich mich hier einfach quer mit 
einer themenfremden Frage einklinke aber ich möchte auch nicht unbedingt 
einen neuen Thread anlegen.

Ich fahre einen SupberB von 2018 mit originaler Standheizung inkl. 
Funkfernbedienung. Meine Recherche ergab, dass es eine Webasto 
(5Q0815005) Heizung sein sollte.
Ich frage mich nun, ob es als semi geübter elektrotechnik Bastler 
möglich ist, sich mit einem ESP32 o.Ä. zwischen Funkempfänger und 
Steuerung einzuhängen um das Signal zum Starten der Heizung über mein 
Smart-Home zu senden?

Das einfachst wäre zwar einen zweiten Handsender zu kaufen, allerdings 
kosten die Teile meines Wissens nach über 200€, die ich nicht einsehe.

von Nathanael R. (naru)


Lesenswert?

Hallo,

Geht bestimmt. Auf die Schnelle hab ich nachgeguckt und gesehen, dass 
das eine Thermo Top Evo ist. Sofern die nicht 
Fahrzeugherstellerspezifisch verändert wurde wird die auch über den 
Webasto Wbus gesteuert. Dann einfach eine eigene Hardware basteln und 
auch an den Bus hängen. Grundlagen zum Wbus gibts z.B. hier 
https://mk4-wiki.denkdose.de/artikel/w-bus/start oder auch in der 
libwbus. Und ansonsten den anderen Wbus Thread hier im Forum 
durchforsten.

Grüße

von Sebastian N. (dakazze)


Lesenswert?

Nathanael R. schrieb:
> Hallo,
>
> Geht bestimmt. Auf die Schnelle hab ich nachgeguckt und gesehen, dass
> das eine Thermo Top Evo ist. Sofern die nicht
> Fahrzeugherstellerspezifisch verändert wurde wird die auch über den
> Webasto Wbus gesteuert. Dann einfach eine eigene Hardware basteln und
> auch an den Bus hängen. Grundlagen zum Wbus gibts z.B. hier
> https://mk4-wiki.denkdose.de/artikel/w-bus/start oder auch in der
> libwbus. Und ansonsten den anderen Wbus Thread hier im Forum
> durchforsten.
>
> Grüße

Vielen Dank für deinen Beitrag!
Für mich wäre besonders interessant, ob man irgendwie leicht 
herausfinden kann oder evtl. weiß ja jemand wie der Funkempfänger mit 
der Standheizung kommuniziert.
Ich könnte mir nämlich gut vorstellen, dass da gar nicht viel über BUS 
gearbeitet wird sondern dass der Empfänger das Signal über Funk erhält 
und dann ein einfacher Hi/Lo Puls das Programm startet, das im 
Boardcomputer voreingestellt ist.
Wenn dies der Fall wäre, dann könnte ich wohl ganz simpel einen ESP 
zwischen die beiden Drähte hängen und den Puls schicken.


Mein Problem aktuell ist einfach, dass ich nur ein kleiner Bastler bin 
und der Spaß bei mir dort aufhört wo BUS anfängt. Google hilft mir 
gerade auch nicht viel weil natürlich zu 99,9% die Leute einen Fernstart 
realisieren wollen, die eben keinen Funkempfänger haben.
Im Reparaturleitfaden und den offiziell erlangbaren Dokumenten finde ich 
nur die Position des Emfpängers aber leider keine Info zu Kabelbelegung 
oder gar ein Schaltplan des Emfpängers....

Wenn noch jemand Tipps für mich hätte damit ich in die richtige Richtung 
komme, wäre ich sehr Tankwart!

von Sascha W. (sascha-w)


Lesenswert?

Also wenn deine Fernbedienung die offizielle von Webasto ist, dann ist 
auch der entsprechende Empfänger verbaut und der kommuniziert per W-Bus.
Der Empfänger hat aber glaube ich noch einen Signaleingang an den ein 
Taster angeschlossen wird, so das man die Heizung darüber auch im 
Fahrzeug ein-/ausschalten kann (für nachträglichen Heizungseinbau).

Eine alternative Funkstrecke wirst du für deinen Anwendungsfall bauen 
müssen - nur die Fernbedienung wirst du nicht emulieren können. Einen 
ESP würde ich nicht ins Auto einbauen - braucht zu viel Strom.

Sascha

von BNI (Gast)


Lesenswert?

Ja, das ist im Prinzip auch mein Problem. Ich würde sie auch gerne auf 
1kw laufen lassen, geht aber ständig an und aus. Jede  Chinaheizung 
läuft entspannt durch auf kleiner Stufe..

von BNI als Antwort auf "AufAchse" (Gast)


Lesenswert?

AufAchse schrieb:
> Guten Tag, ich habe eine Frage zur Steuerung einer Webasto AirTop
> 2000STC!
>

>
> Ich würde diese Standheizung sehr gerne in einem "Leistungs - Modus"
> betreiben können. Soll heissen dass ich ihr zB minimum, oder halbe oder
> volle Leistung vorgeben will, ohne dass sie sich ständig über den
> Raumthermostat aus und einschaltet.
>
> Es ist ausgesprochen lästig, dass sich die Webasto ständig ein und
> ausschaltet sobald sie mein Reisefahrzeug aufgeheizt hat. Ich möchte sie
> zB für die Nacht in den Miminum Leistung Modus versetzen so dass sie
> einfach durchläuft.

Gibt es hierzu eine Antwort? Ich habe exakt das gleiche Problem. 
Entweder sie geht aus an aus an (Temperatur zu niedrig vorgewählt) oder 
sie läuft durch aber nicht in Teillast, dann wird es schnell 30 grad im 
Auto. Bin echt am überlegen, ob ich die STC 2000 rausschmeiße und mir 
eine Autoterm einbaue, die stabil auf 0,8 kw läuft. Webasto ist einfach 
nur peinlich, dass die so eine einfache Regelung nicht hinbekommen

von Beni Z. (beniii_01)


Lesenswert?

Benni schrieb:
> Hallo, ich habe eine STC 2000 Luftstandheizung und dort das
> Thermoconnect Teil dran. Egal welche Temperatur ich einstelle in der
> App, egal ob es warm oder kalt ist im Auto, die Heizung läuft auf Max.
> Habe ich da in der App einen falschen Ausgang drin? In der erweiterten
> Einstellungen zum Ausgang gibts:
> - deaktiviert
> - aktiviert
> - impulsregelung
> - parallelregelung mit w bus
> - parallelregelung mit w bus und impulsregelung
>
> Kann das damit zusämmenhängen?
>
> Aktuell ist parallelregelung mit w bus eingestellt. Möchte da aber nix
> verändert. Webasto Support versteht das Problem nicht.. und sonst finde
> ich bei Google nix dazu.. Könnt ihr mir helfen? Danke!

Die Regelungsarten solltest du nicht verändern. Die STC funktioniert 
ausschliesslich über den W-Bus. Die Impulssteuerung war dazumals für die 
alten Heizungen. Dort wurde auf eine Leitung legendlich ein + angelegt 
und die Heizung startete.

Du solltest einen direkt Heizstarttaste besitzen, dieser hat einen 
integrierten Temperaturfühler für das Thermoconnect.

Die Natelapp sollte dir die Temperatur im Auto verraten und entsprechend 
die Heizung regeln. (Temp ist direkt unter der ,,Timer'' Anzeige im App.

Des weiteren startet die STC immer auf voller Stufe und regelt langsam 
zurück wen die gewüschte Temperatur langsam erreicht wird. Die Heizung 
lüftet dann nurnoch.

Hast du Umluft oder Frischluftbetrieb?

Falls du Umluftbetrieb hast, sollte die nun gewünschte Temperatur durch 
das lüften relativ gut gehalten werden. (Je nach Isolation Fzg)

von BNI als Antwort auf "Beni Z" (Gast)


Lesenswert?

Danke für die ausführliche Antwort.

Das Auto ist ein Vito, der nachträglich von allen Seiten sehr gut 
gedämmt wurde, bis auf das Fahrerhaus und die Türen.

Ja ich habe die Taste, diese besitzt auch einen TemperaturFühler. Dieser 
regelt jedoch nicht die Temperatur, sondern zeigt sie nur an. Das wurde 
schon mehrfach berichtet. Die Anzeige in der App geht auf 25 Grad hoch, 
aber die Heizung fährt auf Volllast weiter.
Ich habe Umluftbetrieb, und die Ansaugung ist unter dem Beifahrersitz. 
Erst wenn dort warme Luft ankommt, geht die Heizung aus, bzw auf 
Lüftung. Zu dem Zeitpunkt steht auf der App auch schonmal 30 Grad, weil 
der Knopf recht hoch unter dem Dach hängt.
Das macht alles keinen Sinn, was Webasto da macht.
Ich habe jetzt den externen Sensor bestellt und wenn ich mal Zeit habe, 
baue ich ihn an und setze ihn neben den Knopf. Ich hoffe, dann 
funktioniert die Regelung besser.

von Fiso (Gast)


Lesenswert?

Hallo zusammen,

sehr interessante Diskussion hier.

Es mag sein, dass ich es überlesen habe, aber wenn nicht:

Hat irgendjemand schon mal ein MultiControl fernbedient?

Meine Anwendung wäre, dass es eine "Smart Home" Installation in dem 
mobilen Heim gibt, die aus verschiedenen Kabinen heraus Einfluss auf die 
Heizung nehmen will, ohne immer zum MultiControl laufen zu müssen.
Letztendlich soll (neben der lokalen Bedienung) die Heizung/Lüftung 
weitgehend automatissiert werden, abhängig von Anwensenheit, 
Wetterstatus und Wettervorhersage.

Ich will also nicht nur die Heizung/Lüftung fern ein-/ausschalten, ich 
will die Modis und Temperaturvorgabe am MultiControl aus der ferne 
umfassend kontrollieren.
Wenn ich das bisher richtig verstehe, wird hier diskutiert, wie z.B. so 
ein MultiControl die Heizung kontrolliert und ersetzt oder ergänzt 
werden kann. Aber wie übernehme ich die Kontrolle über MultiControl?

Es geht um eine aktuelle
WEBASTO AIR TOP EVO 40 mit Multicontrol

Weiß irgendjemand, ob das geht und wie?

von Nathanael R. (naru)


Lesenswert?

Hallo,

Habe zwar keine Ahnung von MultiControl, aber was ist mit der Option 
nicht MultiControl zu “bedienen” sondern alle benötigten Features 
mitzulesen und nachzubauen und dann MultiControl doch mit was eigenem 
ersetzen, was aber alles kann was Du brauchst. Ob das jetzt wirklich 
leichter ist ist natürlich nicht klar, nur ne Idee.

von Fiso (Gast)


Angehängte Dateien:

Lesenswert?

Danke für Deine Antwort!

Sicherlich ist es möglich, die Multicontrol Interaktion zu analysieren 
und letzlich nachzumachen.
Ich hoffe nur, das eigentliche System minimalinvasiv anzupieksen und 
einfach das, was gut funktioniert, auch bestehen zu lassen. Das 
Bedienelement Multicontrol mach einen guten Job. Es ist extrem 
Stromsparend und bietet eigentlich alle Bedien- und 
Beobachtungsmöglichkeiten, die man braucht. Einschließlich 
Fehleranzeigen oder so ein Krams. Mir ist noch nicht klar, ob die 
Raumtemperaturregelung in dem Multicontrol läuft oder ob das 
Multicontrol nur die Steuerung macht, den Sollwert vorgibt und die 
Regelung in der Heizung abläuft. Eine Raumtemperaturregelung ist zwar 
kein Hexenwerk, aber das wollte ich eigentlich nicht übernehmen.

Ein übergeordnetes System soll die Kontrolle über ein Subset von 
Funktionen übernehmen und nach Möglichkeit sollte das Multicontrol das 
alles konsistent zur Anzeige bringen.

Aber gut. Ich werde mal einen Sniffer bauen und mithören. Vielleicht 
ergibt sich daraus ja auch alles, was ich brauche. Ich hege nur die 
Hoffnung, dass jemand sowas schon mal gemacht hat und mir wertvolle 
Hinweise geben kann.

von Sascha W. (sascha-w)


Lesenswert?

Hallo Fiso,

also seit meinem letzten Fahrzeugwechsel hab ich mit der neuen Thermo 
Top Evo auch die Multicontrol drin, an den Kommandos die da an die 
Heizung rausgehen hat sich gegenüber der 1533 die ich zuvor hatte nichts 
geändert. Meine Fernbedienung geht nach wie vor und auch der damit 
gestartete Heiz-/Lüftungsbetrieb wird von der MC korrekt angezeigt.

Wenn du natürlich weitergehende Funktionen der MC wie Temperaturreglung 
mit deiner Airtop nutzen kannst und dies parrallel noch mit einer 
eigenen Bedieneinheit tun willst könnte ich mir vorstellen das das nix 
wird, denn die Intelligenz wird wohl in der MC stecken. Das würde dann 
bedeuten das du über den Bus die Vorgaben in der MC änderen müsstest und 
ob das geht - ich glaub es nicht, da mir gerade nichts einfällt wozu das 
erforderlich sein sollte - zumides aus Sicht des Herstellers. (Außer man 
könnte die MC mit der Thermotop Software parametrieren)

Sascha

von Fiso (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Sascha,

vielen Dank für Deine Einschätzungen und Befunde. Ich habe gestern 
endlich meinen W-Bus mit einem Oszi angezapft und beginne mir 
anzuschauen, was das MC so mit der Heizung diskutiert.

Erster Befund: Erstaunlich wenig.

Zweiter Befund: Hier ist das Break Signal klar 25ms/25ms

Dritter Befund: Das MC versucht beim Initialisieren mit noch anderen 
Busteilnehmern Kontakt aufzunehmen. Da ist aber niemand außer der 
Heizung.
Hat jemand eine Idee, welche Webasto Kompnente normalerweise auf die 
Adresse 6 hört?

von Olli Z. (z80freak)


Lesenswert?

Nope, kenne nur die
0xF Thermo Test Software
0x4 Webasto Heizung
0x3 Webasto 1533 Timer
0x2 Webasto Telestart

von Fiso (Gast)


Lesenswert?

Ich habe hier eine Air Top Evo 40 und das MultiControl. Das MC versucht 
beim Aufwachen mit einer Adresse 6 zu sprechen, natürlich ohne Antwort.
Es ist nur eine Vermutung, aber ich habe das ThermoConnect TCon2 im 
Verdacht.
Und wenn es das wäre, würde mich brennend interessieren, was MC und 
ThermoConnect mit einander zu besprechen hätten.
Denn ThermoConnect scheint nach Betrachtung der App Screenshots genau 
auf die Parameter zurückzugreifen, an denen ich interessiert bin. Aber 
das ist eben nur im Reich der Vermutungen.
Da die ThermoConnect für mich als Produkt unintedressant ist (ich mag 
keine geschlossenen Cloud Lösung), habe ich keine zum sniffen. Hat 
irgendjemand so ein Ding?

von Olli Z. (z80freak)


Lesenswert?

Es gibt noch einen Webasto Temperaturfühler. Der wird auch an den W-Bus 
angeschlossen und hat natürlich auch eine Adresse. Ich muss mal schauen 
ob ich die ermitteln kann. Ich habe so einen mal gekauft für meine 
Telecall, hat mir aber keinen Vorteil gebracht, seither liegt das Ding 
in der Kiste.

ThermoConnect kenne ich nicht, nutze wie gesagt die GSM-Lösung von 
ThermoCall und bin damit mehr als zufrieden. Die braucht nur lausiges 
GSM und einen Anruf, keine Mehrkosten, kein Internet, keine Cloud und 
trotzdem von überall ansteuerbar.

von Fiso (Gast)


Lesenswert?

Ich bin dank der zahlreichen hilfreichen Informationen hier in diesem 
thread ein paar Schritte weiter. Ganz besonders klasse ist die 
Fortsetzung der Tabelle mit den Status-Codes! Danke für das Austüfteln 
und Einstellen hier!
Wenn's interessiert, hier ein paar Erfahrungen und Erkenntnisse:

1. Der originale 25ms/25ms break kann bei meiner Kombination recht frei 
neu interpretiert werden. Es funktioniert auch 33ms/17ms oder ähnliches. 
Allerdings wird immer, selbst bei der originalen MC Webasto 
Kommunikation, das erste Telegramm nach dem break ignoriert und muss 
wiederholt werden, damit die Heizung antwortet. Das bleibt auch so, 
selbst wenn man das erste Telegramm auf den Zeitpunkt der 
Telegrammwiederholung verschiebt. Wenn der Bus erstmal wach ist, wird 
jedes weitere Telegramm ohne break und Wiederholung sofort beantwortet.

2. Die Raumtemperaturregelung läuft nicht im Multicontrol. Das 
Multicontrol gibt nur die Solltemperatur vor und sended danach alle 15 
Sekunden das keep alive Telegramm. Sonst nichts.

3. Das Multicontrol lässt sich nicht reinquatschen. Alle Versuche, dem 
Multicontrol eine neue Solltemperatur unterzuschieben, sind 
fehlgeschlagen. Soweit nicht ganz überraschend. Etwas rätselhaft ist, 
dass man am Bus so tun kann, als ob man als Multicontrol eine neue 
Solltemperatur vorgibt. Das wird auch braf von der Heizung quittiert. 
Die Regelung der Heizung bleibt aber beim Wert, den das Multicontrol 
vorher vorgegeben hat. Das ist so rätselhaft, weil ich bis jetzt in der 
Kommunikation keinen Unterschied sehen kann, ob ich nun mit meiner 
Software die Sollwertänderung sende oder das Multicontrol selbst. Muss 
ich ggf. noch weiter untersuchen, um die Ursache zu verstehen.

4. Was aber sehr wohl geht, selbst komplett die Kontrolle zu übernehmen. 
Dank der Hinweise hier ist das besonders sinnvoll mit der 
Absenderadresse 2. Dann zeigt das MultiControl an, dass das System von 
Extern gesteuert wird, allerdings keine Details mehr, wie z.B. die 
aktuelle Solltemperatur. Nur das jetzt extern getriggert geheizt wird, 
kann man am MC sehen.
Zuerst muss die Controlle vom MC weggenommen werden. Das geht mit dem 
0x10 conmmand und nach dem Auslauf der Heizung einem erneuten 
Einschalten mit der externen Kontrolle. Dann kann ich auch Sollwerte von 
Extern vorgeben und es wird danach geregelt.

5. Wenn man die ganzen schönen Istwerte und den Status der Heizung 
regelmäßig aktualisiert sehen will, muss man regelmäßig pollen. Wenn man 
dann nicht artig auf Kollisionnen achtet, kann man das keep alive 
Telegramm der MC schon mal so weitreichend stören, dass die Heizung 
abschaltet und Fehler geschmissen werden. Wenn man hier eine gewisse 
Zurückhaltung pflegt, geht es ganz gut. Ich habe gesehen, dass das MC 
unbestätigte Telegramme bis zu 4 Mal wiederholt (also 5 insgesamt). Ich 
habe es nun etwas dirty so gemacht, dass ich schon nach einer einzigen 
Wiederholung aufgebe. Der nächste Pollzyklus kommt ja schon bald. So 
läuft´s bisher stabil bei mir.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.