Ihre Cookie-Einstellungen
Diese Webseite verwendet Cookies. Mit einem Klick auf "Zustimmen" akzeptieren Sie die Verwendung der Cookies. Die Daten, die durch die Cookies entstehen, werden für nicht personalisierte Analysen genutzt. Weitere Informationen finden Sie in den Einstellungen sowie in unseren Datenschutzhinweisen. Sie können die Verwendung von Cookies jederzeit über Ihre anpassen. Ihre Zustimmung können Sie jederzeit mit Wirkung für die Zukunft widerrufen.

Ihre Cookie-Einstellungen

Um Ihnen eine optimale Funktion der Webseite zu bieten, setzen wir Cookies ein. Das sind kleine Textdateien, die auf Ihrem Computer gespeichert werden. Dazu zählen Cookies für den Betrieb und die Optimierung der Seite. Hier können Sie auswählen, welche Cookies Sie zulassen:
Erforderliche Cookies
Diese Cookies sind notwendig, damit Sie durch die Seiten navigieren und wesentliche Funktionen nutzen können. Dies umschließt die Reichweitenmessung durch INFOnline (IVW-Prüfung), die für den Betrieb des HaustechnikDialogs unerlässlich ist. Wir benutzen Analysecookies, um die Zahl der individuellen Besucher auf Basis anonymer und pseudonymer Informationen zu ermitteln. Ein unmittelbarer Rückschluss auf eine Person ist dabei nicht möglich.
Optionale analytische Cookies
Diese Cookies helfen uns, das Nutzungsverhalten besser zu verstehen.Sie ermöglichen die Erhebung von Nutzungs- und Erkennungsmöglichkeiten durch Erst- oder Drittanbieter, in so genannten pseudonymen Nutzungsprofilen. Wir benutzen beispielsweise Analysecookies, um die Zahl der individuellen Besucher einer Webseite oder eines Dienstes zu ermitteln oder um andere Statistiken im Hinblick auf den Betrieb unserer Webseite zu erheben, als auch das Nutzerverhalten auf Basis anonymer und pseudonymer Informationen zu analysieren, wie Besucher mit der Webseite interagieren. Ein unmittelbarer Rückschluss auf eine Person ist dabei nicht möglich.

Alle
Foren
Stiebel Eltron WPF per "Konsole" auslesen und Parameter ändern
Verfasser:
Marc2012
Zeit: 04.07.2014 22:56:50
1
2093656
Hallo zusammen,

es hat etwas gedauert, (Nachwuchs bekommen :-) ) aber wie angekündigt der Thread zum auslesen der Stiebel Eltron WPF/WPMII.

Dieser Thread baut auf Lötbars Thread auf, der es geschafft hat den optischen RS232 Adapter nachzubauen.
Klick!
Lötbar kann euch für wenig Geld das einen Adapter bauen, einfach bei ihm melden.

Das Steuern über die normale Hersteller-Software funktioniert, damit lässt sich aber keine Automation erreichen um z.B. wie in meinem Fall den PV Strom optimal zu nutzen.

Tipp vorab:
Schließt man die WP an die Fritzbox an, kann der "Fritzbox Fernanschluss" genutzt werden um die Hersteller-Software zu nutzen. Wird der Fernanschluss deaktiviert, ist die WP per Device /dev/ttyUSB[01] über telnet ansprechbar!

--------------------------------------------
Werte auslesen (z.B. Sole-Temperatur, Rücklauf-Temperatur etc.)
Um einen Wert auszulesen, muss man ihn anfordern (Request), dann bekommt man eine Antwort (Response) mit entsprechenden Wert. Es gibt kein zyklischen Senden wie z.B. bei Stromzählern. Für einige Werte müssen mehrere Request gemacht werden, die dann zusammengesetzt werden! Es hat einiges an nerven gekostet das rauszufinden. :-) Zu guter letzt habe ich Arbeit in Scripte gesteckt die jede Menge Kombinationen durchprobiert und leserlich dargestellt haben.
Die Requests haben im Prinzip immer den gleichen Aufbau, unterscheiden sich aber zwischen "Werte lesen" und "Werte ändern/schreiben".
So sieht der Request (in HEX) für die Sole-Temperatur aus:
0D00030100FA01D480080268

0D00 -> Leitet IMMER einen Request ein!
030100FA -> Ist ein "Readonly" Request
01D4 -> Zuordnung, also die Quellen-Ist-Temperatur. Es kann durchaus sein das hier nochmehr Informationen versteckt sind. Hier habe ich noch nicht wirklich weiter geguckt, es lassen sich aber Gleichmäßigkeiten zu allen anderen Requests finden.
80080268 -> Noch nicht weiter drum gekümmert, vielleicht

Die Response ist folgende:
03000D0200FA01D400DC02BD
03000D0200FA -> Antwort von der WP, die Antwort vom FEK sieht anders aus! Mehr dazu später.
01D4 - Zuordnung
00DC - Der eigentliche Wert! Hex in dezimal = 220
02 - Ich dachte bisher das wäre der Teiler 10, also 220/10 = 22 = 22°C
BD - ?

Damit hat man eigentlich alles was man braucht um Werte auszulesen!
--------------------------------------------
Werte ändern (z.B. Warmwasser Temperatur)
0D00030000FA0A0601C201DD

0D00 -> Leitet IMMER einen Request ein
030000FA -> Änderungsrequest
0A06 -> ID des Wertes
01C2 -> Der neue Wert, hier 450/10 bzw. 45°C
01 -> siehe Response, Unsicher
DD -> Tricky! Dieser Wert wird bei erhöhen des eigentliches Wertes von 0,5 um 5 erhöht! Vielleicht eine Art Kontrollbit?

Hier zum Verständis Request mit verschiedenen Temperaturen:
42,5°C 0D00030000FA0A0601A901C4
43,0°C 0D00030000FA0A0601AE01C9
43,5°C 0D00030000FA0A0601B301CE
44,0°C 0D00030000FA0A0601B801D3
44,5°C 0D00030000FA0A0601BD01D8
45,0°C 0D00030000FA0A0601C201DD

Response:
555555555555555555550352 -> Änderung erfolgreich
AAAAAAAAAAAAAAAAAAAA06A4 -> Error, Fehler im Request

Und hier das worauf wahrscheinlich viele gewartet haben, eine Liste der gesnifften Requests. Vieles konnte ich schon rausfinden, vieles aber auch noch nicht. Ich werde in dem Drive Ordner immer wieder Infos ablegen und dokumentieren.
https://drive.google.com/folderview?id=0B6fabUcgRpbMbl9sb3pBT3AtWnc&usp=sharing


Hier noch ein paar Infos kurz reingeworfen:
- Die Requests zum ändern/auslesen von Uhrzeiten wird irgendwie die Epoch time benutzt
- FEK Schalter lässt sich auch auslesen, Request fangen dann anders an. Siehe Liste.
- Im Drive Konto liegen tty Einstellungen, die aber noch nicht perfekt sind
- Scripte kann ich nur eingeschränkt anbieten, weil ich ein Konstrukt über Fritzbox/Server über Socket Verbindungen nutze
- Nach einem Request muss ich noch immer ein 0A hinterherschicken, damit ich eine Antwort bekomme
- Ich kann Scripte schreiben, mache es teilweise auf der Arbeit, aber nicht mein Hauptding. Seht mich also als Hobbyentwickler und verzeiht mir komischen Sachen in Scripten. ;-)
- Das wissen hier ist zu 99°C selbst erarbeitet. Damit will ich nur sagen das hier auch Quatsch oder Fehlinformationen drin stehen! :-)
- AN/AUS Parameter sind oft (oder immer) die Werte 4096/65535

So, dass muss erstmal reichen. Ich hoffe das ist nicht zu durcheinander hier.
Ich schmeiße gleich noch ein Paar Infos in das Drive Konto, wenn ich da was aktualisiere werde ich hier im Thread bescheid geben.

EINE BITTE! Wenn ihr bisher unbekannte Werte herausfindet, schreibt sie bitte hier rein! Ich werde das Dokument i Drive Konto dann Updaten! Auch Annahmen/Vermutungen können helfen! Dann haben alle was davon.

Doku usw.

Viele Grüße
Marc

Verfasser:
Lötbar
Zeit: 06.07.2014 18:13:24
0
2094073
Gute Arbeit! Danke für die Pionierarbeit!
Ich hatte selbst schon einiges dechiffriert, allerdings mittels einer WPM (NICHT WPMII !). Dort ist offenbar einiges anders, grundlegend aber gleich (Aufbau der Telegramme). Um Verwirrung zu vermeiden lade ich daher diesbezüglich nichts hoch, da mein eigentliches Ziel auch eine WPMII ist - die WPM hatte ich nur zum testen der Adapter verwendet ;)

Verfasser:
Juerg5524
Zeit: 11.07.2014 14:01:32
1
2095763
Hallo Marc

Die letzten beiden Bytes im Telegramm werden aus der Summe der anderen Bytes gebildet. Das Resultat ist 2-stellig.

Hier Dein Beispiel (alles hexadezimal):

0D + 00 +03 + 00 + 00 + FA + 0a + 06 + 01 + a9 = 01c4

Viele Grüsse
Jürg

Verfasser:
Marc2012
Zeit: 11.07.2014 18:19:57
0
2095875
Hallo Jürg,

stimmt! Eigentlich ja auch fast viel zu offensichtlich mit zwei Partiätsbits. Deswegen nennt man die auch wohl so. :-)

Das kann man auch wunderbar zur Kontrolle mit in Scripte aufnehmen.

Danke dir!

Grüße

Verfasser:
Juerg5524
Zeit: 12.07.2014 06:38:58
0
2096013
Den Link zur Liste mit den unbekannten Werten hätte ich (gemäss der BITTE von Marc) wohl hier hinterlegen sollen.:

http://pastebin.com/kp4Wjscg

Mehr von mir darüber unter

http://www.haustechnikdialog.de/forum/NewPost.aspx?t=98046&page=6

Noch eine Korrektur zur früheren Angabe: Diese Zuordnungen habe ich aus "CommunicationElsterDeclarations.dll".

Gruss
Jürg

Verfasser:
Juerg5524
Zeit: 26.07.2014 11:26:02
0
2100861
Hallo zusammen

Beim Versuch einige Werte, der von mir zusammengestellten Liste zu überprüfen, musste ich feststellt, dass die Liste ungenau ist, aber sie scheint eine gute Vorlage für das Bestimmen der richtigen Zuordnungen zu sein.

Als ich die Liste zusammenstellte, hatte ich noch keine Möglichkeit die Werte zu überprüfen. Vor ein paar Tagen wagte ich mich nun, meinen Raspberry Pi mit dem selbstgebauten galvanisch getrennten Can-Interface mit der Wärmepumpe (WPL33) zu verbinden. Ich wollte dies im Sommer tun. Sollte etwas passieren, wäre das nicht so schlimm wie in der Heizperiode.

Vorgehen und Resulte einiger überprüfter Werte:

Ich sende mit der Can-Id 700 das Telegramm "31 00 fa 00 02" und erhalte als Antwort vom Gerät mit der Can-Id 480 "e2 00 fa 00 02 00 32" zurück. Bzw. ich verwende das Programm cansend:

./cansend can0 700#31.00.fa.00.02

Wenn ich das letzte Byte des Telegramms hochzähle, dann erhalte ich in den letzten beiden Bytes der Antwort:

01: 00 45 69 KESSELSOLLTEMP
02: 00 32 50 SPEICHERSOLLTEMP
03: 01 f4 50.0
04: 00 32 50 VORLAUFSOLLTEMP
05: 00 dc 22.0 RAUMSOLLTEMP_I
06: 00 c8 20.0 RAUMSOLLTEMP_II
07: 00 c8 20.0 RAUMSOLLTEMP_II
08: 00 d2 21.0 RAUMSOLLTEMP_NACHT
09: 34 0b 11:52 UHRZEIT
0a: 19 07 25. Juli DATUM
0b: a5 1b GERAETE_ID ?
0c: 00 cc 20.4 AUSSENTEMP
0d: fe 70
0e: 02 02 51.8 SPEICHERISTTEMP
0f: 00 ed
10: 01 31 30.5 VORLAUFISTTEMP
11: 80 00 nicht unterschtützt
12: 80 00 dito
13: 01 e0
14: 01 19
15: 80 00
16: 01 6d 36.5
17: 80 00
18: 80 00
19: 80 00

22: 00 1e
23: 01 00
26: 00 14
28: 01 f4
2b: 64 00

Das Resultat "80 00" zeigt an, dass dieser Wert vom angesprochenen Modul nicht verfügbar ist.

Die Uhrzeit lässt sich an der Adresse "00 09" nicht ändern. Die Minuten sind auch bei "01 26" abrufbar (die Stunden bei "01 25"):

./cansend can0 700#31.00.fa.01.26 =>> "e2 00 fa 01 26 27 00" (39 Minuten)

An dieser Adresse kann die Minuten-Angabe auf eine Viertelstunde (0f) abgeändert werden:

./cansend can0 700#32.00.fa.01.26.0f.00 =>> "a0 79 fa 01 26 0f 00"

Der Befehl muss eventuell wiederholt werden, bis die Änderung erfolgt.

Die Anlage befindet sich jetzt im "Sommerbetrieb". Mit der Überprüfung werde ich fortfahren, wenn die Anlage wieder heizt.

Gruss
Jürg

PS: Mich würde der Zusammenhang zwischen dem seriellen Protokoll, so wie es die ComfortSoft verwendet, und dem Can-Bus-Format interessieren. Wenn ihr also die Uhrzeit oder das Datum auslesen könnt, teilt mir bitte eure Abfrage-Sequenzen mit.

Verfasser:
Juerg5524
Zeit: 27.07.2014 09:41:05
0
2101039
Hallo

Ich habe bei meiner Wärmepumpe (WPL33) alle Werte von 0000 bis 1fff (hex.) auf der Can-Id 580 "gesacannt". Das Resultat kann unter

http://pastebin.com/rS8vxfQz

abgerufen werden. Dabei habe ich die Zuordnungstabelle

http://pastebin.com/vuxSxjL7

eingesetzt. Ich weiss, dass es bei weitem nicht perfekt ist, deshalb bin ich für Rückmeldungen dankbar.

Gruss
Jürg

Verfasser:
Cat95
Zeit: 27.07.2014 13:06:26
0
2101083
Hallo zusammen,

und danke Juerg für deine "Ping" Mail, ist ja echt klasse was
ihr so mittlerweile alles herausgefunden habt.

Zu meinem Hintergrund :
Ich habe ein ähnlichen aufbau wie Jürg allerdings nicht mit einem
selbsgebasteltem CAN Modul auf dem Raspbery sonder mit dem
PICAN CAN-Bus Board for Raspberry Pi (http://skpang.co.uk)

Ich hatte es auch schon geschafft ählich wie ihr, meiner WPMII
einige Werte zu entlocken. Zeitlich konnte ich leider nicht am Ball
bleiben ebenfalls wegen Nachwuch wie bei Marc ^^

Ich habe immer noch grundsätzlich das Problem das ich mit dem Laptop z.B. nach der Warmwassertemperatur des WPMII Modules frage kann, ich das aber mit dem Raspbery auf dem CAN Bus nicht sehen. Ich vermute weil der Sensor am WPM Modul angeschlossen ist und das dann erst gar nicht auf den CAN Bus raus schreibt. Nur wenn ich nach Werten frage die das Kesselmodul vorhält kann ich das auf dem CAN-Bus mitlesen.

Ich habe mir noch nicht alles hier von euch detailiert angeschaut,
aber vieleicht habt ihr es ja schon geschafft :-)

Schön wenn man erkennt das man nicht alleine gegen Windmühlen kämpft :-)

Gruss
Klaus

Verfasser:
Cat95
Zeit: 27.07.2014 18:03:09
0
2101148
Hallo nochmals,

Habe es dann doch mit dem Hinweis von Juerg und euch geschafft
die Warmwassertemperatur aus meiner WPMII aus zu lesen.

cansend can0 700#31.00.fa.00.0e

Da ich mir das damals mitgeloggt hatte als ich noch mit einem
RS232 logger der Comsoft zugeschaut habe.

===== schnipp =====
strcpy(MP_Module[45], "Kesselmodul0");
strcpy(MP_Name[45], "Warmwassertemperatur");
strcpy(MP_Unit[45], "Celsius");
strcpy(MP_Note[45], "Warmwassertemperatur Kesselmodul0 56,20");
// Request: 06.10.2010 19:42:52.55164 (+0.0156 seconds)
strcpy(MP_Request[45], "0D 00 03 01 00 FA 00 0E 00 00 01 19");
// Answer: 06.10.2010 19:42:52.62964 (+0.0781 seconds)
strcpy(MP_Expected[45],"0D 00 03 01 00 FA 00 0E 00 00 01 19 03 00 0D 02 00 FA 00 0E 02 32 01 4E");
===== schnapp =====


31 für das Kesselmodul0 (Danke Jürg ich habe es immer mit 91 oder A1 probiert)
000e für die Warmwassertemperatur

Gruss
Klaus

Verfasser:
Juerg5524
Zeit: 05.08.2014 11:39:51
0
2103447
Gegenüberstellung der beiden Protokollen: serielle Schnittstelle (ComfortSoft) <==> CAN-Bus

Beispiel Soletemp. (siehe Marc2012) mit der Sequenz 0D00030100FA01D480080268
(alle Berechnungen sind hexadezimal zu verstehen)

0d: Sender 0d*80 = 680 ist die CAN-Bus-ID des Senders (hier des optischen Adapters)
00
03: Empfänger 03*80 = 180 ist die CAN-Bus-ID des Empfängers, welcher Antworten sollte
01: ist der Wert, der zum Abfragen verwendet wird (zum Ändern wird auf dem CAN-Bus 02 benötigt)
00fa: "ERWEITERUNGSTELEGRAMM" gemäss Elster-Tabelle
01d4: "QUELLE_IST" gemäss Elster-Tabelle
8008: hat bei der Abfrage keine Bedeutung
0268: Summe der einzelnen Bytes

nun zur Abbildung als CAN-Bus-Telegramm

680: 31 00 fa 01 d4 80 08

Antwort:

180: d2 00 fa 01 d4 fe 70

Dieselbe Antwort erhält man mit den Anforderungen:

680: 31 00 fa 01 d4

oder

680: 31 00 fa 01 d4 00 00

"31" setzt sich aus 10*03 (Empfänger) und 01 (ist der Wert, der zum Abfragen verwendet wird) zusammen

Nun die Umsetzung von CAN-Bus (180: d2 00 fa 01 d4 fe 70) nach ComfortSoft:

03: Sender aus 31/10 oder 180/80
00
0d: Empfänger aus d2/10 (oder 680/80)
00fa: derselbe Wert wie bei der Abfrage
01d4: auch hier derselbe Wert
fe70: = -190 (dezimal -40) dieser Sensor ist bei mir (WPL33) nicht angeschlossen

Alle Antworten zu dieser Art von Anfragen setzen sich im ersten Byte aus dem Empfänger (d0) und dem Wert 02 zusammen.

Für Indizes aus der Elster-Tabelle, bei denen das erste Byte 00 ist, kann auf das Erweiterungstelegramm 00fa verzichtet werden. Beispiel für die Rücklauf-Ist-Temperatur (Index 0016):

680: 31 00 16

Antwort mit der Temperatur 0157 (dezimal 34.3)

d2 00 16 01 57 00 00

Gruss
Jürg

Verfasser:
Marc2012
Zeit: 23.08.2014 08:00:12
0
2108590
Hallo in die Runde,

sorry, ich hatte wenig Zeit und bin selbst auch noch nicht wirklich weiter gekommen. Ich werde bei Gelegenheit auch die CAN-Bus Infos mit in das Verzeichnis packen.

Frage:
Hat zufällig jemand raus bekommen für z.B. hier
0D00030100FA000380080196
die 8008 steht? Da dieser Teil des Strings nicht mit in der Elster Tabelle steht, müsste er doch eigentlich generiert/berechnet werden können. Das wäre mein Ziel. Parität ausrechnen und daraus den Request bauen ist einfach, aber ohne die 8008 kann man leider nicht stumpf die Elster Tabelle als Vorlage nehmen.

Grüße

Verfasser:
Juerg5524
Zeit: 23.08.2014 18:07:26
0
2108779
Hallo Marc

Ich gehe davon aus, dass der Wert 8008 nicht benutzt wird. Erst bei der Antwort wird hier ein Wert eingesetzt. Direkt auf dem CAN-BUS müsste ich für 0D00030100FA000380080196

680: 31 00 fa 00 03

absetzen. Ich erhalte dieselbe Antwort mit dem Request-Telegramm

680: 31 00 fa 00 03 80 08

Ich empfehle Dir deshalb, für alle Abfragen die Stopf-Bytes "80 08" einzufügen.

Es kommt auch darauf an, welches Gerät dass Du abfragen willst. Mit 0d00030100fa stellst Du die Anfrage an das Gerät mit der CAN-Id 180. Möchtest Du z.B. eine Anfrage an das Gerät 602 stellen, müsste die Anfrage vermutlich wie folgt beginnen

0d 00 0c 01 02 fa <Elster Index> <Stopf-Bytes> <Prüfsumme>

auf dem CAN-BUS gilt dazu das Telegramm:

680: c1 02 fa <Elster Index>

Zu den direkten CAN-BUS-Abfragen gibt es von mir ein kleines Programm-Paket (juerg5524.ch/data/can_progs.zip). Mit dem Raspi-Programm "can_scan" kann man zu einem vorgegeben Gerät (CAN-Id) alle Werte der Elster-Tabelle scannen. Vielleicht kannst Du damit etwas anfangen.

Umrechnungen CAN-BUS-Telegramm <--> optische Schnittstelle sind in NCanUtils.cpp (KCanFrame <--> KComfortFrame) zu finden. Leider habe ich keine optische Schnittstelle ( deshalb nicht getestet).

Grüsse
Jürg

Verfasser:
Juerg5524
Zeit: 26.08.2014 14:35:29
0
2109908
Direkt auf dem CAN-BUS kann ich soweit mit meinem Programm "can_scan" Werte abfragen oder ändern. Beim Abfragen gibt es keine Probleme; beim Ändern bin ich vorsichtiger.

Ich bin mir nicht sicher, ob mittels optischem Adapter (ComfortSoft-Protokoll) der gleiche Wissensstand besteht. Deshalb ein paar Beispiele zur Umrechnung ComfortSoft <--> CAN-Protokoll. Die unten angegebenen Angaben zur ComfortSoft sind in der Testphase. Ich bin für Hinweise/Korrekturen dankbar!

Meine WP besitzt 2 Heizkreise. Einer wird durch ein MPMS II und der zweite durch ein MSMS gesteuert. Ich habe die Nachtabsenkung auf 21.0 bzw. 21.9 GradC eingestellt.
Raumsolltemp_Nacht (Elster Index 8) mit can_scan ausgelesen:

1 -----

$./can_scan can0 680 301.0008 trace

0 26.8.2014 11:57:27.121 680 00 [5] 61 01 fa 00 08 a....
1 26.8.2014 11:57:27.140 301 00 [7] d2 00 fa 00 08 00 d2 .......

send ComfortSoft: 0d00060101fa000800000117 can232: t68056101FA0008
recv ComfortSoft: 06010d0200fa000800d201ea can232: t3017D200FA000800D2

value: 00d2 (RAUMSOLLTEMP_NACHT 21.0)

2 -----

$./can_scan can0 680 302.0008 trace

0 26.8.2014 11:58:15.232 680 00 [5] 61 02 fa 00 08 a....
2 26.8.2014 11:58:16.375 302 00 [7] d2 00 fa 00 08 00 db .......

send ComfortSoft: 0d00060102fa000800000118 can232: t68056102FA0008
recv ComfortSoft: 06020d0200fa000800db01f4 can232: t3027D200FA000800DB

value: 00db (RAUMSOLLTEMP_NACHT 21.9)

3 ----- Geräte-Id

$./can_scan can0 680 301.000b trace

0 26.8.2014 12:16:07.018 680 00 [5] 61 01 fa 00 0b a....
1 26.8.2014 12:16:07.040 301 00 [7] d2 00 fa 00 0b a5 1b .......

send ComfortSoft: 0d00060101fa000b0000011a can232: t68056101FA000B
recv ComfortSoft: 06010d0200fa000ba51b01db can232: t3017D200FA000BA51B

value: a51b (GERAETE_ID 7077)

4 -----

$ ./can_scan can0 680 303.000b trace

0 26.8.2014 12:16:12.369 680 00 [5] 61 03 fa 00 0b a....
1 26.8.2014 12:16:12.390 303 00 [7] d2 00 fa 00 0b f5 01 .......

send ComfortSoft: 0d00060103fa000b0000011c can232: t68056103FA000B
recv ComfortSoft: 06030d0200fa000bf5010213 can232: t3037D200FA000BF501

value: f501 (GERAETE_ID 501)

5 ----- Zeit auf 16 Minuten setzen

$./can_scan can0 680 180.0126.1000 trace

0 26.8.2014 12:19:53.414 680 00 [7] 32 00 fa 01 26 10 00 2...&..
3 26.8.2014 12:19:53.500 180 00 [7] d2 00 fa 01 26 10 00 ....&..

send ComfortSoft: 0d00030200fa012610000143 can232: t68073200FA01261000
recv ComfortSoft: 03000d0200fa012610000143 can232: t1807D200FA01261000

value set
value: 1000 (MINUTE 16)

------

Gruss Jürg

P.S.: auf juerg5524.ch/data/scan_20140826.txt gibt es ausgewählte "Scan"-Läufe von mir.

Verfasser:
robots
Zeit: 30.10.2014 12:44:50
1
2136306
Hello Juerg and others,

I hope it is ok to write in english :)

Zitat:

03: Sender aus 31/10 oder 180/80
00
0d: Empfänger aus d2/10 (oder 680/80)
00fa: derselbe Wert wie bei der Abfrage
01d4: auch hier derselbe Wert
fe70: = -190 (dezimal -40) dieser Sensor ist bei mir (WPL33) nicht angeschlossen



00 (before FA) is telegram type: 0 - write, 1 - read, 2 - response, 3-ack, 4-write ack, 5- write respond, 6- system, 7- respond systen, 32/33 -write/read large telegram

fa: is telegram number and it is the number from the "elster table" you have (up to 255)

when you want to "access" parameter with number > 255 you use: 0xfa - ERWEITERUNGSTELEGRAMM and next 2 bytes are the number of parameter.

So in fact for parameters < 255 there are 2 ways to access them:
..xx 01 fa 00 0a 00 00
or
..xx 01 0a 00 00 00 00

The x is the "ModuleType":
0 - direct, 1 - kessel, 5 - atez, 6 - bedien, 8 - raum fernsteller, 9 manager, A - heizmodule, B buskoppler, C - mischer, D - pc, E fremdgeraet, F - dcf module


What i would like to understand is how FEK (remote) sends temperature to the heat-pump :). Some one with FEK might help.

Verfasser:
Juerg5524
Zeit: 30.10.2014 16:51:40
0
2136439
Hello robots

Klar ist es OK, wenn Du in englisch schreibst, falls es für Dich auch OK ist, wenn ich in deutsch schreibe.

Hast Du meine Web-Seite http://juerg5524.ch schon besucht? Da gibt es möglicherweise Antworten, im Speziellen in NCanUtils.cpp (class KComfortFrame).

Für das 2. Byte (byte before fa) kenne ich nur die Werte

00: write
01: read
02: response

Alle anderen Werte sind mir unbekannt.

So in fact for parameters < 255 there are 2 ways to access them:
..xx 01 fa 00 0a 00 00
or
..xx 01 0a 00 00 00 00

Das ist korrekt.

ModuleType: Nein, das ist ein Teil der (Receiver) CAN-Id.

bool KComfortFrame::SetCanFrame(KCanFrame & Frame) const
{
Frame.Init();
Frame.Len = 7;

Frame.Id = ((Data[0] & 0x0f) << 7) + (Data[1] & 0xf);
Frame.Data[0] = (Data[2] << 4) + (Data[3] & 0x0f);

for (int i = 0; i < 6; i++)
Frame.Data[i + 1] = Data[i + 4];

return CheckSum() &&
(Data[0] & 0xf0) == 0; // 11-Bit-Id
}

Gruss
Jürg

Verfasser:
robots
Zeit: 30.10.2014 17:58:51
0
2136472
Reading German is ok (not writing) :-)

Yes i have seen your website, i have used your tcp server as template to create my own server for my embedded board (stm32 mcu, ethernet and can, with lwip stack). I dont own r-pi at all.

All my findings are from decompiling of Comfort soft. I have used dotPeak .NET decompiler to look for "clues". https://www.jetbrains.com/decompiler/

for byte 2 look in:
CommunicationService.TelegtType

For assembly of the telegram:
CommunicationService.Telegramm

And for valid modules:
CommunicationElsterDeclatations.ModuleType

Verfasser:
robots
Zeit: 30.10.2014 18:07:19
1
2136477
I have also been able to decode those encrypted xml files in system-config directory. These files contain parameters of devices, parameters and how to interpret them.

http://wikisend.com/download/335764/system-config.zip

Verfasser:
Juerg5524
Zeit: 31.10.2014 09:37:01
0
2136793
Danke, ich werde das studieren.

Gruss
Jürg

Verfasser:
Juerg5524
Zeit: 04.11.2014 10:29:17
0
2138760
Hi robots

Dein zip-Paket ist sensationell! Danke für Deine grossartige Arbeit!

Bei den "ModuleTypes" komme ich auf folgendes Ergebnis:

0 (000) - direkt
3 (180) - Kessel (nicht 1)
6 (300, 301 ...) - Bedienmodule (bei mir 301, 302 und 303)
9 (480) - Manager
A (500) - Heizmodul
C (600, 601 ...): Mischermodule (bei mir 601, 602, 603)
D (680): PC (ComfortSoft)

Die anderen Module stehen mir nicht zur Verfügung.

Viele Grüsse
Jürg

Verfasser:
robots
Zeit: 08.11.2014 22:05:27
0
2141059
Hi,

I am glad you found it useful.

Could you please record some communication on can-bus? I would like to find out how the room temperature controller (bedien?) communicates with the wpwm controller (mischer?). I would like to simulate it, and send the HC temperatures without the room unit (i dont own one)

Thanks

Verfasser:
robots
Zeit: 09.11.2014 20:29:13
0
2141541
The "kennwort" you have is in fact the software version of the unit.

My is 1470 which is 0x5be. According to Comsoft its 190.05.
190 (0xbe) software version for WPMi in device.xml file and 0x05 is the "subversion".

Second thing:
Could you please make the 500ms socket timeout configurable in CS_Brucke ? I am using it over wifi, and with bad signal it takes too long for the response to arrive in time and i see lot of "wouldblock" errors. Perhaps some edit field in the settings tab ;)

Verfasser:
Juerg5524
Zeit: 10.11.2014 10:08:04
0
2141747
Hello robots,

einen Raumtemperatur-Fühler habe ich auch nicht. Das Bedien- und Mischermodul gehören zusammen. Ich mache aber bei Gelegenheit einen "Loging" von einem Tag.

Das Kennwort ist die Versionsnummer von dem Gerät, an dem das optische Interface eingesteckt ist.

Ich habe CS_Bruecke erweitert. Es gibt einen Tab "Extras". Möglicherweise musst Du den Timeout in "can_server" (File KCanElster.cpp, line 223: "50") anpassen. Bitte teile mir mit, wenn Du bessere Werte gefunden hast.

Wäre es Dir möglich, von Deiner Wärmepumpe einen "Scan" zu machen, damit ich (und auch andere) mit CS_Bruecke Deine WP simulieren könnten? Das wäre nett. Erzeugen kannst Du ihn mit

./can_scan can0 680 total >scan_data.inc

Gruss
Jürg

Verfasser:
robots
Zeit: 15.11.2014 21:28:01
0
2144732
Hi,

I have tested the CS_brucke, and it seems to work well now.


I dont have r-pi connected to the WP, but my own hardware that acts as tcp server. My code is written for LwIP ip stack, and looks like this:

http://pastebin.com/k70RbL0K
can_tcp_process is the "tcp recv and send can message" function and the other way around is done in can_tcp_periodic. The whole LwIP coding is using callbacks, so it needs to be written this way.

I have started to write some python utility, so i can communicate with the server on my own. My first attempt is discovery - same as when you start "direct connection" on Comfortsoft. The results are looking good :)

Scanning will be my next try... I'll post results if any.

Have you considered putting your "can_progs" into some source management service? Like github, or similar? It is much easier to track changes, than just have to download latest zip and diff them :-)

Verfasser:
robots
Zeit: 17.11.2014 17:34:29
0
2145737
Hi,


I have placed all my work here:

https://github.com/robots/Elster

The get.py is parameter getter, to translate the values from WP to my VZ installation.

discovery.py is device discovery tool. It will printout the addresses of existing devices.

scan.py is the scanning tool.

Problem with my scanning tool is, that my server crashes after longer sessions :D But it should work against your tcp server as well (protocol is the same)

Verfasser:
Juerg5524
Zeit: 18.11.2014 17:23:00
0
2146352
Hi robots

Deine Bibliothek sieht schön aus.

Über eine Source-Verwaltung habe ich bisher nicht nachgedacht. Bisher war das Echo auch eher klein. Die meisten Leute, wie Du, verwenden nicht meine Source, sondern nur Teile oder Ideen davon.

Den TCP-Server aktiviere ich nur, wenn ich mit ComfortSoft auf die Wärmepumpe zugreife. Ich habe keine Erfahrung mit langen Sessionen. Ich werde aber versuchen, das nachzubilden. Vielleicht mit einer Simulation.

Grüsse
Jürg

P.S.: Zu meiner Software gibt es ein Python-Modul elster.so. Ich habe nun entdeckt, dass "can_python.arm" mit einer alten Version überschrieben wurde und "spam.so" generiert. Das Python-Beispiel auf dem Internet nahm ich als Vorlage und es hat "spam.so" zur Ausgabe. - Ich werde das korrigieren.

Aktuelle Forenbeiträge
Joerg Lorenz schrieb: Hallo morpeuse Einen WW-Lauf löst Du aus, indem Du eine Anforderung generierst. Schnelladung ist eine Möglichkeit. Du hast bei Deinem hydraulischen Aufbau nur die Pumpe in der WP und das ist gut...
Alexesw schrieb: Mir fehlt jetzt noch der passende Pufferspeicher für den Kessel, der dann ja "ST-SteamBack-ready" sein muss. Gibt es einen Schichtenspeicher ohne Wärmetauscher, der genügend Anschlüsse für Pelletkessel,...
ANZEIGE
Hersteller-Anzeigen
UP-fix
Messstationen
Verteilerstationen
Regelstationen
Wasserbehandlung mit Zukunft
Website-Statistik