Stiebel Eltron Wärmepumpe(n)

@jwka den wunsch nach einer anbindung mit offenem standardprotokoll werde ich auf jeden fall bei den WP Herstellern äussern. das mache ich auch schon seit knapp 2 jahren auf sämtlichen energiesparmessen usw. …

@FRAD:

das liest sich ja hervorragend ! sehe ich das richtig, dass du somit erfolgreich deine Heizung per IPS visualisieren und steuern kannst ? Hast du die Visualisierung schon fertig gebastelt ? Wie schaut sie jetzt aus ?
Das ganze müsste dann doch auch mit einer Lüftungsanlage von Stiebel Eltron funktionieren richtig ? Oder bräuchte man dann wieder ein eigenes ISG dafür ?

Das ISG wird ja per RJ45 einfach ins Netzwerk eingebunden soweit ich das mitbekommen hab. Das Ding ist somit komplett Bus unabhängig oder ? D.h. ich kann die Heizung dann nicht nach irgendwelchen Abhängigkeiten von Zuständen welche ich durch die HM erfasse, steuern ? Oder kann man das dann über IPS realisieren ?

Hallo,

habe das Parsing Script für das ISG angepasst. Funktioniert nun auch in der Version 4.0.1 (419).

Download-Link

Grüße

Hallo,

gibt es eigentlich schon Neuigkeiten bezüglich einer Nutzung des RS232 Anschlusses und IP-Symcon?

:loveips:

Nur für den Fall, dass jemand hier liest, eine ältere WP hat und das ISG verwenden will:

Ich habe nach langem zögern gesagt: „ok ich beiss in den sauren Apfel und investiere die 400 EUR ins ISG“.

Da wusste ich noch nicht, wie sauer der Apfel ist. Die negativen Ergebnisse habe ich hier zusammengefasst:

http://www.ip-symcon.de/forum/threads/21389-Stiebel-Eltron-ISG-der-komplette-Rohrkrepierer!

Hier mal für andere Stiebel User…

  1. Es gibt mittlerweile einen Nachbau des RS232 Opto Kabels zum Anschluss an den Wärmepumpenmanager I + II.
    Im Haustechnikforum verkauft einer die Teile… Preislich etwa die Hälfte des Originals (60/70€) :slight_smile:
    http://www.haustechnikdialog.de/Forum/t/98046/Defekte-Stiebel-Eltron-WPF-7-mit-Waermepumpenmanager-WPM-II-wiederbeleben-und-einbauen?page=5

  2. Es gibt eine Zusammenfassung der Codes die auf dem seriellen Bus umherschwirren:
    http://pastebin.com/kp4Wjscg

Meine Frage nun:
Wenn ich wie unter PUnkt 2 die „Steuercodes“ die per seriellem Kabel eingehen, habe… wie krieg ich diese in IPS rein.
Und vor allem, wie kann ich die Daten die ich von dort bekomme auf das wesentliche reduzieren… D.h. FIltern?

Eventuell ähnlich, wie ich es bei der neuen Version der LWZ umgesetzt habe?

Oder meinst du, wenn der WP Manager läuft und mit der LWZ spricht, die Daten abzweigen um die auch in IPS zu empfangen?

Gruß

Andreas

Ähm… LWZ ist doch die Wärmepumpe mit integrierter KWL.

Könntest du die Codes aus meinem Link mal überfliegen, ob die zu deinen verwendeten passen…
Klar die LWZ hat evtl. ein paar mehr aufgrund der Lüftung…aber das kann man ja ignorieren oder händisch entfernen.

Hat die LWZ ebenfalls den Wärmepumpenmanager II (WPMWII)?

Mir gings eigentlich immer darum, dass ich IPS über den passenden Serielle/Optokabelstecker an die Wärmepumpe anschliessen kann.

Über IPS dann fürs erste nur „kucken“ nicht anfassen :smiley:

Nein, die Geräte unterscheiden sich deutlich.
Ich meine nur die Umsetzung der seriellen Kommunikation.

Aus dem Projekt kannst du den Zusammenbau Comport, Cutter, Registervariable, etc. sehen und für die WPM Pumpe umsetzen.

Kenne den Wärmepumpenmanager nicht, aber schreibt der vielleicht regelmäßig Log Files die man parsen kann?

Strebst du denn die direkte Kommunikation über IPS an, oder soll der WPM noch irgendwas machen?
Für gewöhnlich müssen doch Befehle erst an die WP gesendet werden, bevor die mit den Betriebsdaten antwortet. Das kann ich aus der Liste dort nicht erkennen.

Alternativ bietet sich an, wenn der WPM funktioniert, die Kommunikation zu sniffen und zu analysieren. Da hilft dann auch die Tabelle.

Gruß

Andreas

Danke für die Info.

Dann kann ich aus dem Beitrag die Infos rausziehen wie man den Comport in IPS anlegt, HexTexte vergleicht, filtert usw…

Die serielle Schnittstelle der beiden Systeme unterscheidet sich leider. Sonst hätte ich das bereits nachgebaut…
So musste ich das Original RS232/Optoumsetzerkabel kaufen… (hat mal 140€ gekostet)… Jetzt scheinbar schon 180€…

Ich möchte den Wärmepumpenmanager (WPM) als Steuerung der WP weiterlaufen lassen.
Mir geht es im ersten Step nur ums mitlesen + mitloggen… Ich möchte die WP noch weiter optimieren.
An dem Punkt kann es unter umständen sein, dass ich durch IPS Werte in den WPM schreibe… Aber das in ferner Zukunft…

Logfiles schreibt das Teil leider keine… Das war mein erster Ansatz.
Es gibt livewerte. Und werte die die Steuerung (erzeugte Wärmemenge usw.) sich merkt.

Hallo,

Ich habe eine WPL23 mit WPM2. Ich besitze das optische rs232 Kabel.
Das abfragen und ändern der Werte mit ComfortSoft funktioniert wunderbar.

Jetzt möchte ich die Werte in IPS angezeigt bekommen.
Hat von euch wer ein COM_WRITE script damit ich die Daten zurückbekomme in IPS danach kann ich ja die Antworten rausfiltern anhand der ElsterTabelle

serial:2400 / 8 / 2 / E
46048 ist ComPort

$str = „\x0D\x00\x03\x01\x00\xFA\x00\x0C“;
COMPort_sendtext(46048,$str);

da kommt kein richtige Antwort zurück (sollte aussentemp sein)

mfg pesensie

Habe selbst ja eine WPL13 Cool mit FEK und dem WPM2.
Als Schnittstellen habe ich
Raspberry PI CAN BUS zur Verfügung.
alternativ
das Original Opto/Seriell Kabel.

Im Heizraum habe ich leider nur ein Raspberry = Linux zur Verfügung.

Ich hab die Cansend perl Skript von „juerg5524“ eingerichtet.
Bin aber beim Telegramm Aufbau nicht durchgestiegen.

Die canbus Kommunikation kann ich mit dem Raspi mitlauschen.
Leider fehlt mir die Idee wie ich mit den erhaltenen Daten weiterarbeiten kann in Richtung IPS.
Vor allem wie ich in IPS eine Art Matching Tabelle pflege.

Bin also auch interessiert an einer Möglichkeit die Daten der Stiebel WP in IPS zu bringen und zu „übersetzen“.

Hallo pesensie,

Dein $str ist zu kurz. Der String sollte 12 Bytes lang sein. Hänge zweimal das Byte 0x80 an, danach die Prüfsumme (siehe in NCanUtils.cpp in KComfortFrame::SetCheckSum() nach).

Um den Datenverkehr analysieren zu können, kannst Du die CS_Bruecke verwenden. Als Eingang kannst Du das optische Interface wählen. Allerdings muss ich Dich warnen: Da ich kein optisches Interface besitze, konnte ich es nur mittels Simulation austesten und die CS_Bruecke wird von den meisten Leuten als sehr kompliziert empfunden.

Deine Abfrage sollte auch mit dem Befehl

can_scan COM1 680 180.000c cs_com

funktionieren.

Viele Grüsse
Jürg

Hallo Jürg,

bei dieser Abfrage „can_scan COM1 680 180.000c cs_com“ kommt
value: 8008 (AUSSENTEMP -3276.0)

auch bei anderen Abfragen kommt immer der selbe Wert
value: 8008 (VORLAUFISTTEMP -3276.0)

außer bei Datum, Uhrzeit und Geräte Abfrage
value: 8008 (GERAETE_ID 128-08)

mfg pesensie

Hallo pesensie,

wieso nur 8008 als Antwort kommt, weiss ich leider auch nicht. Du kannst versuchen, einiges zu variieren:

  • 780 anstelle von 680 einsetzen

  • die gültigen Geräte IDs ermitteln:

    ./can_scan COM1 680 cs_com

  • Zwischenresultate ansehen:

    ./can_scan COM1 680 cs_com trace

Viele Grüsse
Jürg

Hallo,

ja das hätte ich auch schon alles probiert

can_scan COM1 680 cs_com --> dassele auch mit 700 bzw 780

list of valid can id’s:

000 (8008 = 128-08)
001 (8008 = 128-08)
002 (8008 = 128-08)
003 (8008 = 128-08)
004 (8008 = 128-08)
005 (8008 = 128-08)
006 (8008 = 128-08)
007 (8008 = 128-08)
008 (8008 = 128-08)
009 (8008 = 128-08)
00a (8008 = 128-08)
00b (8008 = 128-08)
00c (8008 = 128-08)
00d (8008 = 128-08)
usw…

mit
can_scan.exe COM3 780 cs_com trace

list of valid can id’s:

 780 00 [5] 01 00 fa 00 0b           .....

0 2.2.2016 14:33:22.017 780 00 [7] 01 00 fa 00 0b 80 08 …
000 (8008 = 128-08)
780 00 [5] 01 01 fa 00 0b …
1 2.2.2016 14:33:22.088 780 00 [7] 01 01 fa 00 0b 80 08 …
001 (8008 = 128-08)
780 00 [5] 01 02 fa 00 0b …
2 2.2.2016 14:33:22.160 780 00 [7] 01 02 fa 00 0b 80 08 …
002 (8008 = 128-08)
780 00 [5] 01 03 fa 00 0b …
3 2.2.2016 14:33:22.231 780 00 [7] 01 03 fa 00 0b 80 08 …
003 (8008 = 128-08)
780 00 [5] 01 04 fa 00 0b …
4 2.2.2016 14:33:22.300 780 00 [7] 01 04 fa 00 0b 80 08 …
004 (8008 = 128-08)
780 00 [5] 01 05 fa 00 0b …
780 00 [5] 01 05 fa 00 0b …
5 2.2.2016 14:33:23.764 780 00 [7] 01 05 fa 00 0b 80 08 …
005 (8008 = 128-08)

kann es sein dass meine einstellungen beim seriellen port nicht passen?
Baud 2400
Data Bits 8
Parity even
Stop Bits 2

mfg pesensie

Hallo pesensie,

so wie es aussieht, kommt keine Antwort zurück. Der Wert 8008 ist der Wert, der gesendet wird. Die Einstellungen stimmen.

Die Steuerleitungen DTR und RTS sollten gleiche Polarität wie mit der ComfortSoft haben. Kannst Du das überprüfen?

Du kannst aber auch die Software anpassen:

SetDTR(true);
SetRTS(true);

in KCanCS::Init (File KCanCommDriver.cpp) durch

SetXXX(false);

ersetzen (gibt 4 Möglichkeiten) und neu compilieren.

Viele Grüsse
Jürg

Hallo pesensie,

gemäss lötbar müssen DTR und RTS positive Spannungen aufweisen. Das sollte in der Software mit SetDTR(true) und SetRTS(true) richtig sein.

Ich habe versucht, dieselbe Meldung wie Du zu erhalten. Wenn ich nichts anschliesse, dann erhalte ich

680 00 [5] 31 00 fa 00 0c 1…
680 00 [5] 31 00 fa 00 0c 1…
680 00 [5] 31 00 fa 00 0c 1…
no value read

Wenn ich TX und RX kurzschliesse (Pins 2 und 3), dann sieht es wie folgt aus

680 00 [5] 31 00 fa 00 0c 1…
0 2.2.2016 10:40:19.102 680 00 [7] 31 00 fa 00 0c 80 08 1…

send ComfortSoft: 0d00030100fa000c8008019f can232: t68053100FA000C
recv ComfortSoft: 0d00030100fa000c8008019f can232: t68073100FA000C8008

Viele Grüsse
Jürg

Das Problem konnte ich zusammen mit pesensie lösen. Die Fotodiode sendet die Information auch an den Fototransistor des Interfaces. Damit entsteht von der gesendeten Information ein Echo. Ich werde meine Software in den nächsten Tagen anpassen.

Viele Grüsse
Jürg

DANKE JÜRG für deine Hilfsbereitschaft

mfg pesensie

Hallo,

So jetzt ist das Wetter für IP-Symcon wieder optimal :slight_smile:

Ich Frage meine WPL23 - WPM2 mit folgendem „Script“ alle 30sek ab.

Um den WPM2 einzustellen verwende ich die Software von ComSoft. Diese Software zeigt mir die Daten in Echtzeit, sobald sich was verändert, an.

Kann mir da wer behilflich sein dieses Script so zu optimieren, dass die Daten auch in Echzeit angezeigt werden?

<?

$aussentemp = shell_exec ('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.000c cs_com');
$aussentemp = str_replace('.', ',', $aussentemp);
SetValue(54974 /*[Heizung WPL23\Aussentemp Value]*/, $aussentemp);

$puffersolltemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.01d5 cs_com');
$puffersolltemp = str_replace('.', ',', $puffersolltemp);
SetValue(43826 /*[Heizung WPL23\Link3HeizzoneTemp SOLL Value]*/, $puffersolltemp);

$warmwassersolltemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0013 cs_com');
$warmwassersolltemp = str_replace('.', ',', $warmwassersolltemp);
SetValue(37271 /*[Heizung WPL23\Link3WWTemp SOLL Value]*/, $warmwassersolltemp);

$warmwasseristtemp = shell_exec ('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.000e cs_com');
$warmwasseristtemp = str_replace('.', ',', $warmwasseristtemp);
SetValue(10057 /*[Heizung WPL23\Link3WWTemp IST Value]*/, $warmwasseristtemp);

$ruecklaufisttemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0016 cs_com');
$ruecklaufisttemp = str_replace('.', ',', $ruecklaufisttemp);
SetValue(55295 /*[Heizung WPL23\Link3HeizzoneTemp IST Value]*/, $ruecklaufisttemp);

$vorlaufisttemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.01d6 cs_com');
$vorlaufisttemp = str_replace('.', ',', $vorlaufisttemp);
SetValue(36522 /*[Heizung WPL23\VorlaufTemp IST Value]*/, $vorlaufisttemp);

$puffermaxtemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0028 cs_com');
$puffermaxtemp = str_replace('.', ',', $puffermaxtemp);
SetValue(39026 /*[Heizung WPL23\Link3HeizzoneTemp MAX Value]*/, $puffermaxtemp);

$boilermaxtemp = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0181 cs_com');
$boilermaxtemp = str_replace('.', ',', $boilermaxtemp);
SetValue(43134 /*[Heizung WPL23\Link3WWTemp MAX Value]*/, $boilermaxtemp);

$fehlermeldung = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0001 cs_com');
$fehlermeldung = str_replace('.', ',', $fehlermeldung);
SetValue(44898 /*[Heizung WPL23\Fehlermeldung]*/, $fehlermeldung);

$uhrzeit = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0009 cs_com');
$uhrzeit = str_replace('.', ',', $uhrzeit);
SetValue(20158 /*[Heizung WPL23\Uhrzeit]*/, $uhrzeit);

$hzk_pumpe = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0053 cs_com');
$hzk_pumpe = str_replace('.', ',', $hzk_pumpe);
SetValue(53668 /*[Heizung WPL23\Pumpe HZK]*/, $hzk_pumpe);

$laufzeit_wp1 = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.01c4 cs_com');
$laufzeit_wp1 = str_replace('.', ',', $laufzeit_wp1);
SetValue(53075 /*[Heizung WPL23\Laufzeit WP1]*/, $laufzeit_wp1);

$wp_pumpenstatus = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.fdad cs_com');
$wp_pumpenstatus = str_replace('.', ',', $wp_pumpenstatus);
SetValue(35721 /*[Heizung WPL23\WP Pumpenstatus]*/, $wp_pumpenstatus);

$heizkreis_status = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0059 cs_com');
$heizkreis_status = str_replace('.', ',', $heizkreis_status);
SetValue(41492 /*[Heizung WPL23\Status Heizkreis]*/, $heizkreis_status);

$schaltfkt_iws = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0060 cs_com');
$schaltfkt_iws = str_replace('.', ',', $schaltfkt_iws);
SetValue(47856 /*[Heizung WPL23\Schaltfkt IWS]*/, $schaltfkt_iws);

$sammler_pumpe = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0064 cs_com');
$sammler_pumpe = str_replace('.', ',', $sammler_pumpe);
SetValue(19140 /*[Heizung WPL23\Sammler Pumpe]*/, $sammler_pumpe);

$programmschalter = shell_exec('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.0112 cs_com');
$programmschalter = str_replace('.', ',', $programmschalter);
SetValue(11983 /*[Heizung WPL23\Programmschalter]*/, $programmschalter);

$stillstandszeit = shell_exec ('C:/IP-Symcon/scripts/TESTABFRAGE/can_scan.exe COM3 680 180.fdb1 cs_com');
$stillstandszeit = str_replace('.', ',', $stillstandszeit);
SetValue(10047 /*[Heizung WPL23\Stillstandszeit]*/, $stillstandszeit);
?>

mfg pesensie