mikrocontroller.net

Forum: Haus & Smart Home Buderus Ecomatic HS 4201 I²C BUS Kommunikation


Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
mein Ziel ist es den internen I2C-BUS der Buderus HS4201 anzuzapfen um 
die wesentlichen Temperaturen (Innen, Außen, Kessel, Warmwasser,...) 
auszulesen und die Bedienelemente (Heizung-Auto, Heizung-Tag, 
Heizung-Nacht und evtl auch die Vorgabetemperatur für Tag und Nacht) 
vorzugeben.
Hierzu wird ein kleiner PIC18 die Kommunikation zur Buderus übernehmen, 
der allerdings nur der Mittler zu einer, auf FS20 Funktechnik 
bassierenden Haussteuerung, sein wird. Die FS20 Steuerung ist eine XS1 
von EZControll.de. Standalone und mit hinreichender Itelligenz. Vorallem 
aber auch webfähig.

Gibt es jemand, der schon Erfahrung damit gesammelt hat oder evtl. sogar 
schon Parameter / I2C Commands dekodiert hat?

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein wenig fleißig war ich schon. Dank meines kleinen Logic-Analyser 
konnte ich die standard Broadcast-Meldung, die scheinbar nur die 
Kesseltemperatur in 2 Byte übeträgt in diesem Datensatz ermitteln.

Die Werte lassen sich auch gut der angezeigten Temperatur zuordnen.

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.... jedoch läßt sich nicht erkennen, wie die einzelnen Werte der 
Ziffern oder der gesamte Temperaturwert codiert ist. Die üblichen XOR, 
Nibble-Swap, OR, 2er Kompliment,... etc. funktionieren scheinbar nicht.

Die Hex-Werte für den Zehner und Einserwert der Temperatur sind immer 
gleich. Nachkommastellen gibt es für die Kesseltemperatur scheinbar 
nicht.

Am Ende nutzt Buderus kein ASCII für die Ziffern, sondern was eigenes. 
Glauben kann ich das aber nicht wirklich.

Nachfolgend die Tabelle, wo die Ziffern aus der Anzeige mit den 
darunterstehenden Hex-Werten gepaart sind:

9     8     7     6     5
0x6F  0x7F  0x07  0x7D  0x6D

4     3     2     1     0
0x66  0x4F  0x5B  0x06  0x3F

Hier noch einige Beispiele zur Verdeutlichung:
Data3    Data4    Dezimal-Kesseltemperatur
0x6D     0x6D     55
0x6D     0x3F     50

Hat jemand eine Idee was da codiert wird?

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


bist du sicher das Buderus nicht nur ein EEProm (wie üblich) über I2C 
ansteuert ?


Grüße.

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi schrieb:
> Hallo,
>
>
> bist du sicher das Buderus nicht nur ein EEProm (wie üblich) über I2C
> ansteuert ?
>
>
> Grüße.

Hallo Rudi,
nein Sicher bin ich zum jetzigen Zeitpunkt nicht.
Was ich bisher sehen konnte: Es werden zwei verschiedene Geräteadressen 
verwendet. Wovon eines im Read und Write Mode angesprochen wird und das 
mit den Temperaturen nur um Write Mode.

Nur ein EEprom mit der Kesseltemperatur zu beschreiben macht auch nicht 
wirklich sinn.

Im Broadcast Datensatz kommt im Datenbyte 4 auch die Brenner An/Aus Info 
im Bit0 mit. Auch diese Info macht keinen Sinn in einem EEprom.

Zwischenzeitlich habe ich die ersten 4 Datensätze der Bootsequenz noch 
gesampled und versuche dort gerade Werte zuzuordnen.

Was mich wirklich kneift ist diese seltsame Codierung.

Liebe Grüße

Norbert

Autor: Rudi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Norbert R. schrieb:
> Nur ein EEprom mit der Kesseltemperatur zu beschreiben macht auch nicht
> wirklich sinn.
>
> Im Broadcast Datensatz kommt im Datenbyte 4 auch die Brenner An/Aus Info
> im Bit0 mit. Auch diese Info macht keinen Sinn in einem EEprom.

Wenn du einen Dump der IIC Daten posten könntest wäre es etwas 
einfacher. Ich habe an einer Buderus Anlage relativ häufige EEProm 
Zugriffe gesehen, obwohl diese nicht unbedingt nötig wären.

Ansonsten schau mal hier:

Beitrag "Buderus Ecomatic 4000"

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dies ist der Broadcastdatensatz (Werte in Hex):

Adresse r/w Data1 Data2 Data3 Data4 Data5 Data6  Bemerkung
0x38     w  0x00  0x17  0x3F  0x6D  0xE1  0xE3   05°C FK raus, FA raus, 
Brenner an

0x38     w  0x00  0x17  0x07  0x3F  0xE0  0xE3   70°C FK drin, FA raus, 
Brenner aus

Data3 + Data4 enthalten die Kesser-Temperatur
Data5 im Bit 0 enthält Brenner Ein/Aus

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier die Startsequenz (Werte in Hex)

Adresse r/w Data1 Data2 Data3 Data4 Data5 Data6   Bemerkung  Kessel 
Innen  Außen
0x50     w  0x10                                  Nach Power_on der 1. 
Datensatz   1. Versuch
0x50     r  0x6E  0x00 DNACK                      Nach Power_on der 2. 
Datensatz 1. Versuch
0x50     w  0x02                                  Nach Power_on der 3. 
Datensatz   1. Versuch
0x50     r  0x21  0x50  0x4A  0xD0 DNACK          Nach Power_on der 4. 
Datensatz   1. Versuch
0x50     r  0x53  0x27  0x50  0x4A 0xD0 DNACK     Nach Power_on der 4. 
Datensatz 2. Versuch
0x50     r  0x50  0x30  0x50  0x4A 0xD0 DNACK     Nach Power_on der 4. 
Datensatz   3. Versuch
0x50     r  0x50  0x17  0x34  0x50 0x4A 0xD0 DNACK Nach Power_on der 4. 
Datensatz   4. Versuch  45°C
0x51     r  0x50  0x47  0x47  0x51 0x4A 0xD0 DNACK Nach Power_on der 4. 
Datensatz   5. Versuch  51°C
0x51     r  0x50  0x50  0x55  0x50 0x4A 0xD0 DNACK Nach Power_on der 4. 
Datensatz 6. Versuch  51°C  22°C  9°C
0x51     r  0x50  0x51  0x14  0x52 0x4A 0xD0 DNACK Nach Power_on der 4. 
Datensatz   7. Versuch  42°C  22°C  9°C

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kann man hier Tabellen vernünftig anzeigen?
Etwa nur als Bild oder Anhang?

Autor: Norbert R. (trebron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rudi schrieb:
> Hallo,
>
>
> bist du sicher das Buderus nicht nur ein EEProm (wie üblich) über I2C
> ansteuert ?
>
>
> Grüße.

Hallo Rudi,
bedingt durch andere Projekte hatte ich dieses Thema bis jetzt auf Eis 
liegen.
Nun habe ich die 4201 Steuerung mal wieder zerlegt und ein wenig 
Schaltpläne gemalt.

Am I2C Bus hängt auch ein PCF8583T (Realtime Clock mit 240Byte RAM). 
Dieser ist über eine eigene Backup-Battery gepuffert und somit ist das 
RAM sicherlich statt eines EEPROM in Betrieb.

Der I2C geht auch noch weiter auf die anderen Slots und scheint die 
Kommunikation mit dem KM Modul 2.0 - M 404 (eine RS232 / RS 485 
Schnittstelle) sicherzustellen. Da ich dieses nicht besitze und nur 
Bilder der Platine habe, läßt sich jedoch der Verlauf der I2C Leitung 
nicht verfolgen.

Leider ist das MEC (1) nicht darüber angeschlossen, sondern wird über 
eigene Leitungen versorgt. Was da läuft habe ich mir noch nicht 
angesehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.