Heizung auslesen!

Hallo Zusammen,

ich hoffe es kann mir jemand helfen. Ich habe eine Heizungsanlage mit der es möglich ist, einzelne Parameter über eine Serielle Schnittstelle abzufragen. Es gibt auch schon jemanden der dies mit einem Raspberry hinbekommen hat. Monitoring a Stiebel Eltron LWZ | Robert Penz Blog

Es handelt sich im um einen serielle Kommunikation.

Meine Heizung hat einen Stecker mit drei Anschlüssen.
So wie ich bisher erfahren habe handelt es sich um TxD und einer RxD und einer für Ground.

Ich habe leider nicht so viel Ahnung darüber aber, ich hoffe ich bekomme das mit eurer Unterstützung hin.
Als Ziel habe ich das ich ein Arduino an meine Wärmepumpe anschließe und der diese Daten von der Heizungsanlage an meinen Server sendet, und die Daten dann in einer SQL Tabelle speichert, entweder per Bluetooth oder per Ethernet Modul.

Ich würde folgender Maße vorgehen, ich würde den Arduino Port D1 und D0 und Grund anschließen und dann per Seriel Monitor die Daten nach dem Schema wie im Link beschrieben abfragen.

Ich hatte irgendwie gelesen, dass wenn ich den Arduino per USB an meinem Rechner betreibe, dass dann die Rxd und Txd vom Arduino belegt sind, Ist das so?

Zum testen wollte ich halt den Laptop am Arduino dran haben und dann per seriel Monitor die Daten per Handeingabe abfragen.

So die Theroie, aber ich kann mir einfach nicht vorstellen das dies so einfach ist, ich habe auch keine Lust meine Heizung zu zerstören, was kann dabei alles schief gehen?

Ich bedanke mich im voraus für eure Hilfe.

Hier nochmal ein Beispiel wie die Kommunikation gehen soll, laut der Anleitung für den Raspberry von Robert Penz.
Ich verstehe den ersten Satz leider nicht, was ist gemeint mit MIPS or ARM?

The CPU of the LWZ seems to be big-endian, maybe a MIPS or ARM? This is important as you PC is most likely little-endian. You’ve no clue what I’m talking about? Take a look at this wikipedia article.
A look at the answers the LWZ returned to me lets me believe that they are using 16bit integers to send floats. They just have a fixed number of decimal digits. For example as version I get 01 B6 which is 438 in decimal (the formula is dec(0xb6+0x01*256)), now divide this by 100 and you get a version 4.38.

3.1 Greetings

After the connection is opened by your PC send following.

02

which will result in following return by the heat pump if you’re connected correctly.

10

Now you know that your wire-ring is good and you’ve the correct settings for your serial interface. Both bytes you’ll see throughout the protocol. 02 stands most likely for “start of communication” and 10 for acknowledgement. As 10 03 is used for the footer every occurrence of 10 in the normal datastream is escaped by a 10.

3.2 Get the version

Your version of the interface is maybe different from mine. Following will show you the version of the heat pump software. The version of my LWZ is 4.37. With the first request you tell the heat pump what you want, it writes then back an ok.

After that ok, you can request the data:

01 00 FE FD 10 03

After this you get

10 02

Which tell you your request is ok (10) and it does have data, which wants to send now (02). You will acknowledge that like this

10

so the heat pump starts sending the data, which looks like this

header Version footer
01 00 B5 FD 01 B6 10 03
4.38

As all data responses seem to be headed by 4 byte, I believe it is some kind of header. And the last 2 byte look like a footer for me.

ASommer:
was ist gemeint mit MIPS or ARM?

Wenn's weiter nichts ist, dann macht Wikipedia Dich schlau:

Meine Heizung hat einen Stecker mit drei Anschlüssen.
So wie ich bisher erfahren habe handelt es sich um TxD und einer RxD und einer für Ground.

Dann solltest du jetzt aus deinem Link rauskriegen, dass diese leider nicht "TTL-Level" (d.h. 0-5V), sondern RS232 (also +- 15 V) sind.
Also bräuchtest du einen Pegel-Umsetzer...

Beim UNO hast du nur 1 Hardware Serial Schnittstelle an D0/D1, und die ist von der USB Verbindung belegt, richtig.
Kannst aber SoftSerial auf beliebigen anderen Pins benutzen, wenn die Verbindung nicht zu schnell sein muss.

Ohh,

das ist ja gar nicht gut! Gibt es ein Beispiel für so einen Pegelwandler.
Ich habe ein paar shilds gesehen aber wie gesagt, habe nicht so die Ahnung.

Danke ertmal für eure Unterstützung.

Such mal nach MAX232. Gibt auch Schaltungsbeispiele im Netz.

Gruss,
Jürgen

Würde das Teil funktionieren?
Ich brauche auch kein richtigen RS232 Stecker, weil wie gesagt meine Heizung hat drei Anschlusskabel.
Wenn es möglich ist, dann würde ich dieses nehmen. Wenn damit sicher gestellt ist das ich den Seriel Monitor über USB weiterhin verwenden kann. Ich will ja mittels Laptop sehen was von der Wärmepumpe an den Arduino gesendet wird.

http://www.ebay.de/itm/Mini-RS232-auf-TTL-Converter-Module-Konverter-Board-Modul-Chip-Mode-MAX3232CSE-/280894244048?pt=LH_DefaultDomain_77&hash=item41669a04d0

Wäre super wenn das Projekt mit eurer Hilfe funktionieren würde, ich habe mehrere Nachbarn die Interesse daran haben, dann könnten wir unser Wärmepumpen vergleichen.

Sollte Passen.
Und dann an den Arduino anschließen wie Micheal_x oben angemerkt hat.

So habe ich bestellt!

Hat jemand für mich einen Beispiel Sketch oder einen Link wo ich die Serielle Kommunikation auf anderen Port als 0 und 1 machen kann.
Weil wie ich verstanden habe, sind diese ja auch für die USB übertragung von wichtigkeit.

Besteht dann im nächsten Schritt die Möglichkeit, das ganze was von der Wärmepunpe kommt per Bluetooth an einen anderen arduino mit Ethernet zu senden? Warum frage ich das, weil so wie ich bisher erfahren habe auch mit einem Bluetooth Modul benötige ich RX und TX. Damit wären für mein Projekt drei RX und TX Ports notwendig.

Wenn jemand meint das es besser geht oder andere Lösungsansätze hat, dann bin ich für alles offen.

Brauchst du denn im Betrieb tatsächlich mehrere serielle Schnittstellen? Mit einem Arduino Leonardo hättest du bspw. die Pins 0 und 1 zur freien Verfügung, dort werden diese beiden Pins nicht zur Programmierung genutzt. Wenn du noch mehr Hardware-UARTs benötigst, kannst du auch einen Arduino Mega 2560 benutzen - ist meines Erachtens aber gar nicht nötig.
Die Lösung über Bluetooth macht das alles noch komplexer, weil du dann ja zumindest zwei Mikrocontroller programmieren musst, ganz günstig wird das auch also nicht.

such mal nach SoftSerial oder NEwSoftSerial