Modul für EBV / Rotex Heizung

Begonnen von heiko322, 01 April 2015, 10:10:32

Vorheriges Thema - Nächstes Thema

heiko322

Hallo,
nachdem unserer FHEM Server nun seit über einer Jahr gut läuft und zuverlässig Werte von Umwelt, Stromverbrauch und Solarerzeugung liefert, wollte ich unsere Rotex Heizung noch integrieren. Leider gab es dazu bisher kein Modul und im Internet findet man zum Protokoll rein gar nichts. Ich habe mich deshalb mal selbst daran gemacht und versucht die Kommunikation zwischen der Rotex GSU 540 Gas-Solar-Unit und ihrer Steuerung, der EBV Gamma RS 30 zu entschlüsseln. Heraus gekommen ist ein Modul das alle aktuellen Werte und den Status der Heizungsregelung ausliest und das ich hiermit gerne der Community zur Verfügung stelle.
Ich sollte vielleicht noch erwähnen, dass ich zum ersten Mal mit Perl in Kontakt bin und auch im Allgemeinen eher wenig mit Programmierung zu tun habe. Als Basis diente mir das Modul 00_WHR962.pm. Dennoch hoffe ich, dass das Modul sauber arbeitet - hier verrichtet es zumindest seit fast 2 Wochen unauffällig seinen Dienst.
Noch etwas zur notwendigen Hardware: Die Rotex GSU ist mit der EBV Gamma über eine 2-Draht RS485 Busleitung verbunden. Es ist für FHEM somit nur ein RS485 to USB Adapter (oder ähnliches) notwendig. Der Serial-Port wird auf 9600, 8 Bits, 1 Stopbit, Keine Flusskontrolle, keine Parität eingestellt, wobei für FHEM nur die Baudrate relevant ist. Wenn von Interesse kann ich auch gerne meine bisherigen Erkenntnisse zum Aufbau des Protokolls mitteilen. Das Modul arbeitet ausschließlich lesend, d. h., es sendet von sich aus keinerlei Daten. Eine Regelung der Heizung ist somit (bisher) noch nicht möglich. Wer möchte kann sich daran gerne mal versuchen.
Im Anhang das Modul.

Gruß Heiko

heiko322

Screenshot der möglichen Werte und Plots:

wiz

Danke - da weiß ich was ich im Herbst/Winter mal probieren werde. Gibt es Doku wie der Bus an den RS485 angeschlossen werden muss? Oder ist das bei der Heizung halbwegs eindeutig?

Tobi133

Hallo,
ich versuche mich gerade an dem RS485 Protokoll meiner Rotex HPSU Wärmepumpe. Bis jetzt hatte ich jedoch noch keinen Erfolg das Protokoll zu entschlüsseln. Die RS485 Daten greife ich direkt an der vorgesehenen Schnittstelle ab. Wäre klasse, wenn man an das Protokoll rankommen könnte.
Es geht mir nur ums Auslesen.
Danke im Voraus.
Gruß, Tobi

heiko322

#4
Hallo und sorry, dass ich erst jetzt antworte. Ich hatte leider keine Mitteilung bekommen, dass in diesen Thread neue Nachrichten vorliegen. Zur Entschlüsselung des Protokolls habe ich ein paar Notizen direkt im Modul als Kommentar hinterlassen. Hier ist der relevante Bereich:

# Da das Datenprotokol unprotokoliert ist folgen nun einige Hinweise und
# meine bisherigen Entschlüsselungsversuche:
# Der Serial-Port wird auf 9600, 8 Bits, 1 Stopbit, Keine Flusskontrolle, 
# keine Parität eingestellt, wobei wohl nur die Baudrate relevant ist.
# Die einzelnen Sequenzen im Sendefluss haben eine CRC16 Checksumme vom
# Typ RC-CCITT Kermit (width=16 poly=0x1021 init=0x0000 refin=true
# refout=true xorout=0x0000 check=0x2189 name="KERMIT").
# Zum Testen: http://www.lammertbies.nl/comm/info/crc-calculation.html .
# Die komplette Sequenz wird ziemlich genau 4x pro Minute gesendet.
# Startbyte ist 0x82, davor liegt 0x06 oder 0x41 bzw. eine Folge dieser
# beiden Bytes. Das Schlussbyte ist 0x03. Davor befinden sich 2 Bytes
# welche die CRC16 Checksumme der Sequenz beginnend nach dem Startbyte
# bis zur Checksumme bilden. Es folgt eine vollständige Datenfolge zur
# Verdeutlichung:
#410641 82 60 20 01 21 F1 D1A8 03 06
#410641 82 60 20 10 21 01020238000000000000000000000000 A944 03 06 424242C3C3C3444444C5C5C5C6C6C6474747484848
#410641 82 60 20 01 21 F2 4A9A 03 06
#410641 82 60 20 10 21 00000000000000000000000000000000 ED5A 03 06
#410641 82 60 20 01 21 F3 C38B 03 06
#410641 82 60 10 01 21 09 E49F 03 06
#             82 41 20 09 21 032B243908DB080D12 4C2A 03
#410641 82 60 20 01 21 F4 7CFF 03 06
#410641 82 60 10 01 21 09 E49F 03 06
#             82 41 20 09 21 040CF6FB3C0B310100 26A4 03
#410641 82 60 20 01 21 F5 F5EE 03 06
#410641 82 60 10 01 21 09 E49F 03 06
#             82 41 20 09 21 056400B31194119407 C1AB 03
#410641 82 60 20 01 21 F6 6EDC 03 06
#410641 82 60 10 01 21 09 E49F 03 06
#             82 41 20 09 21 069E640A020AFF2500 CE93 03 424242C3C3C3444444C5C5C5C6C6C6474747484848 D1D1D16060601D1D1D1E1E1E9F9F9FD1D1D1D2D2D2535353D4D4D4555555565656D7D7D7D8D8D85959595A5A5ADBDBDB5C5C5CDDDDDDDEDEDE5F5F5F
# Nach Byte 0x21 folgen die eigentlichen Daten. Das Byte davor scheint
# die Länge der Daten anzugeben. Wiederrum davor steht vermutlich die
# Adressierung und die Art der Sequenz. Das konnte ich bisher noch nicht
# entziffern.
# Die Daten, die ich bisher zuordnen konnte befinden sich im obigen
# Beispiel in Zeile 7 und dort wie bereits erwähnt nach 0x21:
# 032B243908 -> 0x03 ist die Funktion/Register?, 0x2B=43 ist die
# Vorlauftemperatur, 0x24=36 ist die Rücklauftemperatur, 0x39=57 ist
# die Temperatur des Warmwassers und 0x08=8 ist die Außentemperatur.
# Diese Werte stammen vom Heizkessel. In Zeile 2 befinden sich die
# Soll-Werte die von der Steuerung kommen: Das zweite 0x02 ist der
# Soll-Zustand (2 = HK ein/WW aus; 0 = HK aus/WW aus; 3 = HK ein/
# WW ein; 1 = HK aus/WW ein) und 0x38=56 ist die Soll-Vorlauftemperatur.
# Dann noch gegen Ende der Sequenz in Zeile 10: 0x01 gibt den
# Betriebszustand des Kessels aus:
0 = Ruhelage / 1 = Belüften / 2 = Zündung / 3 = Heizen / 4 = Warmwasser / 5 = Warten / 6 = Brenner aus / 7 = Pumpennachlauf Heizung / 8 = Pumpennachlauf


Gruß Heiko

hpd96

Hallo,
habe auch eine HPSU compact 508 von 2012 - v1.4.
im Menü sehe ich den Eintrag 'schnittstelle' mit zyklus 30sec und Baudrate.

Weiss jmd. wo die Schnittstelle sitzt? (hatte die Steuerung schon auf für Einbau BSK-Karte für Solaris)
rs232 oder rs485 ?
CAN wohl erst bei neueren Modellen ?

danke und Gruss Peter

Volker

#6
@heiko322

Hallo,

ich wollte heute mal dein Modul ausprobieren, scheitere aber aber schon beim Verbindungsaufbau.

Beim definieren des Gerätes erhalte ich folgende Fehlermeldung

Global symbol "%EBV_sets" requires explicit package name at /opt/fhem/FHEM/69_EBV.pm line 287

Ich kann nirgends die definition für " $EBV_sets{"logmode"}" finden.

Hast du eine Idee wie ich dein Modul zum laufen bringen kann?
MfG

Volker

RasPi als FHEM-Plattform, BananaPi, HMLan, HM-LC_Bl1PBU-FM, HM-LC-SW4-DR, HM-LC-SW4-PCB, HM-TC-IT-WM-W-EU, HM-CC-RT-DN

heiko322

#7
Hallo Volker,
das scheint wohl an einer etwas anderen Perl Version als der meinigen zu liegen.
Quick&Dirty: kommentiere gerade "use strict;" am Anfang von 69_EBV.pm per Raute aus, also:
#use strict;
speichern, Modul neu laden per 'reload 69_EBV' und dann sollte es zu definieren gehen.
Ich werde später noch eine neue Version hier anhängen.

Gruß Heiko

P.S.: überarbeitete Version nun im Anhang. Feedback willkommen.

Volker

#8
Hallo Heiko,

vielen dank für das neue Modul.

Ich konnte das Modul leider erst heute testen, die Verbindung scheint zu funktionieren. Mein Protokoll sieht aber etwas anders aus.
Das liegt wahrscheinlich daran das ich eine andere Steuerung habe ( Gamma 22B in einer Hautec Wärmepumpe).

Hie mal ein Auszug eines Mitschnitts der Kommunikation:

0000: 0x82 0x10 0x20 0x09 0x05 0x00 0x36 0x25 0x19 0x07 0x86 0x16 0x07 0x08 0x1E 0xC4 0x03
0011: 0x82 0x10 0x20 0x09 0x05 0x00 0x40 0x25 0x19 0x07 0x86 0x16 0x07 0x08 0xD6 0x51 0x03
0022: 0x82 0x10 0x20 0x09 0x05 0x00 0x40 0x25 0x19 0x07 0x86 0x16 0x07 0x08 0xD6 0x51 0x03


Ich werde mal versuchen dein Modul an meine Steuerung anzupassen.

Im Anhang ein Log von meiner Steuerung. Ich kann hier weder die Startsequenz noch die Endsequenz identifizieren.
MfG

Volker

RasPi als FHEM-Plattform, BananaPi, HMLan, HM-LC_Bl1PBU-FM, HM-LC-SW4-DR, HM-LC-SW4-PCB, HM-TC-IT-WM-W-EU, HM-CC-RT-DN

dbox2user

Hallo Heiko!

Dein Modul klingt ja super!
Jetzt "muss" ich natürlich unbedingt unseren Rotex Ölbrenner an Fhem anbinden. :)
Wenn mein bestellter RS485-USB Wandler kommt, werde ich das gleich testen.
Kannst Du einen bestimmten RS485-USB Wandler empfehlen, bzw kennst Du eine günstige Möglichkeit um per Ethernet auf den RS485 Bus zuzugreifen?

Achja, wenn Du noch einen Auszug aus Deiner Config mit dem "define" posten könntest, wäre das wahrscheinlich für viele noch einfacher!
Danke schonmal,

Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

Volker

Hallo Christian,

ich nutze einen RS485 zu USB-Adapter der an einem Raspberry hängt.
Funktioniert bis jetzt einwandfrei.

Volker
MfG

Volker

RasPi als FHEM-Plattform, BananaPi, HMLan, HM-LC_Bl1PBU-FM, HM-LC-SW4-DR, HM-LC-SW4-PCB, HM-TC-IT-WM-W-EU, HM-CC-RT-DN

dbox2user

#11
So...
heute kam endlich mein USB-RS485-Adapter. :D
https://www.amazon.de/gp/product/B00K67XKVI/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

Gleich an meinen Test-Fhem-Raspberry eingesteckt und die beiden A/B- Klemmen des Sticks mit den beschrifteten A/B-Klemmen des EBV Reglers (ROTEX Gamma 23 B) verbunden.
In Fhem habe ich es wie folgt definiert:
define myBoiler EBV /dev/ttyUSB0@9600
attr myBoiler room Heizung


Das ganze wird bei mir dann so angezeigt:
Internals:
   DEF        /dev/ttyUSB0@9600
   DeviceName /dev/ttyUSB0@9600
   FD         32
   NAME       myBoiler
   NR         127
   PARTIAL
   STATE      opened
   TYPE       EBV
   Readings:
     2016-10-24 18:12:13   state           opened
Attributes:
   room       Heizung


Mehr leider nicht.... keine Werte oder so. :'(

Muss ich noch irgendwas einstellen??

Im Logfile steht bei jedem Neustart:
2016.10.24 18:12:13 3: Opening myBoiler device /dev/ttyUSB0
2016.10.24 18:12:13 3: Setting myBoiler serial parameters to 9600,8,N,1
2016.10.24 18:12:13 3: myBoiler device opened


Bei meiner Heizung ist bisher nichts an dem RS485 Bus angeschlossen. Also kein Raumregler oder so.
Kann es sein, dass man nur "mithören" kann wenn ein Raumregler vorhanden ist, der sich mit dem Hauptregler "unterhält", oder funktioniert es sicher auch wenn nur der USB-RS485 Adapter an dem Bus angeschlossen ist?

Den Heizungsregler habe ich auch mal bei angeschlossenem USB-Adapter aus und wieder eingeschaltet, mit der Hoffnung dass er vielleicht dann "gesprächiger" wird.

Achja..... zwischen dem USB-Adapter und dem Heizungsregler hängen ca. 2m Klingeldraht und ich habe keinen Busabschlusswiderstand eingebaut.
Der USB-Adapter hat keinen Masseanschluss, den ich mit der Heizung verbinden könnte. Kann das ein Problem machen?

Wo stellt man eigentlich ein :
Zitat# Der Serial-Port wird auf 9600, 8 Bits, 1 Stopbit, Keine Flusskontrolle, 

Viele Fragen auf die hoffentlich jemand Antworten weiß. ;)

Danke schonmal,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

dbox2user

Nachdem ich bei meinem Versuch ja leider keinerlei Readings bekommen habe , kam mir die Vermutung, dass es natürlich nur etwas zum "mithören"
gibt, wenn sich auch zwei Geräte "unterhalten".
Bisher hatte ich ja noch keine Raumstation am RS485 Bus , sondern nur den USB-RS485 Adapter.

Also habe ich mir eine RS10 Raumstation besorgt. Diese kommuniziert problemlos mit meiner Rotex Gamma 23B Steuerung und zeigt die Werte an.

Der USB-RS485 Adapter hängt nun mit am Bus.
Leider bekomme ich noch immer keinerlei Readings oder sonstige Lebenszeichen.
Nur das  "2016-10-24 18:12:13   state           opened "

Auch mit "verbose 5" im EBV-Modul bekomme ich keinerlei Log-Einträge.

Kann mir jemand weiter helfen??

Wie kann ich eigentlich mitlesen ob der USB-RS485 Adapter überhaupt etwas am USB-Anschluss ausgibt??
Der Adapter hängt direkt am Raspberry auf dem Fhem läuft.
Muss ich etwas bestimmtes z.b. im Terminalfenster eingeben?

Gruß,
Christian
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

dbox2user

Hallo Leute!

Mittlerweile weiß ich, dass ich am Windows Notebook z.B. mit dem Tool "Tera Term" den COM-Port abhören kann.
Am Raspberry geht es mit dem Befehl "screen ..." .

Ich habe schon zwei verschiedene RS485-USB Adapter ausprobiert. Mit beiden das gleiche Ergebnis.

Ich bekomme keine reine Zahlen, sondern das nachfolgende Kauderwälsch.

Grundsätzlich habe ich es mit 9600 Baud, 8 Bits, 1 Stopbit, Keine Flusskontrolle und keine Parität eingestellt.
Aber auch diverse andere Einstellungen probiert.

Kann mir bitte jemand weiterhelfen???????

Gruß,
Christian

dUÎp,#(º, (+4dB
* * 4.ï퐐,# (+4dB
* * 4.?¨,#@"•, @ÿþ_U(0MMPdfMVA5»£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMUA=Eÿ, fMUA=Eÿ, fMUA=Eÿ, fMUA=Eÿ, fMUA=Eü, 2 (°èü, 2 (°èü, 2 (°èü, 2 (°èü, 2 (°è££,ª†,#Š, 4 (°`lddUË㐐,#(º, (+4dB
* * 4.ï퐐,# (+4dB
* * 4.?¨,#@"•, @ÿþ_T(0MMPdfMUAÀ£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMTAå\ÿ, fMTAå\ÿ, fMTAå\ÿ, fMTAå\ÿ, fMTAå\ü, 6 (°Ýþü, 6 (°Ýþü, 6 (°Ýþü, 6 (°Ýþü, 6 (°Ýþ££,ª†},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,ɐ,#Š, 9 (°`lddU*Ґ,#(º, (+4dB
* * 4.ï퐐,# (+4dB
* * 4.?¨,#@"•, @ÿþ_S(0MMPdfMTABg£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMSAíÿ, fMSAíÿ, fMSAíÿ, fMSAíÿ, fMSAíü, B (°z`ü, B (°z`ü, C (°Åáü, C (°Åáü, C (°Å၁££,ª†,#Š, D (°`lddUD—,#(º, (+4dB
* * 4.ï퐐,# (+4dB
* * 4.?¨,#@"•, @ÿþ_S(0MMPdfMSAJ*£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMSAíÿ, fMSAíÿ, fMSAíÿ, fMSAíÿ, fMSAíü, F (°¤vü, G (°÷ü, G (°÷ü, G (°÷ü, G (°÷££,ª†,#Š, H (°`lddUî,#(º, (+4dB
* * 4.ï퐐,# (+4dB
* * 4.?¨,#@"•, @ÿþ_R(0MMPdfMSA{£££££œœœœœ},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,ɐ,#Š, Q (°`lddU3U,#(º, (+4dB
* * 4.ï퐐,# (,4dB
* * 4.™,,#@"•, @ÿþ_R(0MMPdfMSA{ŸŸŸŸŸ,#ª›Hÿ, fMRAÿ, fMRAÿ, fMRAÿ, fMRAÿ, fMRAü, S (°½ºü, S (°½ºü, S (°½ºü, S (°½ºü, S (°½º££,ª†,#Š, T (°`lddU 5,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ_R(0MMPdfMRAËb£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ü, W (°c¬ü, W (°c¬ü, W (°c¬ü, W (°c¬ü, X (°Ñ££,ª†},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,ɐ,#Š, (°`lddUq§,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ_Q(0MMPdfMQAH»£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ÿ, fMQA]"ü, (°Z,ü, (°Z,ü, (°Z,ü, (°T°ü, (°T°££,ª,#Š, (°`lddUȏ,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ_P(0MMPdfMQA꣣£££"""""•••••–––––™™™™™šššššœœœœœ,# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,ɐ,#Š, (°`lddU¿M,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ^P(0MMPdfMQA[ŸŸŸŸŸ,#ªYÿ, fMPA...;ÿ, fMPA...;ÿ, fMPA...;ÿ, fMPA...;ÿ, fMPA...;ü, (°öü, (°öü, (°öü, (°"wü, (°"w!!!!!"""""££,ª†,#Š, (°`lddUe,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ^O(0MMPdfMPA2£££££œœœœœŸŸŸŸŸ,#ª›Hÿ, fMOAÜ-ÿ, fMOAÜ-ÿ, fMOAÜ-ÿ, fMOAÜ-ÿ, fMOAÜ-ü, (°üaü, (°üaü, (°üaü, (°üaü, (°üa££,ª†,#Š, (°`lddU͐,#(º, (,4dB
* * 4.Iǐ,# (,4dB
* * 4.™,,#@"•, @ÿþ^O(0MMPdfMOAk £££££œœœœœ},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,É},# f,Éý,#Š, " (
Fhem 5.8 auf Raspberry Pi2; 1 Wire OWSERVER mit DS9490R und OWX DS2480;AVR-NET-IO mit 1Wire;  LOGO8; Kostalpiko; Selbstbau CUL; Arduino mit cFirmata; Denon AVR; Samsung TV; Fritzbox;

Tungsten

Hallo Christian,

bist Du weiter gekommen?

Plane am WE meine Rotex HPSU bi-bloc von 2010 anzuschliessen.

VG