Vaillant X6 Klemme über ESP8266 an FHEM

Begonnen von DirkS, 05 November 2015, 15:53:48

Vorheriges Thema - Nächstes Thema

DirkS

Hallo zusammen,

lese nun schon länger passiv mit. Habe schon einige Dinge probiert und überlege aktuell wie ich meine 10 Jahre alte Vaillant Therme ins FHEM integriert bekomme.
Die Therme hat noch kein eBus sondern noch den X6 Anschluss über den RJ11 Stecker.
Die Idee wäre nun ein ESP8266 mit der https://github.com/jeelabs/esp-link Software zu versehen. Dann erst einmal mit YPort darauf zugreifen.
Der X6 sollte alles nötige (also Betriebsspannung und ein TTL RS232) bereitstellen. Es sollte also keine weitere Spannungsquelle nötig sein.

Aktuell wäre ich einfach über ein paar Rückmeldungen dankbar, ob es sich überhaupt lohnt da Zeit zu investieren.

Gruß
Dirk

StralsunderCarl

Hallo Dirk,

bist du mit deinen Projekt schon weiter gekommen? Kannst die X6 Schnitstelle mit den Ebus-Adapter ansprechen?

VG Carlo

Wetterhexe

Ich habe eine ältere atmotec, die ich über die X6 Schnittstelle auslese.

Die Therme hängt über einen USB/serial Adapter an einem Raspberry. Das auslesen erledigt ein selbstgeschriebenes python script, das logfiles für fhem und OMD (Nagios) erzeugt. In fhem kriege ich das dann über CustomReadings.

Falls du es nachbauen willst stell ich gern mehr Info zur Verfügung.

lg, Christina

Kado-Din

Hallo Christina,
bin beim mitlesen gerade hier gelandet. Ich würde gerne mehr erfahren über die Anbindung an FHEM. Wäre Nett wenn Du mehr Infos zum Nachbau zur Verfügung stellen könntest.

Gruß
Karsten

Wetterhexe

Hallo Karsten,

der X6 connector ist im Grunde eine serielle Schnittstelle mit TTL Pegel. Converter auf USB gibts beim Chinamann oder Amazon.
Das Kabel sollte so aussehen:

Vaillant               USB
+---+
| 6 |    +24V
| 5 |    GND    ---------   GND
| 4 +-|  TX     ---------   RX
| 3 +-|  RX     ---------   TX
| 2 |    +5V
| 1 |    N.C.
+---+


Das script im Anhang stellt die Verbindung zur Therme her und liest die wichtigsten Werte aus (aus meiner subjektiven Sicht jedenfalls ;))
Eine rudimentäre Beschreibung des Protokolls gibts hier: http://old.ethersex.de/index.php/Vaillant_X6_Schnittstelle

Der output des scripts landet in einem file und sollte zB. aussehen:

VorlaufSET=75.8
VorlaufIST=29.8
VorlaufSOLL=75.8
SpeicherSET=55.8
SpeicherIST=51.1
Ruecklauftemp=33.7
SommerWinter=1
Thermostat=0
Pumpe=0
Gasventil=0
Statuscode=30
Statustext=Raumthermostat blockiert Heizbetrieb


Um aus dem file readings in fhem zu zaubern, verwende ich ein CustomReadings object:

defmod heatingdata CustomReadings
attr heatingdata interval 60
attr heatingdata readingDefinitions COMBINED:qx(cat /tmp/vaillant.log|cut -d '=' -f2),VorlaufSET,VorlaufIST,VorlaufSOLL,SpeicherSET,SpeicherIST,Ruecklauftemp,SommerWinter,Thermostat,Pumpe,Gasventil,Statuscode,Statustext


Bei mir läuft das script jede Minute via cron.
Hoffe ich hab nix wichtiges vergessen  :)

lg, Christina

Kado-Din

Hallo Christina,
Danke für die schnelle Antwort, werde mal probieren, es so zum laufen zu bringen.

Gruß
Karsten

4ineins

#6
Hallo Christina,

ich möchte auch gern meine Heizung genauer "abhören" - was genau muss ich beschaffen für einen X6 USB connector?
(bin Elektronik - Laie :-) )
Vielen Dank im voraus!

("X6 connector ist im Grunde eine serielle Schnittstelle mit TTL Pegel. Converter auf USB gibts beim Chinamann oder Amazon")

Viele Grüße
Achim

Wetterhexe

Hallo Achim,

sowas zB:
https://www.amazon.de/DSD-TECH-Seriell-Konverter-Kompatibel-Mehrfarbig/dp/B072K3Z3TL/ref=sr_1_1_sspa?ie=UTF8&qid=1546633879&sr=8-1-spons&keywords=cp2102&psc=1

Dann brauchst du noch ein 4-poliges RJ 11 Kabel (Telefonkabel), das verbindest du dann mit den entsprechenden Pins am Konverter (siehe Skizze). Kabel gibts ebenfalls bei Amazon (oder du hast eins in der Bastelkiste).

DirkS

#8
Asche auf mein Haupt!
Habe es zwar losgetreten, aber aus privaten und beruflichen Gründen musste das gesamte Thema Smarthome eine sehr lange Zeit ruhen.
Habe nun den Karton beim Aufräumen im Schrank entdeckt und auch gesehen, dass es inzwischen eine Lösung gibt.
Möchte nun wieder hier anknüpfen. Im Karton fand sich u.A. noch ein Arduino Uno und ein Ethernet Shield. Da gleich neben der Therme der Telefonanschluss und die Fritzbox ist wollte ich es nun vielleicht mit dem Arduino probieren.
Vielleicht habe ich mich zum Start da gleich übernommen. Auf dem Uno sollte ein MQTT Client laufen, der die eingesammelten Daten regelmäßig an den Broker übermittelt.
Ich scheitere aber schon beim Konvertieren des Python Code auf Arduino. Durch die begrenzten Resourcen muss man sich halt um einiges mehr kümmern, als in einer Hochsprache.
Mal sehen, ob ich es diesmal bis zum Ende schaffe...

[Nachtrag]
Hab mal ein bisschen zusammenkopiert und das Resultat (ungetestet) hier rangehängt.
Es wird die MQTT Bibliothek von http://knolleary.net/arduino-client-for-mqtt/ benötigt.
Grundlage war dies Beispiel
https://blue-pc.net/2014/10/15/mqtt-nachrichten-mit-dem-arduino-empfangen-senden/
Habe versucht dann den Python Code von Christina zu recyceln. Da so gut wie keine Python Kenntnisse vorhanden sind, ist es dann doch zum Teil die einfachere Lösung von
https://ab-log.ru/smart-house/heating-automation/vaillant-rs232
geworden. Muss jetzt noch die Hardware zusammenstecken und mal einen Test starten.
Das Sketch habe ich nun noch um einen Webserver erweitert, der auch die Werte anzeigt. Zudem ist das Handling im Code etwas verbessert.
Ist aber immer noch nicht live getestet...
Verdrahtet sollte nachdem das Ethernet Shield auf dem Uno steckt wie folgt aussehen:

jms

#9

Wenn ich Pin 2 und 5 der X6-Schnittstelle mit 5V und GND des ESP8266 verbinde, geht die Therme sofort aus (das Display wird dunkel).
Ich glaube nicht dass Pin 2 das eine 5V-Versorgung ist.

Man kann mit dem UART auf dem ESP8266 oder ESP32 einmal pro Minute die Werte auslesen und per Wlan zur Verfügung stellen.  Das sind Hardwarekosten von 10€.
Man macht den ESP8266 direkt in die Therme.

Die Konfiguration für ESPhome findet ihr hier: https://github.com/martin3000/ESPhome

DirkS

#10
Klingt sehr cool!
Da ich mal wieder nicht über den Entwurfsstatus gekommen bin, werde ich es einmal mit dem ESP probieren.
Welche Pin-Belegung ist nun korrekt? Liegen die 24V an Pin 1?

Nur noch einmal nachgefragt: die 5V wurden als Eingang oder Ausgang an die Pins gelegt?

mfischer-ffb

#11
Hallo JMS,

ich versuche vergeblich dein Programm mit esphome auf mein wemos mini  board zu bringen,
die firmware wird zwar compiliert und auch aufgespielt aber danach endet das in einer bootschleife ...


[18:42:10][I][logger:156]: Log initialized
[18:42:10][C][ota:364]: There have been 5 suspected unsuccessful boot attempts.
[18:42:10][W][app:021]: Component already registered! (0x3fff220c)
[18:42:10][I][app:028]: Running through setup()...
[18:42:10][C][uart:111]: Setting up UART bus...
[18:42:10][C][wifi:033]: Setting up WiFi...
[18:42:10][D][wifi:304]: Starting scan...
[18:42:13]
[18:42:13]Soft WDT reset
[18:42:13]
[18:42:13]>>>stack>>>
WARNING Found stack trace! Trying to decode it
[18:42:13]
[18:42:13]ctx: cont
[18:42:13]sp: 3ffffca0 end: 3fffffc0 offset: 01b0
[18:42:13]3ffffe50:  3fff2604 3fff25d4 3fff220c 4020dfc1 
[18:42:13]3ffffe60:  3fff1a74 3fff25d4 3fff04c0 4021fe00 
[18:42:13]3ffffe70:  3fff2604 3fff258c 3fff04c0 4010057c 
[18:42:13]3ffffe80:  00000000 00000000 00000037 4021ec08 
[18:42:13]3ffffe90:  00000067 0000ea60 3fff04c0 4021f030 
[18:42:13]3ffffea0:  3fff1004 00000009 3fff04c0 00000100 
[18:42:13]3ffffeb0:  3fff1a74 00000008 3fff04c0 4020c6ae 
[18:42:13]3ffffec0:  3fff1004 00000009 00000001 4022a7d6 
[18:42:13]3ffffed0:  00000100 3fff1f1c 3fff1f40 4020dd92 
[18:42:13]3ffffee0:  00000000 00000000 00000000 3fff0528 
[18:42:13]3ffffef0:  3fff1fdc 3fff04c0 00000000 4020e8b9 
[18:42:13]3fffff00:  3fff1b98 00000000 00000000 3fff1bb8 
[18:42:13]3fffff10:  00000000 00000000 00000000 40221670 
[18:42:13]3fffff20:  00000000 40221670 00000000 40221670 
[18:42:13]3fffff30:  00000000 40221670 00000000 40221670 
[18:42:13]3fffff40:  00000000 00000000 3fff1a34 00000000 
[18:42:13]3fffff50:  4020dd64 4020ddd0 3fff1c3c 3fff1c40 
[18:42:13]3fffff60:  3fff1c40 3fff1fdc 3fff1f64 3fff1ea4 
[18:42:13]3fffff70:  3fff1e2c feefeffe feefeffe feefeffe 
[18:42:13]3fffff80:  3fff1fdc 00000050 00000001 feefeffe 
[18:42:13]3fffff90:  feefeffe feefeffe feefeffe 3fff07c8 
[18:42:13]3fffffa0:  3fffdad0 00000000 3fff0798 4021d240 
[18:42:13]3fffffb0:  feefeffe feefeffe 3ffe8580 40100d39 
[18:42:13]<<<stack<<<
[18:42:13]
[18:42:13] ets Jan  8 2013,rst cause:2, boot mode:(3,6)
[18:42:13]
[18:42:13]load 0x4010f000, len 1384, room 16
[18:42:13]tail 8
[18:42:13]chksum 0x2d


ich habe einen raspi3 neu aufgesetzt mit raspian,  phyton ist 2.7 kann das evtl. daran liegen ?

für hinweise wäre ich dankbar ...
Gruß
Markus

DirkS

Device richtig gewählt?
Alternativ vorher den ESP vorher einmal komplett den Flash überschrieben?

mfischer-ffb




ja der bord type passt (wemos mini) hab nen anderes .yaml File probiert das läuft ohne Probleme...

jetzt hab ich python3.6 probiert leider auch ohne erfolg dafür kommen jetzt Fehlermeldungen...

[20:00:03] ets Jan  8 2013,rst cause:2, boot mode:(3,6)
[20:00:03]
[20:00:03]load 0x4010f000, len 1384, room 16
[20:00:03]tail 8
[20:00:03]chksum 0x2d
[20:00:03]csum 0x2d
[20:00:03]v8b899c12
[20:00:03]~ld
[20:00:03][I][logger:156]: Log initialized
[20:00:03][C][ota:364]: There have been 8 suspected unsuccessful boot attempts.
[20:00:03][W][app:021]: Component already registered! (0x3fff21d4)
[20:00:03][I][app:028]: Running through setup()...
[20:00:03][C][uart:111]: Setting up UART bus...
[20:00:03][C][wifi:033]: Setting up WiFi...
[20:00:03][D][wifi:304]: Starting scan...
[20:00:05]
[20:00:05]Soft WDT reset
[20:00:05]
[20:00:05]>>>stack>>>
WARNING Found stack trace! Trying to decode it
[20:00:05]
[20:00:05]ctx: cont
[20:00:05]sp: 3ffffc90 end: 3fffffc0 offset: 01b0
[20:00:05]3ffffe40:  3fff25cc 3fff259c 3fff21d4 4020df3c 
WARNING Decoded 0x4020df3c: Vaillantx6::getParm(unsigned char*, int)
[20:00:06]3ffffe50:  3fff25cc 3fff259c 3fff21d4 4020dfc1 
WARNING Decoded 0x4020dfc1: Vaillantx6::update()
[20:00:06]3ffffe60:  fffec2a2 3fff259c 3fff04a0 4021fe00 
WARNING Decoded 0x4021fe00: std::_Function_handler<void (), esphome::PollingComponent::call_setup()::{lambda()#1}>::_M_invoke(std::_Any_data const&) at component.cpp
[20:00:06]3ffffe70:  3fff25cc 3fff2554 3fff04a0 4010057c 
WARNING Decoded 0x4010057c: esphome::Scheduler::call()
[20:00:06]3ffffe80:  00000000 00000000 00000037 4021ec08 
WARNING Decoded 0x4021ec08: _umm_free at umm_malloc.cpp
[20:00:06]3ffffe90:  00000067 0000ea60 3fff04a0 4021f030 
WARNING Decoded 0x4021f030: free
[20:00:06]3ffffea0:  3fff0fe4 00000009 3fff04a0 00000100 
[20:00:06]3ffffeb0:  3fff1a54 00000008 3fff04a0 4020c6ae 
WARNING Decoded 0x4020c6ae: esphome::Application::setup()
[20:00:06]3ffffec0:  3fff0fe4 00000009 00000001 4022a7d6 
WARNING Decoded 0x4022a7d6: operator delete(void*) at /workdir/arena/gcc/xtensa-lx106-elf/libstdc++-v3-nox/libsupc++/../../../../../dl/gcc-xtensa/libstdc++-v3/libsupc++/del_op.cc:48
[20:00:06]3ffffed0:  00000100 3fff1ee4 3fff1f08 4020dd92 
WARNING Decoded 0x4020dd92: std::_Function_base::_Base_manager<setup::{lambda()#5}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<setup::{lambda()#5}> const&, std::_Manager_operation) at main.cpp
[20:00:06]3ffffee0:  00000000 00000000 00000000 3fff0508 
[20:00:06]3ffffef0:  3fff1fa4 3fff04a0 00000000 4020e8b9 
WARNING Decoded 0x4020e8b9: setup
[20:00:06]3fffff00:  3fff1b78 00000000 00000000 3fff1b98 
[20:00:06]3fffff10:  00000000 00000000 00000000 40221670 
WARNING Decoded 0x40221670: uart_tx_enabled
[20:00:06]3fffff20:  00000000 40221670 00000000 40221670 
WARNING Decoded 0x40221670: uart_tx_enabled
WARNING Decoded 0x40221670: uart_tx_enabled
[20:00:06]3fffff30:  00000000 40221670 00000000 40221670 
WARNING Decoded 0x40221670: uart_tx_enabled
WARNING Decoded 0x40221670: uart_tx_enabled
[20:00:07]3fffff40:  00000000 00000000 3fff1a14 00000000 




DirkS

Da bin ich erst einmal überfragt.
Wo liegt der Unterschied zwischen den beiden Konfigurationen?