Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers

Begonnen von juerg5524, 14 Oktober 2015, 13:43:31

Vorheriges Thema - Nächstes Thema

intershopper

Hallo Jürg,

ich habe die Version vom 05.04.2018 im Einsatz und das sniffen funktioniert. Leider habe ich immer noch Fehler bei manchen get Aufrufen.

Da das sniffen nun geht könnte man auch ein sh Script auf dem PI laufen lassen, was jede Minute die Werte über can_send ... holt.

Gruß Frank

Mastermind1

Ich spiele mal wieder an meiner Canbus Anbindung  ;)

Eine Frage, wo finde ich den den aktuellen Betriebsstatus. Gibt es so etwas?
Also Kühlung / Heizen / Warmwasser / Aus ?

ich hab probiert
680 180.fdae
680 180.0176 (Betriebsstatus)



Ein Tipp?

stoeff99

@Juerg5524, erst ein mal ein riiiesiges Dankeschön für deine Arbeit. Ist wirklich toll was du da auf die Beine gestellt hast!!!

Bei mir habe ich die neuste Version von 50_Elster.pm am laufen. Die Werte kann ich mit "get" einzeln abholen. Das Sniffen geht aber leider nach wie vor nicht. Ich teste live auf meiner WP. Mein Ziel wäre die Werte alle 60 Sekunden oder so aus zu lesen und dann an meine Loxone Steuerung zu schicken.

Geht bei euch das Sniffen nun einwandfrei?

Gruss
Chris

choetzu

Hallo

Ich habe einen Raspi3, FHEM und die Stiebel Eltron WPL 18 e mit WPM II. Ganz euphorisch habe ich diesen Thread gefunden und wollte mich dieses Weekend mal damit auseinandersetzen. Hat es jemand schon mit Raspi3 zum Laufen gebracht?

Lg c
Raspi3, EnOcean, Zwave, Homematic

Mastermind1

Zitat von: choetzu am 28 Oktober 2018, 00:39:38
Hallo

Ich habe einen Raspi3, FHEM und die Stiebel Eltron WPL 18 e mit WPM II. Ganz euphorisch habe ich diesen Thread gefunden und wollte mich dieses Weekend mal damit auseinandersetzen. Hat es jemand schon mit Raspi3 zum Laufen gebracht?

Lg c
Ob raspi 1 - 3 hat keine Bedeutung. :-)
Wichtiger ist eher das jew. verwendete canbus Interface zum laufen zu bekommen. Der Rest ist dank der tollen Arbeit mit dem Modul hier nur noch die Kür.... P.s. das Modul funktioniert auch ohne fhem ;-) ich nutze es nativ für ip-symcon.


choetzu

herzlichen Dank für dein Feedback, Mastermind1. Super schonmal. Ich habe mir soeben ein Pican2 bestellt. Sollte diese Woche kommen. ;)

Wie schätzt du folgendes ein? Ich habe vor 2.5 Jahren mit Fhem begonnen. Bis dato wusste ich noch nix von ssh, mysql, raspi, perl, fhem, regex, html, css und co.. Hab ich mir alles Schritt für Schritt angeeignet. Heute bin ich zwar weiter, aber sehr weit weg selber Codes zu programmieren geschweige denn komplizierte Scripts zu verstehen. CAN scheint mir nochmals ein neues Gebiet zu sein. Ist es für einen Anfänger wie mich möglich, diese Schnittstelle WPL <--> FHEM gemäss Anleitung von Jürg zu machen. Meine Euphorie ist etwas der Ernüchterung gewichen, beim Lesen der Posts und Juergs Anleitung...

Lg c

PS Jürg: Schwiiizer?



Raspi3, EnOcean, Zwave, Homematic

choetzu

#96
guten Abend, resp. Morgen ;)

ich habe nun den PiCAN with GPS + Gyro +Accelerometer CAN-Bus for Raspberry Pi 3 (http://skpang.co.uk/catalog/pican-with-gps-gyro-accelerometer-canbus-for-raspberry-pi-3-p-1521.html) auf dem Raspi 3 (Testgerät) montiert. Doch nun stellt sich mir die erste Frage, wie, resp. mit welchem Kabel verbinde ich meine Stiebel Eltron WPL 18 e mit WPM II mit dem Pican? Für Euch scheint dies alles klar zu sein, da noch niemand diese Frage gestellt hat ;) Der Schaltplan von Jürg ist mir auch nicht schlüssig (http://juerg5524.ch/data/piCan_Schema.pdf)  Ich wäre mega froh um eine Hilfestellung. Nicht dass mir die Heizung kapputt geht, jetzt wo es kälter wird..

Danke. Lg c
Raspi3, EnOcean, Zwave, Homematic

juerg5524

Hallo Choetzu

Wie du an meiner Web-Seite sehen kannst, bin ich "Schwiizer".

Die Schaltung wurde von Schwanti (https://www.haustechnikdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden?page=5) nachgebaut.

Am WPM 2 gibt es einen 4-poligen Stecker, dort musst du abgreifen, und zwar CANH, CANL und GND. Für meine Schaltung ist auch der 4. Pol (18 Volt) notwendig.

Viele Grüsse
Jürg

choetzu

Guten Tag Jürg,

danke für deine Hilfe. Ich habe deinen Link (Schwantis Schaltung) versucht zu interpretieren. Als Laie aber einfach viel zu hoch..

Siehe Bild, rotes Rechteck. Ist dies der 4-polige Stecker (X15). In der Bedienungsanleitung steht unter X15:

1 BUS High
2 BUS Low
3 Ground -
4 + (nur in Verbindung mit DFü-COntroller (DCO) angeschlossen

Geht 1 auf Can_H, 2 auf Can_L und 4 auf Gnd beim PiCAN? Ich denke ja, gell?

Muss ich irgendwo noch Ohm dazwischen stecken oder kann ich es direkt vom WPMII an den PiCAN stecken?

Lg c (auch aus der Schwiiz)
Raspi3, EnOcean, Zwave, Homematic

juerg5524

Hallo Choetzu

Pin 4 solltest auf keinen Fall verwenden. GND steht für "ground".

Direkt ohne Widerstand anschliessen. Das Kabel, das vermutlich weniger als 2 Meter lang ist, braucht keine verdrillten Adernpaare.

Viele Grüsse
Jürg

choetzu

So, lieber Jürg, ich habe es endlich geschafft. Es funktioniert und ich bin brutal happy. Ich danke dir herzlich für dieses Modul... Da hast du ganz viel Arbeit reingesteckt, die mir nun zu Gute kommt.

Ich kann via Fhem mit GET auslesen und mit SET setzen. Da ich das Forum in den letzten Tagen ziemlich "gespamt" habe, ohne Antworten oder Hilfestellungen zu erhalten, habe ich der besseren Uebersicht halber meine 4 letzten Beiträge gelöscht. Dafür liefere ich folgend eine KURZANLEITUNG für Dummies wie mich. Klar, die Infos sind irgendwo erhältlich, aber m.E. irgendwie zu stark zerstreut... Es soll keine Kritik sein, sondern eine Hilfestellung für Gleichgesinnte (doofies wie ich):

Hardware (in meinem Fall):
1. Raspi3 mit Betriebssystem Stretch
2. Pican2  --> http://skpang.co.uk/catalog/pican-with-gps-gyro-accelerometer-canbus-for-raspberry-pi-3-p-1521.html
3. Cat5 Kabel. In meinem Fall nicht länger als 1,5 Meter. Sollte es nicht gehen, dann mit 120OHM versuchen, seitens Raspi.
4. Verbindung Pican2 mit der Wärmepumpe WPMII (bei mir Stiebel Eltron WPL 18e), siehe Bild:
- X15 (WPMII) Pin 1 (H) mit Can_H (Pican2) verbinden
- X15 (WPMII) Pin 2 (L) mit Can_L (Pican2) verbinden
- X15 (WPMII) Pin 3 (-) mit  GND (Pican2) verbinden
5. Raspi an Strom anschliessen und einschalten.

Software:
1. Stretch und Fhem müssen vorinstalliert sein
2. Auf juerg5524.ch die aktuellste can_progs.zip runterladen, entpacken und auf den Raspi hochladen. Bei mir in den Folder /home/pi/can_progs/ . Ich habe Schreibrechte 777 gegeben. Ich weiss, nicht optimal...
3. Die Datei http://www.skpang.co.uk/dl/can-test_pi2.zip runterladen, entpacken und auf Raspi hochladen. Bei mir in den Folder /home/pi/can-test_pi2/ . Auch hier habe ich Schreibrechte 777 gegeben.
4. Terminal öffnen und mit Raspi3 per SSh verbinden
5. CAN bootfähig (can0) machen, indem man im Terminal folgendes eingibt:
sudo nano /boot/conig.txt

Am Ende der Datei folgende Zeilen eingeben und dann speichern.
dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-bcm2835-overlay


6. Reboot

7. Terminal erneut starten und "cd /home/pi/can-test_pi2/" eingeben
8. CAN Schnittstelle aktivieren, indem man folgendes nacheinander eingibt

sudo ip link set can0 type can bitrate 20000
sudo ifconfig can0 up
sudo ifconfig can0
./candump can0


Wichtig ist dabei die bitrate 20000 bei der ersten Eingabe. Ansonsten geht das nicht.
Nach ./candump can0 sollte dann sowas ähnliches wie folgendes kommen:
  can0  480   [7]  A1 00 FA 01 D6 00 00
  can0  480   [7]  A1 00 16 00 00 00 00
  can0  500   [7]  92 00 FA 01 D6 01 1B
  can0  480   [7]  A1 00 FA 07 A8 00 00
  can0  480   [7]  A0 00 5F 04 00 00 00
  can0  500   [7]  92 00 16 01 17 00 00
  can0  500   [7]  92 00 FA 07 A8 00 08
  can0  180   [7]  A0 79 0C 00 4E 00 00
  can0  180   [7]  A0 79 FA 01 D7 01 01


9. Nun in den Ordner "cd /home/pi/can_progs/" wechseln
10. Sicherstellen, dass man swig (sudo apt-get install swig) und libperl-dev (sudo apt-get install libperl-dev) installiert hat. Dies war bei mir nicht der Fall.
11. Die Datei "/home/pi/can_progs/can_elster_perl.arm in einem Texteditor öffnen und den folgenden Pfad in der Datei anpassen (Perl Version kann anders sein). Den Pfad müsst Ihr überprüfen. Danach speichern.
CORE_PATH="/usr/lib/arm-linux-gnueabihf/perl/5.24.1/CORE"
12. sudo ./can_elster_perl.arm im Terminal auslösen. Dabei werden die Dateien elster_perl.so, elster_perl.pm kompiliert (sagt man dem so? :)
13. sudo cp elster_perl.so /opt/fhem/FHEM
14. sudo cp elster_perl.pm /opt/fhem/FHEM
15. sudo cd fhem (also in Pfad /home/pi/can_progs/fhem/ wechseln)
16. sudo cp 50_Elster.pm /opt/fhem/FHEM
17. In FHEM wechseln und "shutdown restart" oder im Terminal "sudo /etc/init.d/fhem start" eingeben
18. Das Device "define <name> Elster can0" eingeben.
19. Nachdem das Device erstellt ist, sollte im state "connected" stehen.
20. Mit "GET" die einzelnen Werte abfragen oder mit "SET" eingeben

So, ich hoffe das hilft einigen. Und sollte ich was vergessen haben, bitte melden.

Over and out.
Lg c

Raspi3, EnOcean, Zwave, Homematic

choetzu

Zitat von: intershopper am 24 März 2018, 09:40:08
Hallo,

erst mal Danke an Jürg (juerg5524), das fhem modul funktioniert. Ich habe zwar immer wieder mal Fehlermeldungungen, das Werte nicht gelesen werden. Derzeit polle ich jede Minute die Werte über den CAN Bus. Es wäre schön, wenn sich die Werte ohne pull Methode von selbst aktualisieren würden.


defmod hzg.read.wpl13.status at +*00:01:00 {\
fhem "get WPL13 AUSSENTEMP";;\
        sleep 2;; \
        fhem "get WPL13 PROGRAMMSCHALTER";;\
sleep 2;; \
        fhem "get WPL13 RUECKLAUFISTTEMP";;\
sleep 2;; \
        fhem "get WPL13 WPVORLAUFIST";;\
sleep 2;; \
        fhem "get WPL13 PUFFERSOLL";;\
        sleep 2;;\
        fhem "get WPL13 SPEICHERISTTEMP";;\
        sleep 2;;\
        fhem "get WPL13 BETRIEBSSTATUS";;\
        sleep 2;;\
        fhem "get WPL13 INFO_TYP";;\
\
\
}
attr hzg.read.wpl13.status alias Betriebsstatus Überwachung
attr hzg.read.wpl13.status alignTime 00:00
attr hzg.read.wpl13.status group Status
attr hzg.read.wpl13.status room Heizung


Die CAN Adresse für WAERMEPUMPENSTATUS funktioniert bei mir nicht

  // nach chriss1980 / knx forum
  // Verdichter 1:                  0x0001
  // DHC 1:                          0x0002
  // DHC 2:                          0x0004
  // Pufferladepumpe:           0x0008
  // Warmwasserladepumpe: 0x0010
  // HK 1 Pumpe:                 0x0020
  // HK 2 Pumpe:                 0x0040
  // Mischer auf:                  0x0080
  // EVU-Sperre:                  0x0100
  // Quellenpumpe:              0x0200
  // Kuehlkreispumpe:          0x0800
  { "WAERMEPUMPEN_STATUS"                              , 0x0062, et_little_endian},



Ich habe mich deshalb BETRIEBSSTATUS und INFO_TYP bedient

  // Verdichter 1:                 0x0001
  // Verdichter 2:                 0x0002
  // Pufferladepumpe 1:        0x0040
  // Pufferladepumpe 2:        0x0080
  // DHC 1:                          0x1000
  // DHC 2:                          0x2000
  // Warmwasserladepumpe: 0x4000
  // EVU Sperre:                   0x8000
  { "BETRIEBS_STATUS"                                  , 0x0176, 0},

  // HK1 Pumpe:           0x0001
  // HK2 Punpe:            0x0002
  // Mischer auf:           0x0004
  // Mischer zu:            0x0008
  // Quellenpumpe:       0x0010
  // Solarpumpe:          0x0020
  // 2. WE:                   0x0040
  // Zirkulationspumpe: 0x0080
  { "INFO_TYP"                                         , 0x019c, 0},





Ich habe meine WPL13 um ein paar sinnvolle Usereadings erweitert. So kann Pumpen- und Verdichterstatus überwacht werden.

Verdichter {
  if(ReadingsVal($NAME,"BETRIEBSSTATUS",0) & 1){return "on"} else {return "off"}
},
Pufferladepumpe {
  if(ReadingsVal($NAME,"BETRIEBSSTATUS",0) & 1 << 6){return "on"} else {return "off"}
},
Warmwasserladepumpe {
  if((ReadingsVal($NAME,"BETRIEBSSTATUS",0) & 1 << 15) eq "1"){return "on"} else {return "off"}
},
Heizpatrone {
  if((ReadingsVal($NAME,"INFO_TYP",0) & 1 << 6) eq "1"){return "on"} else {return "off"}
},
DHC_1 {
  if((ReadingsVal($NAME,"BETRIEBSSTATUS",0) & 1 << 12) eq "1"){return "on"} else {return "off"}
},
DHC_2 {
  if((ReadingsVal($NAME,"BETRIEBSSTATUS",0) & 1 << 13) eq "1"){return "on"} else {return "off"}
},
Heizkreispumpe {
if((ReadingsVal($NAME,"INFO_TYP",0) & 1 ) eq "1"){return "on"} else {return "off"}
}, Zirkulationspumpe {if((ReadingsVal($NAME,"INFO_TYP",0) & 1 << 7) eq "1"){return "on"} else {return "off"}
}


Gruß Frank

Hallo Frank,

danke für deine Vorlagen. Ich habe diesbezüglich eine Frage. Ich habe bei mir auch keine WAERMEPUMPENSTATUS. Aber ich krieg auch BETRIEBSSTATUS und INFO_TYP nicht hin.
ich habe eine WPL18e.

Was meinst du genau mit:
  { "BETRIEBS_STATUS"                                  , 0x0176, 0},
und   
{ "INFO_TYP"                                         , 0x019c, 0},

Wo genau muss ich diesen Code platzieren?

Danke für die Hilfe... lg c
Raspi3, EnOcean, Zwave, Homematic

intershopper

Hallo choetzu,

0x0176 und 0x019c sind die CAN bus Adressen. Die sollten bei deiner WPL18 gleich sein.

Füge einfach die usereadings an der WPL Can object in Fhem im Attribute usereadings ein.

Dann sind neue Eigenschaften sichtbar.

Gruss Frank

gbr

Danke schonmal für die genauen Anleitungen und das FHEM Modul. Hat dadurch bei mir mit Raspi 3 + PiCan2 sofort geklappt!
Ich habe eine TTL 10 AC mit WPM II.
Generell passt schon vieles zusammen. Wahrscheinlich müsst ich auch mal die Logs laufen lassen, um alle Werte zu finden.
Ich würde auch gerne die Fehlermeldungen der WP verarbeiten, jedoch scheint Adresse 0001 nicht in der Vorlage/Plugin gemappt zu sein. Diese enthält wohl die Nummer des Fehlerspeichers für den aktuellen Fehler (ist es ein Ringspeicher?). Das Datum des Fehlers (wie in der Fehlerliste im WPM) bekommt man aber nicht per CAN Bus oder? D.h. man wartet auf Änderung von 0001 und baut sich so eine eigene Fehlerliste auf. Oder gibt es einen einfacheren Weg? Und wäre dies die erste Anlaufstelle um am schnellsten herauszufinden, ob etwas mit der Heizung gerade nicht i.O. ist oder anhand welcher Werte "alarmiert" ihr?

EDIT: Über die Anpassung der elster.pm Datei kann ich ja die fehlenden Adressen aufnehmen oder gibt es noch einen anderen Weg? Insbesondere wäre die Frage, wo das Wertemapping/Wertecasting stattfindet bzw. man den Dateityp anpassen kann oder muss man es dafür neu compilieren?

gbr

Mein FHEM Log war noch voll mit "elster: get sniffed.." Einträgen. Musste die Zeile "elster_perl::toggle_trace" entsprechend im PM-File auskommentieren. Wäre schön, wenn man das über das Plugin Trace Level steuern könnte o.ä. und es per Default eher aus wäre. Weil durch häufiges Schreiben geht ja auch schneller die SD Karte kaputt :)