Forum: Haus & Smart Home Hilfe - Interface - Vaillant GeoTherm VWS 6/8/11E


von HES (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
kann mir jemand bitte helfen?

Ich habe eine Vaillant Geotherm Erdwärme Heizung (Geotherm exclusive VWS 
6/8/11E). Die ist schon seit 2004 verbaut und funktioniert immer noch 
super.

Ich möchte die Heizung und deren Parameter gerne auch von meinem 
Computer aus überwachen. Es gibt eine Schnittstelle auf der 
Steuerungsplatine (siehe Foto), die mit (5V, Data, Clk, GND) belegt ist.
Kennt jemand die Schnittstelle? Gibt es irgendwo mehr Infos zum 
Protokoll?

Ich habe mal einen Oszi rangehangen. Da kommt immer nur dasselbe 
Telegramm mit dem ich nichts anfangen kann...siehe Anhang.

Ich habe auch noch weitere Infos zur Geotherm & Schaltplan angehangen.

Bitte um Hilfe & Info. Ich konnte im Internet trotz langer Suche leider 
nichts finden.

Besten Dank im Voraus
HES

von oszi40 (Gast)


Lesenswert?

HES schrieb:
> die Heizung und deren Parameter gerne auch von meinem
> Computer aus überwachen.

Dann mach doch unabhängig ein paar Sensoren dran und werte sie aus. Bei 
meiner WW-Heizung kontrolliere ich z.B. den Rücklauf und sehe ganz 
deutlich wenn sie wieder heizt. Somit war kein Eingriff nötig. Das 
kostet mir wenige µA. Dein PC braucht zur ständigen Überwachung 
365*24h*0,10kW*0,30€=262,80€ im Jahr.

von HES (Gast)


Lesenswert?

oszi40 schrieb:
> 365*24h*0,10kW*0,30€=262,80€ im Jahr.

365*24h*0,0002*0,18€ = 0,31 €/Jahr
(ESP32 200mA in Wifi Mode, meine Stadtwerke 0,18€/kWh)

Ansonsten Gute Idee. Daran hatte ich auch schon mal gedacht. Das ist auf 
jedenfall mehr Aufwand einige extra Sensoren zu verbauen als das 
Interface anzuzapfen und die Sensoren auszulesen.

LG
HES

von HES (Gast)


Lesenswert?

HES schrieb:
> 365*24h*0,0002*0,18€ = 0,31 €/Jahr
> (ESP32 200mA in Wifi Mode, meine Stadtwerke 0,18€/kWh)

oops, Ich war zu schnell beim tippen
> 365*24h*3,3V*0,2A/1000*0,18€ = 1,04 €/Jahr

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

oszi40 schrieb:
> Dein PC braucht zur ständigen Überwachung

Ein PC, der 100 Watt im Dauerbetrieb verballert?

von oszi40 (Gast)


Lesenswert?

HES schrieb:
> jedenfalls mehr Aufwand einige extra Sensoren zu verbauen als das
> Interface anzuzapfen und die Sensoren auszulesen.

Frage ist ja, was DU wirklich brauchst. Für mich war nur wichtig zu 
wissen WANN die Heizung heizt und wieviel Grad der Rücklauf hat. Da 
reichte ein Sensor und ein µA-Meter+ Batterie Jahre.

von HES (Gast)


Lesenswert?

oszi40 schrieb:
> Frage ist ja, was DU wirklich brauchst. Für mich war nur wichtig zu
> wissen WANN die Heizung heizt und wieviel Grad der Rücklauf hat. Da
> reichte ein Sensor und ein µA-Meter+ Batterie Jahre.

Ja. Das ist Plan B wenn wirklich niemand hier Infos zum besagten 
Interface & Protokoll hat. Eigenes reverse Engineering würde sicherlich 
viel länger dauern & mehr Kosten.

*Also, hat denn nun jemand Infos zum Interface & Protokoll?*

Besten Dank im voraus!

LG
HES

von Georg A. (georga)


Lesenswert?

9 Bits klingen irgendwie nach einem I2C-Look-Alike. Passt auch dazu, 
dass das vorletzte Bit 1 ist (=Read) und mit der 1 beim letzten keiner 
antwortet (ACK fehlt). Häng mal DATA hochomig auf VCC/2 (10k gegen GND 
und 10k gegen VCC). Wenn das letzte Bit dann auch deutlich auf Halbmast 
ist, ist es recht sicher I2C.

von HES (Gast)


Lesenswert?

Georg A. schrieb:
> 9 Bits klingen irgendwie nach einem I2C-Look-Alike. Passt auch
> dazu,
> dass das vorletzte Bit 1 ist (=Read) und mit der 1 beim letzten keiner
> antwortet (ACK fehlt). Häng mal DATA hochomig auf VCC/2 (10k gegen GND
> und 10k gegen VCC). Wenn das letzte Bit dann auch deutlich auf Halbmast
> ist, ist es recht sicher I2C.

Danke, das scheint wirklich I2C zu sein. Daran hatte ich gar nicht 
gedacht, da die Steuerung ja schon mind. 15 Jahre alt ist. Ich wusste 
gar nicht das I2C schon so alt ist.
Hab gleich mal in die Wiki geschaut. Demnach müsste die Adresse (010 
1110 0 1) 0x2E sein, 8te bit LOW = empfange mehr Master Daten und 9te 
bit = ACK:

"Das Start-Signal ist eine fallende Flanke auf SDA, während SCL high 
ist, das Stop-Signal ist eine steigende Flanke auf SDA, während SCL high 
ist. Repeated-Start sieht genauso aus wie das Start-Signal. Eine 
Dateneinheit besteht aus 8 Datenbits = 1 Oktett (welche protokollbedingt 
entweder als Wert oder als Adresse interpretiert werden) und einem 
ACK-Bit. .... Eine Standard-I²C-Adresse ist das erste vom Master 
gesendete Byte, wobei die ersten sieben Bit die eigentliche Adresse 
darstellen und das achte Bit (R/W-Bit) dem Slave mitteilt, ob er Daten 
vom Master empfangen soll (LOW) oder Daten an den Master zu übertragen 
hat (HIGH). "

ALSO, ich werde dann am Wochenende mal einen Level-Shifter an den ESP32 
I2C ranhängen und schauen ob der I2C noch mehr Daten sendet.

LG

von hinz (Gast)


Lesenswert?


von HES (Gast)


Lesenswert?

hinz schrieb:
> Deine Heizungssteuerung sucht nach einem Slave.
>
> 
https://rn-wissen.de/wiki/index.php/I2C_Chip-%c3%9cbersicht#Adressen_g.C3.A4ngiger_I2C_Chips

Was heisst das jetzt? Ist das Interface gar nicht zur Kommunikation mit 
der Steuerung gedacht sondern der Heizungscontroller wartet nur auf 
einen dummen Sensor, der extern angebunden wird?
Lg

von hinz (Gast)


Lesenswert?

HES schrieb:
> hinz schrieb:
>> Deine Heizungssteuerung sucht nach einem Slave.
>>
>>
> 
https://rn-wissen.de/wiki/index.php/I2C_Chip-%c3%9cbersicht#Adressen_g.C3.A4ngiger_I2C_Chips
>
> Was heisst das jetzt? Ist das Interface gar nicht zur Kommunikation mit
> der Steuerung gedacht sondern der Heizungscontroller wartet nur auf
> einen dummen Sensor, der extern angebunden wird?

Das muss doch kein Sensor sein.

von Georg A. (georga)


Lesenswert?

HES schrieb:
> Ich wusste gar nicht das I2C schon so alt ist.

Mindestens Anfang der 80er ;)

Es ist halt ein totales Low-Level-Interface, d.h. ausser der Adresse und 
R/W weiss man nicht, was der Master eigentlich erwartet. Es kann sein, 
dass das zB. eine Art Shared-Memory-Kommnunikation über einen virtuellen 
Speicher ist. Wenn man da die Handshake-Strukturen nicht hat/weiss, wird 
es schwer. Oder es ist einfach nur eine Art "Pipe", d.h, Read liest 
einen Stream (ala RS232), Write schreibt. Aber auch da brauchts 
zumindest beim Read eigentlich ein Handshake, wenn nicht jedes Byte 
ineffizient einzeln gelesen werden soll.

Also: Ohne eine Gegenstelle zum Abschnorcheln einer Kommunikation ist 
das eher aussichtslos.

von HES (Gast)


Lesenswert?

Georg A. schrieb:
> Also: Ohne eine Gegenstelle zum Abschnorcheln einer Kommunikation ist
> das eher aussichtslos.

Ja. Leider.
Hab auch erst am WE Zeit den I2C zu bestätigen.
Bzgl. Kommunikation: Wenn ich Glück habe ist es vielleicht ein 
frühes/abgewandeltes eBus Protokoll.

Hier steht
https://ebus-wiki.org/doku.php/start
https://ebus-wiki.org/doku.php/ebus/serviceb5vaillant
"Leider musste ich feststellen, dass die Firma Vaillant (fast) 
ausschließlich eigene, nicht dokumentierte Befehle verwendet. "

von hinz (Gast)


Lesenswert?

HES schrieb:
> Bzgl. Kommunikation: Wenn ich Glück habe ist es vielleicht ein
> frühes/abgewandeltes eBus Protokoll.

Kaum, eBus ist asynchron.

von HES (Gast)


Lesenswert?

Hallo,

Ich habe das Wochenende die I2C test HW (level shifter) und SW (M5Stack 
und Micropython) fertig bekommen und einige Tests durchgeführt.
Ich habe alles mit dem Scope verifiziert.

Nur mit den Daten kann ich wirklich nichts anfangen :-(
Hat irgendwer eine Idee wie ich das nun interpretieren soll?
1
[I2C] Data received from master: addr=0, len=1, ovf=0, data: [b'\x14']
2
[I2C] Data received from master: addr=1, len=1, ovf=0, data: [b'\x04']
3
[I2C] Data received from master: addr=2, len=1, ovf=0, data: [b'\x10']
4
[I2C] Data received from master: addr=3, len=1, ovf=0, data: [b'\x1c']
5
[I2C] Data received from master: addr=4, len=1, ovf=0, data: [b'\x04']
6
[I2C] Data received from master: addr=5, len=1, ovf=0, data: [b'\x02']
7
[I2C] Data received from master: addr=6, len=1, ovf=0, data: [b'\x12']
8
[I2C] Data received from master: addr=7, len=1, ovf=0, data: [b'(']
9
[I2C] Data received from master: addr=8, len=1, ovf=0, data: [b'\x19']
10
[I2C] Data received from master: addr=9, len=1, ovf=0, data: [b'<']
11
[I2C] Data received from master: addr=12, len=1, ovf=0, data: [b',']
12
[I2C] Data received from master: addr=18, len=1, ovf=0, data: [b'\x0f']
13
[I2C] Data received from master: addr=23, len=1, ovf=0, data: [b'\x01']
14
[I2C] Data received from master: addr=29, len=1, ovf=0, data: [b'\x05']
15
[I2C] Data received from master: addr=35, len=1, ovf=0, data: [b'\x00']
16
[I2C] Data received from master: addr=40, len=1, ovf=0, data: [b',']
17
[I2C] Data received from master: addr=46, len=1, ovf=0, data: [b'\x14']
18
[I2C] Data received from master: addr=51, len=1, ovf=0, data: [b'\x10']
19
[I2C] Data received from master: addr=56, len=1, ovf=0, data: [b'\x18']
... Und hier nochmal nach einigen Stunden:
1
[I2C] Data received from master: addr=0, len=1, ovf=0, data: [b'\x10']
2
[I2C] Data received from master: addr=1, len=1, ovf=0, data: [b'\x03']
3
[I2C] Data received from master: addr=2, len=1, ovf=0, data: [b'\x10']
4
[I2C] Data received from master: addr=3, len=1, ovf=0, data: [b'\x16']
5
[I2C] Data received from master: addr=4, len=1, ovf=0, data: [b'\x03']
6
[I2C] Data received from master: addr=5, len=1, ovf=0, data: [b'\x03']
7
[I2C] Data received from master: addr=6, len=1, ovf=0, data: [b'\n']
8
[I2C] Data received from master: addr=7, len=1, ovf=0, data: [b'(']
9
[I2C] Data received from master: addr=8, len=1, ovf=0, data: [b'\x19']
10
[I2C] Data received from master: addr=9, len=1, ovf=0, data: [b'\x05']
11
[I2C] Data received from master: addr=11, len=1, ovf=0, data: [b'\x1e']
12
[I2C] Data received from master: addr=16, len=1, ovf=0, data: [b'\x14']
13
[I2C] Data received from master: addr=22, len=1, ovf=0, data: [b'\x0e']
14
[I2C] Data received from master: addr=27, len=1, ovf=0, data: [b'\x05']
15
[I2C] Data received from master: addr=32, len=1, ovf=0, data: [b'\x0b']
16
[I2C] Data received from master: addr=37, len=1, ovf=0, data: [b')']
17
[I2C] Data received from master: addr=41, len=1, ovf=0, data: [b'$']
18
[I2C] Data received from master: addr=46, len=1, ovf=0, data: [b'\x14']
19
[I2C] Data received from master: addr=51, len=1, ovf=0, data: [b' ']
20
[I2C] Data received from master: addr=55, len=1, ovf=0, data: [b'\x00']
21
[I2C] Data received from master: addr=60, len=1, ovf=0, data: [b'`']

von HES (Gast)


Lesenswert?

Der Vollständigkeit halber anbei die Auflösung der einzelnen Bytes from 
I2C, falls mal wieder jemand braucht.
Reverse Eng. war doch gar nicht so schwer. Nur ein kleines Prägrammchen 
und 2h Drücken am Bedienfeld
LG

[00] – Raum Temp [°C]
[01] – Mode: Aus, Auto, nur WW,…
[02] – Val02 0x10 (16) ??
[03] – Kurve
[04] – Val04 0x00 (0) ??
[05] – Absenkung [°C]
[06] – Min Heizkurve [°C]
[07] – Max Heizkurve [°C]
[08] – Kälteträger Min – 40 [°C]
[09] – Integral WP [°/min]
[0A] – Integral Zusatz [°/min]
[0B] – RL Temp SOLL [°C]
[0C] - WW Temp SOLL [°C]
[0D] – WW Zeit [min]
[0E] – Heiz Zeit [min]
[0F] – Heiz Stop [°C]
[10] – WP Intervall [min]
[11] – Hysterese WP [°C]
[12] – Hysterese ZH [°C]
[13] – WWZH VL Temp [°C]
[14] – WWZH SOLL Temp [°C]
[15] – Legio Stop Temp [°C]
[16] – Legio Intervall [days]
[17] – Zusatz (1=6,2=36,3=45)
[18] - Mischvent
[19] – KalRaum -5 [K]
[1A] – KalRaum FL -5 [K]
[1B] – KalAussenfühler -5 [K]
[1C] – KalRücklauffühler -5 [K]
[1D] – KalWWfühler -5 [K]
[1E] – KalKTVLfühler -5 [K]
[1F] – KalKTRLfühler -5 [K]
[20] – BZ WP (Low) [h]
[21] – BZ WP (High) [h]
[22] – BZ ZH (Low) [h]
[23] – BZ ZH (High) [h]
[24] – BZ WP WW (low) [h]
[25] – BZ WP WW (high) [h]
[26] – Sprache
[27] – Adresse
[28] – VL Temp IST [°C]
[29] – RL Temp. IST [°C]
[2A] – Val2A 0x8e (142) ??
[2B] – WW Temp IST [°C]
[2C] – Kälteträger VL Temp -40 [°C]
[2D] – Kälteträger RL Temp -40 [°C]
[2E] – Val2E 0x14 (20) ??
[2F] – Val2F 0x00 (0) ??
[30] – Aussen Temp – 40 [°C]
[31] – Raum Temp2 [°C]
[32] – VLTemp SOLL [°C]
[33] – Aktuator Ctrl: WW, WP, HZ, ZH, ST
[34] – Parameter Mode
[35] – Val35 0x00 (0) ??
[36] – Val36 0x81 (129) ??
[37] – Val37 0x00 (0) (event. Error Code)
[38] - Sekunden
[39] – Minuten
[3A] – Integral diff to 100 (Low) [°/min]
[3B] – Integral diff to 100 (High) [°/min]
[3C] – Counter (max. 250)

Mode:
0 = AUS
1 = AUTO
2 = nur WP
3 = nur Zusatz
4 = nur WW

Aktuator Ctrl (bit codiert):
Wärmepumpe (WP) 0x02
Warmwasser (WW) 0x10
Heizungspumpe (HP) 0x20
Zusatzheizung (ZH) 0x8c
Störung (ST) 0x01

von A. J. (Gast)


Lesenswert?

Hallo, habe die selbe Heizung, interessiere mich ebenfalls für das 
Thema.
Für mich wäre es von Interesse gewesen ob man diese W. P. über die 
Interface Schnittstelle eigentlich smart machen kann um sie eventuell 
vom Handy aus zu steuern.

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.