FHEM Forum

FHEM - Anwendungen => Heizungssteuerung/Raumklima => Thema gestartet von: juerg5524 am 14 Oktober 2015, 13:43:31

Titel: Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 14 Oktober 2015, 13:43:31
Hallo zusammen,

ich bin ein absoluter FHEM-/Perl-Anfänger. Mit meinem Modul können Daten aus der Wärmepumpe gelesen und verändert werden. Aus Vorsicht teste ich vorwiegend in einer Simulationsumgebung (Windows). Wenn jemand daran interessiert ist, werde ich gerne auch mehr dazu schreiben.

Viele Grüsse
Jürg

P.S.: Weitere Software dazu befindet sich unter http://juerg5524.ch im File can_progs_fhem_test.zip (später in can_progs.zip).
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Burny4600 am 22 Dezember 2015, 13:31:27
@juerg5524

Habe einen Raspberry inklusive PICAN.
Möchte mich damit in die bestehende Heizung mit dem Elfatherm E6 hängen.

Wie muß ich den PICAN in FHEM dafür konfigurieren?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 23 Dezember 2015, 15:54:10
Hallo Chris

der PICAN kann als SocketCAN-Schnittstelle konfiguriert werden. Die Bitrate für den E6 sollte bei 20000 bits/sec liegen:

# ip link set can0 up type can bitrate 20000

Dann kannst Du meine Software (ohne FEHM) verwenden. "can0" ist das Device, das Du verwenden kannst.

Zum Elfatherm E6 habe ich keine Zugriffsdaten (Zuordnung, zu welchem CAN-ID - Elster-Index - Paar man welchen Wert abfragen kann). Die benötigten Daten kannst Du aber selbst ermitteln. Dazu brauchst Du das Programm ComfortSoft. Warnung: Ist ziemlich kompliziert.

Viele Grüsse
Jürg 
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Burny4600 am 23 Dezember 2015, 20:05:11
@juerg5524

Danke für den Tipp vorerst einmal.
Werde ich nach den Feiertagen gleich einmal ein wenig testen.

Gab es eigentlich schon Einbindungen via CAN an Heizungsreglern usw. in FHEM?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Burny4600 am 31 Dezember 2015, 09:28:52
@juerg5524

Mit diesen Einstellungen kommen jetzt Daten an.
Wie kann ich die Schnittstelle jetzt in FHEM einbinden?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 Januar 2016, 13:42:35
Hallo Burny4600

Das Wrapper-Modul (Files elster_perl.so und elster_perl.pm) kannst Du mit dem Skript can_elster_perl.arm erzeugen. Diese beiden Files ins Library-Perl-Verzeichnis kopieren. Bei mir ist das:

/usr/lib/perl/5.14.2

Das Modul "50_Elster.pm" solltest Du auf Deine WP anpassen. Danach ins FHEM-Verzeichnis kopieren.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Burny4600 am 12 Januar 2016, 18:32:08
@juerg5524

Kannst du mir das etwas genauer erläutern was du mit dem Wrapper-Modul usw. meinst.

Ich finde zwar die Dateien aber wo muss ich mit dem Skript can_elster_perl.arm die Dateien erzeugen, bzw. wo muß ich das gesamte can_progs Verzeichnis am Raspi ablegen?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 15 Januar 2016, 13:57:14
Hallo Chris

Das Wrapper-Modul elster_perl.so wird zur Laufzeit mit "use elster_perl;" in ein Perl-Programm eingebunden. Alle Methoden, die im File elster_perl.h aufgeführt sind, können dann vom Perl-Programm verwendet werden. In Deinem Fall solltest Du

elster_perl::setdev("can0");

verwenden. set_can232 solltest Du auskommentieren.

Wo das Verzeichnis can_progs steht, spielt keine Rolle. Am besten vielleicht in Deinem Home-Verzeichnis. Wechsle ins prog-Verzeichnis und starte can_elster_perl.arm:

>cd can_progs
>./can_elster_perl.arm

Dabei wird die Open-Source swig verwendet (generiert elster_perl_wrap.cxx).

Viele Grüsse und gutes Gelingen
Jürg 
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 03 Februar 2016, 21:14:48
Hallo zusammen,

Ich habe einen Raspberry und PICAN paltine.  Diese hängt an einer Tecalor TTL 15A .

Bekomme das Modul und das PICAN Board nicht zum laufen.

Kann jemand eine Detailierte Anleitung schreiben?

Danke und Gruß

NIWA
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 Februar 2016, 16:04:46
Hallo Niwa,

was alles geht nicht? Für den Einstieg gibt es eine Beschreibung auf messpunkt.org.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Brun am 04 November 2016, 12:59:44
Servus,

haben schon einige die Verbindung realisiert?
Ich wollte mich mal dran machen. Scheitere leider aber schon ein ein paar Punkten.

Ich wollte erstmal einen can_scan machen.
Aber die gewünschten informationen kommen leider nicht. Und ich bekomme immer was anderes.

root@rpi-keller:~/can_progs# ./can_scan ttyACM0 780 total
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

scan on CAN-id: 780
list of valid can id's:

  000 (a51a = 165-26)


root@rpi-keller:~/can_progs# ./can_scan ttyACM0 780 total
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

scan on CAN-id: 780
list of valid can id's:

  000 (a51a = 165-26)
  483 (a51a = 165-26)
  503 (4307 = 67-07)


root@rpi-keller:~/can_progs# ./can_scan ttyACM0 780 total
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

scan on CAN-id: 780
list of valid can id's:

  000 (a51a = 165-26)
  183 (a51a = 165-26)



Vorschläge?
Ideen?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 10 November 2016, 10:31:50
Hallo Brun,

möglicherweise ist die Id 780 bereits vergeben. Könntest Du es bitte mit der Id 680 versuchen (und zunächst ohne den Zusatz "total").

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Brun am 15 November 2016, 17:54:16
Hallo Jürgen,

das Ergebnis ist reproduzierbar immer das selbe.
Ich bekomme immer eine ähnliche Ausgabe wie schon oben. Egal welche Sender ID ich nehme.

Gruß Brun
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 16 November 2016, 15:41:06
Hallo Burn,

es könnte auch an der Hardware liegen. Z.B., wenn keine galvanische Trennung vorliegt und ein Fehlerstrom fliest (kann die Hardware zerstören). Ebenfalls zu einem Fehlverhalten kann ein falsch abgeschlossener CAN-Bus führen. Ich nehme aber an, dass Du ein sehr kurzes Kabel (1 oder 2 Meter) verwendest, welches nicht abgeschlossen werden muss.

Wenn Du passiv die Daten am CAN-Bus analysierst, sind da Unregelmässigkeiten zu sehen (siehe Programm can_logger)?

Gibt es beim Wiederholen von

./can_scan ttyACM0 680 503.000b trace

auch Unregelmässigkeiten?

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Brun am 29 November 2016, 16:03:43
So. Habs jetzt endlich mal geschafft.

Angeschlossen habe ich den Adapter mit nur einen 10cm langen Kabel. Da der RPI direkt neben dem WPM ist. Hab ich da vielleicht schon was falsch gemacht?

mit can_scan bekomme ich nur etwa sowas:
./can_scan ttyACM0 680 503.000b trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] a1 03 fa 00 0b           .....
     680 00 [5] a1 03 fa 00 0b           .....
  0  29.11.2016 15:02:40.856       680 00 [5] a1 03 fa 00 0b           .....
no value read
Und das ändert sich auch permanent.

Sorry, aber von CAN habe ich leider kein blassen Schimmer.


Gruß Brun
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 30 November 2016, 16:52:14
Hallo Brun,

mich würde interessieren, welche CAN-IDs Deine WP verwendet. Mit dem Befehl

 ./can_logger ttyACM0

werden diese aufgelistet und mit

 ./can_logger ttyACM0 60 logfile

werden die Meldungen alle 60 Sekunden in "logfile..." abgespeichert. Mit einem solchen Log kann ich Dir eventuell weiterhelfen.

Viele Grüsse
Jürg

P.S.: Welchen CAN-Adapter hast Du im Einsatz?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Brun am 01 Dezember 2016, 14:41:10
Hallo Jürg,

mit can_log sehe ich immer folgende Adressen:
180
480
500

Ich Kann dir gerne so ein Logfile geben. Aber ungern öffentlich.

Als Adapter verwende ich den USBtin von Fischl.


Gruß Brun
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 02 Dezember 2016, 10:35:41
Hallo Brun,

dann sollte zu diesen Adressen mit

  ./can_scan ttyACM0 680 xxx.000b trace

eine Antwort kommen. (Anstelle von xxx 180, 480 oder 500 einsetzen.)

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 26 Januar 2017, 14:16:18
Hallo zusammen,
Hallo juerg5524,

ich habe meine Stiebel Eltron WPF13 mit WPM2 über CAN Bus an meinen RPI2 angeschlossen.
Verwendet habe ich ein PiCan2 Interface und ein aktuelles Jessie System.
Abschlusswiderstand 120 Ohm habe ich direkt auf dem PiCan Board durch die Brücke (JP) gesetzt

mit
ip link set can0 type can bitrate 20000
ifconfig can0 up
aktiviere ich das Can Interface.
danach habe ich folgende Daten empfangen:

pi@rpi_can:~/can/can_progs $ candump can0
  can0  602   [7]  66 02 FE 01 00 00 00
  can0  180   [7]  66 79 FE 01 00 00 00
  can0  480   [7]  A6 79 FE 01 00 00 00
  can0  602   [7]  66 02 FE 01 00 00 00
  can0  180   [7]  66 79 FE 01 00 00 00
  can0  480   [7]  A6 79 FE 01 00 00 00
  can0  601   [7]  60 01 52 00 00 00 00


es kommt aber nur alle paar Minuten mal ein Telegramm.
Ist das normal? oder ist das erstmal der Anfang?

Muss ich nun eine dieser Adressen mit dem 
./can_scan ttyACM0 680 xxx.000b trace"anfragen" ?

Bin über jeden Hinweis dankbar.



Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 27 Januar 2017, 08:46:23
Nun habe ich mit ./can_logger can0 60 logfile.txt   folgende Aufzeichnung gemacht:

 
  0  26.1.2017 13:26:40.742       602 00 [7] 66 02 fe 01 00 00 00     f......
  1  26.1.2017 13:26:40.763       180 00 [7] 66 79 fe 01 00 00 00     fy.....
  2  26.1.2017 13:26:40.786       480 00 [7] a6 79 fe 01 00 00 00     .y.....
  3  26.1.2017 13:33:40.752       602 00 [7] 66 02 fe 01 00 00 00     f......
  4  26.1.2017 13:33:40.774       180 00 [7] 66 79 fe 01 00 00 00     fy.....
  5  26.1.2017 13:33:40.798       480 00 [7] a6 79 fe 01 00 00 00     .y.....
  6  26.1.2017 13:40:40.746       602 00 [7] 66 02 fe 01 00 00 00     f......
  7  26.1.2017 13:40:40.768       180 00 [7] 66 79 fe 01 00 00 00     fy.....
  8  26.1.2017 13:40:40.790       480 00 [7] a6 79 fe 01 00 00 00     .y.....
  9  26.1.2017 13:41:54.783       601 00 [7] 60 01 52 01 00 00 00     `.R....
 10  26.1.2017 13:47:40.767       602 00 [7] 66 02 fe 01 00 00 00     f......
 11  26.1.2017 13:47:40.789       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 12  26.1.2017 13:47:40.811       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 13  26.1.2017 13:51:24.766       601 00 [7] 60 01 52 00 00 00 00     `.R....
 14  26.1.2017 13:54:40.773       602 00 [7] 66 02 fe 01 00 00 00     f......
 15  26.1.2017 13:54:40.795       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 16  26.1.2017 13:54:40.817       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 17  26.1.2017 14:01:40.756       602 00 [7] 66 02 fe 01 00 00 00     f......
 18  26.1.2017 14:01:40.778       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 19  26.1.2017 14:01:40.800       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 20  26.1.2017 14:08:40.769       602 00 [7] 66 02 fe 01 00 00 00     f......
 21  26.1.2017 14:08:40.791       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 22  26.1.2017 14:08:40.813       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 23  26.1.2017 14:15:40.763       602 00 [7] 66 02 fe 01 00 00 00     f......
 24  26.1.2017 14:15:40.785       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 25  26.1.2017 14:15:40.807       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 26  26.1.2017 14:22:40.783       602 00 [7] 66 02 fe 01 00 00 00     f......
 27  26.1.2017 14:22:40.805       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 28  26.1.2017 14:22:40.827       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 29  26.1.2017 14:25:08.817       601 00 [7] 60 01 52 01 00 00 00     `.R....
 30  26.1.2017 14:29:40.788       602 00 [7] 66 02 fe 01 00 00 00     f......
 31  26.1.2017 14:29:40.810       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 32  26.1.2017 14:29:40.832       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 33  26.1.2017 14:34:38.779       601 00 [7] 60 01 52 00 00 00 00     `.R....
 34  26.1.2017 14:36:40.788       602 00 [7] 66 02 fe 01 00 00 00     f......
 35  26.1.2017 14:36:40.810       180 00 [7] 66 79 fe 01 00 00 00     fy.....
 36  26.1.2017 14:36:40.832       480 00 [7] a6 79 fe 01 00 00 00     .y.....
 37  26.1.2017 14:43:40.785       602 00 [7] 66 02 fe 01 00 00 00     f......


anbei meine log Datei als Anhang.

Sind darin nun meine Zugangsadressen?

 

dann sollte zu diesen Adressen mit

  ./can_scan ttyACM0 680 xxx.000b trace

eine Antwort kommen. (Anstelle von xxx 180, 480 oder 500 einsetzen.)


Das werde ich nachher mal ausprobieren....


Oder hat jemand dazu noch einen weiteren Hinweis?





Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 27 Januar 2017, 09:04:02
Das Ergebnis meines scans:

pi@rpi_can:~/can/can_progs $ ./can_scan can0 680 180.0126 trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] 31 00 fa 01 26           1...&
  0  27.1.2017 07:58:46.969       680 00 [5] 31 00 fa 01 26           1...&
  1  27.1.2017 07:58:46.982       180 00 [7] d2 00 fa 01 26 3b 00     ....&;.

send ComfortSoft: 0d00030100fa0126800801ba   can232: t68053100FA0126
recv ComfortSoft: 03000d0200fa01263b00016e   can232: t1807D200FA01263B00

value: 3b00  (MINUTE  59)
pi@rpi_can:~/can/can_progs $ ./can_scan can0 680 480.0126 trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] 91 00 fa 01 26           ....&
  0  27.1.2017 07:59:57.829       680 00 [5] 91 00 fa 01 26           ....&
  1  27.1.2017 07:59:57.852       480 00 [7] d2 00 fa 01 26 00 00     ....&..

send ComfortSoft: 0d00090100fa0126800801c0   can232: t68059100FA0126
recv ComfortSoft: 09000d0200fa012600000139   can232: t4807D200FA01260000

value: 0000  (MINUTE  0)
pi@rpi_can:~/can/can_progs $ ./can_scan can0 680 602.0126 trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] c1 02 fa 01 26           ....&
  0  27.1.2017 08:00:20.507       680 00 [5] c1 02 fa 01 26           ....&
     680 00 [5] c1 02 fa 01 26           ....&
  1  27.1.2017 08:00:21.544       680 00 [5] c1 02 fa 01 26           ....&
  2  27.1.2017 08:00:21.551       602 00 [7] d2 00 fa 01 26 00 00     ....&..

send ComfortSoft: 0d000c0102fa0126800801c5   can232: t6805C102FA0126
recv ComfortSoft: 0c020d0200fa01260000013e   can232: t6027D200FA01260000

value: 0000  (MINUTE  0)
pi@rpi_can:~/can/can_progs $

(Ich hoffe ich habe jetzt nichts verstellt oder überschrieben)

Hmmmmmm....
 :o :o :o
und was sagt mir das Ergebnis nun?

ich möchte gerne meine ganzen Wärmepumpen-Daten über das Fhem_Modul  aufzeichnen und darstellen?
Kann mir jemand den weiteren Weg beschreiben wie es nun weiter geht?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Gerhard am 27 Januar 2017, 15:40:39
Hallo Korre,

der CAN Bus ist ein multi Mater Bus, dh. alle fangen an zu senden nach ein IDL und hören gleichzeitig mit,
wobei der Knoten mit dem kleinstem ID gewinnt und sendet weiter und die Anderen hören ab da mit (Arbitrierung).
Also das war nur eine kleine Teorie die der Sache nicht weiter hilft, aber hilft dazu zu verstehen wie die einzelne
Messages aufgebaut sind.
Die Zahlen 680, 180 etc. sind CAN-Ids (werden in einem Bus von 1 bis 2047 vergeben).
Ein CAN-Message ist so Aufgebaut:

CAN-ID byte1 .. .. byte8 (maximal)

hier:
680 [len] 31 00 fa 01 26
hier muss man aufpassen (in dein CAN-Programm nachlesen) wie die einzelnen Bytes bei einem Word oder Long dargestellt werden (high low Folge).

Eine CAN-ID kann nur von einem Knoten gesendet werden aber alle können es empfangen.

Aus den CAN-IDs sieht man das es kein CANopen Protokol ist (dann wäre es einfacher gewisse dinge rauszufinden).

Als erstes muss man wissen was die einzelnen Messages transportieren und wie sie aufgebaut sind (vll. eine CAN Beschreibung
der einzelnen Messages von Hersteler?).
Wenn nicht muss man das rausfinden:
z.B. Etwas verstellen und schauen was gesendet wird und was geantwortet wird.
Wenn man dies hat, kann man sich an die Anbindung an fhem machen.

Gerhard
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 27 Januar 2017, 15:58:21
Hallo Korre,

Du hast damit nichts verstellt. Das ist eine einfache Anfrage, die vermutlich nur zur ID 180 die korrekten Minuten zurück gibt.

Wie zu Beginn dieses Beitrags, kannst Du den Wrapper zusammen mit 50_Elster.pm verwenden. Das Perl-Modul musst Du aber an Deine WP anpassen.

In 50_Elster.pm gibt es eine kleine Anleitung.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 30 Januar 2017, 16:47:21
Hallo zusammen,

habe nun wie in der 50_Elster - Anleitung beschrieben einen Total-scan gemacht.
Hatte dabei einige Unklarheiten.

Wenn ich nur ./can_scan can0 680 total trace durch führe konnte ich keine Aufzeichnung als Trace-Datei finden.
Weiß nicht genau wie das vorgesehen ist, aber ich dachte die Option "trace" erzeugt eine Datei. ???

Ich habe mir dann mit folgendem Befehl beholfen und die Ausgaben in eine Datei umgeleitet.
 ./can_scan can0 680 total trace >totalscan_korre
Die Datei im Anhang sieht sehr umfangreich und vielversprechend aus.
Ist die Datei korrekt und kann diese so weiterverwendet werden?

Ich habe versucht die Datei in CS_Brücke zu laden, kam leider nicht  weiter,
da beim "Start" die Meldung "serielle Schnittstelle konnte nicht geöffnet werden" erschien.
Ich muss bestimmt erst "com2com" starten, bzw. aus dem Internet downloaden. ( habe das Programm in Jürgs can_progs nicht finden können ....)

Kann mir jemand einen weiteren Tipp geben, bzw. könnte jemand meine totalscan-Datei mit comfortSoft umwandeln?



Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 31 Januar 2017, 10:52:26
Hallo Korre,

ich werde Dir helfen. Aber leider muss ich feststellen, dass in meiner Software ein Fehler auftritt, den ich zuerst korrigieren muss. Der Fehler äussert sich so, dass die Zuordnung im Scan verschoben ist. Bei den Zeilen aus Deinem Scan

45227  30.1.2017 14:54:05.563       680 00 [5] c1 02 fa fd b7           .....
45228  30.1.2017 14:54:05.582       602 00 [7] d2 00 fa fd b4 96 00     .......
  { 0x602, 0xfdb7, 0x9600},
     680 00 [5] c1 02 fa fd b8           .....
45229  30.1.2017 14:54:05.587       680 00 [5] c1 02 fa fd b8           .....
45230  30.1.2017 14:54:05.605       602 00 [7] d2 00 fa fd b6 80 00     .......
     680 00 [5] c1 02 fa fd b9           .....
45231  30.1.2017 14:54:05.610       680 00 [5] c1 02 fa fd b9           .....
45232  30.1.2017 14:54:05.628       602 00 [7] d2 00 fa fd b7 80 00     .......

ist die erste Anfrage zum Elster-Index fdb7, die Antwort taucht aber erst in der übernächsten Anfrage auf. Es mag auch damit zusammenhängen, dass ich für den Live-Test nur den Raspi verwendete. Windows und MAC wurden mit Simulationen getestet!

Ich hoffe, dass Du etwas Geduld aufbringen kannst.

Ja, es braucht zuerst com0com (und nicht com2com).

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 31 Januar 2017, 12:13:09
Hallo Jürg,

danke schonmal vorab, dass du dich der Sache annimmst.
Warum könnte das verschoben sein?
Habe ich was falsch gemacht mit meinem umleiten der Ausgaben in die Datei, oder reagiert bei meiner Konstellation etwas träge?
Ich habe es mit meinem Raspi B  und der PiCan Schnittstelle gescannt.

Klar habe ich etwas Geduld, auch wenn ich schon sehr gespannt bin, was bei diesem meinem Projekt als nächstes passiert. 8) 8) 8) .

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 03 Februar 2017, 14:45:46
Hsllo,
bin relativer Laie in der Thematik.

Habe vor einen WPMII über einen USBtin an einen Raspberry 3 anzubinden.

Probleme gehen schon los einen Totalscan zu machen.
Bei der Befehlseingabe kommt folgendes :

./can_scan.arm: Permission denied

Hab versucht was im Forum in Erfahrung zu bringen. Leider ohne Erfolg.

Wer kann helfen?

GRuß
niwa

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 Februar 2017, 11:18:14
Hallo niwa,

vermutlich kannst Du mit dem Befehl "chmod" das Ausführungsrecht freischalten:

chmod 777 can_scan.arm

eventuell auch

sudo chmod 777 can_scan.arm

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 04 Februar 2017, 11:27:25
Hallo Jürg,

danke für deine Hilfe.

Das Problem war die Berechtigung . Ich hab vor lauter Bäumen den Wald nicht gesehen.

ich bekomme nach dem kompelieren folgende Ausgabe

./can_scan /dev/ttyACM0 680

elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

list of valid can id's:

  000 (0000 = 0-00)


Sieht irgendwie nicht so gut aus, oder?

Gruß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 Februar 2017, 16:17:03
Hallo Niwa,

nein, sieht wirklich nicht gut aus! Welche WP hast du im Einsatz?

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 05 Februar 2017, 09:17:59
Hallo Korre,

im neusten can_progs.zip gibt es ein "fhem_tab_korre.inc" das Du in 50_Elster.pm einsetzen kannst. Damit ist 50_Elster.pm exakt auf Deine WP ausgelegt.

In "scan_data_korre.inc" sind die ausgefilterten Daten zu Deinem Scan. Eine ComfortSoft-Darstellung ist im Anhang ersichtlich.

Der Fehler beim Scan ist korrigiert.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 06 Februar 2017, 20:47:46
Hallo Jürg,

hab eine Tecalor TTL 15 AS mit einem WPM II im Einsatz.

Mein Buskabel ist ca. 30 cm lang und ist mit 120 Ohm am USBtin terminiert.

Mit der Version vom 25.01. habe ich mit folgendem Befehl was rausbekommen:

./can_scan /dev/ttyACM0 680 180

Mit der akutellen Version sieht es schlecht aus, sprich ich bekomme gar nix angezeigt.

GRuß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 07 Februar 2017, 07:40:52
Hallo Niwa,

danke für die Fehlermeldung. Bekommst Du denn mit

./can_logger ttyACM0 0

oder mit

./can_scan 680 180.000b trace

etwas?

Der Bus ist bereits an 2 Enden terminiert. Bei 30 cm sollte man nicht zusätzlich terminieren.

Mit dem USBtin solltest Du vorsichtig sein, da er nicht galvanisch trennt!

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 07 Februar 2017, 17:26:57
Hallo Jürg,

bei beiden Befehle bekomme ich Ausgaben

Gruß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 08 Februar 2017, 10:34:48
Hallo Niwa,

könntest Du bitte den Befehl, der nicht funktionierte, mit dem Zusatz "trace" ausführen:

./can_scan ttyACM0 680 180 trace

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 09 Februar 2017, 17:36:05
Hallo Jürg,

habe ich gemacht. Ich bekomme eine Ausgabe.
fhem
Welche Befehle muss ich ausführen, damit ich dein fhem Modul nutzen kann?

Gruß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 10 Februar 2017, 11:38:30
Hallo Niwa,

Du brauchst von der WP einen Scan. Mit den Daten des Scans kann man dann die richtige Tabelle in 50_Elster.pm einsetzen. Dazu müsste aber zu

./can_scan ttyACM0 680

eine Liste mit 4 bis 7 Geräten (IDs) angezeigt werden. Kriegst Du diese Liste mit der neusten Software? Wenn nein: Kannst Du einige Zeilen, welche

./can_logger ttyACM0 0

generiert, hier posten? Einfach um zu sehen, welche IDs bei Dir aktiv sind.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 10 Februar 2017, 15:05:49
Hallo Jürg,

bei ./can_scan ttyACM0 680 bekomme ich keine IDs angezeigt.

Beim ./can_logger ttyACM0 0 habe ich folgendes bekommen:

0  10.2.2017 14:02:37.803       601 00 [7] d2 00 fa 00 0b 80 00     .......
  1  10.2.2017 14:02:37.803       602 00 [7] d2 00 fa 00 0b 80 00     .......
  2  10.2.2017 14:02:37.806       180 00 [7] a0 79 0c ff fd 00 00     .y.....
  3  10.2.2017 14:02:37.806       480 00 [7] a1 00 fa 01 99 00 00     .......
  4  10.2.2017 14:02:37.806       500 00 [7] 92 00 fa 01 99 00 93     .......
  5  10.2.2017 14:02:37.806       480 00 [7] a1 00 fa 01 d6 00 00     .......
  6  10.2.2017 14:02:37.806       480 00 [7] a1 00 16 00 00 00 00     .......
  7  10.2.2017 14:02:37.807       500 00 [7] 92 00 fa 01 d6 01 c8     .......
  8  10.2.2017 14:02:37.809       480 00 [7] a1 00 fa 07 a8 00 00     .......
  9  10.2.2017 14:02:37.809       480 00 [7] a0 00 fa 02 ca 01 03     .......
 10  10.2.2017 14:02:37.809       500 00 [7] 92 00 16 01 96 00 00     .......
 11  10.2.2017 14:02:37.810       480 00 [7] a0 00 fa 09 17 00 00     .......
 12  10.2.2017 14:02:37.810       180 00 [7] a0 79 0c ff fd 00 00     .y.....
 13  10.2.2017 14:02:40.946       180 00 [7] a0 79 0c ff fd 00 00     .y.....
 14  10.2.2017 14:02:42.929       480 00 [7] a1 00 fa 01 99 00 00     .......
 15  10.2.2017 14:02:42.972       500 00 [7] 92 00 fa 01 99 00 93     .......
 16  10.2.2017 14:02:44.942       480 00 [7] a1 00 fa 01 d6 00 00     .......
 17  10.2.2017 14:02:44.960       480 00 [7] a1 00 16 00 00 00 00     .......
 18  10.2.2017 14:02:44.977       480 00 [7] a1 00 fa 07 a8 00 00     .......
 19  10.2.2017 14:02:44.996       480 00 [7] a0 00 fa 02 ca 00 ff     .......
 20  10.2.2017 14:02:45.014       480 00 [7] a0 00 fa 09 17 00 00     .......
 21  10.2.2017 14:02:45.031       480 00 [7] a1 00 fa 0a 36 00 00     ....6..
 22  10.2.2017 14:02:45.049       480 00 [7] a1 00 fa 07 a8 00 00     .......
 23  10.2.2017 14:02:45.174       500 00 [7] 92 00 fa 01 d6 01 c9     .......
 24  10.2.2017 14:02:45.217       500 00 [7] 92 00 16 01 96 00 00     .......
 25  10.2.2017 14:02:45.438       500 00 [7] 92 00 fa 07 a8 02 18     .......

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 13 Februar 2017, 18:56:30
Hallo ,
ich bekomme weder das mit dem totalscan als auch das importieren in die CS_Bruecke sowie die Verbindung zur Comfort Soft hin.

Wer kann mir weiterhelfen?


Gruß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 20 Februar 2017, 14:48:01
Hallo Niwa,

nach dem Log sind Deine IDs: 180, 480, 500, 601 und 602. Vermutlich sind 301 und 302 auch vorhanden. Was erhältst Du mit

./can_scan ttyACM0 680 180.000b

Anstelle von 180 kannst Du auch 480, 500 usw. einsetzen. Du solltest zu allen gültigen IDs einen Wert erhalten. Wenn der Wert = 8000 ist, dann gibt es zum Elster-Index 0199 (anstelle von 000b) einen gültigen Wert. Wenn Du nichts erhältst, dann würde mich die Ausgabe zu

./can_scan ttyACM0 680 180.000b trace

interessieren. Möglicherweise setzt der Raspi kein Telegramm ab.

Viele Grüsse
Jürg


Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 20 Februar 2017, 18:10:45
Hallo Jürg,

Befehl 1 war leider erfolglos.

Folgende Ausgabe bekomme ich beim 2. Befehl:

 ./can_scan ttyACM0 680 180.000b trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] 31 00 fa 00 0b           1....
  0  20.2.2017 17:08:44.582       180 00 [7] d2 00 fa 00 0b 80 00     .......

send ComfortSoft: 0d00030100fa000b8008019e   can232: t68053100FA000B
recv ComfortSoft: 03000d0200fa000b80000197   can232: t1807D200FA000B8000

value: 8000  (GERAETE_ID  not available)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 21 Februar 2017, 14:24:20
Hallo Niwa,

das sieht schon mal nicht schlecht aus. Das heisst, Du kannst den Scan mit dem Zusatz "trace" machen. Die notwendigen Daten erhältst Du dann. Allerdings werden sehr viele Daten geliefert und wenn sie auf einem Flash-Speicher gespeichert werden, kann damit der Speicher zerschossen werden!

Befehl:

./can_scan ttyACM0 680 total trace

Wo der Fehler liegt, weiss ich momentan noch nicht. Ich werde aber versuchen, ihn zu finden.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 23 Februar 2017, 16:54:48
Hallo Jürg,

hab deinen Befehl eingegeben. Es kommen zw. 60 und 80 zeichen dann ist der Scan vorbei.

Es wird keine Datei geschrieben.

Gruß
Niwa
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 24 Februar 2017, 14:46:29
Hallo Niwa,

was genau kommt nach der Copyright-Zeile?

Nein, eine Datei wird nicht geschrieben. Dazu kann man z.B. die Ausgabe umlenken:

./can_scan ttyACM0 680 total trace >scan.inc

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: niwa83 am 24 Februar 2017, 15:25:26
Folgende Ausgabe habe ich bekommen

elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

scan on CAN-id: 680
list of valid can id's:

     680 00 [5] 01 00 fa 00 0b           .....
  0  24.2.2017 11:03:01.341       500 00 [7] 92 00 fa 01 d6 01 25     ......%
     680 00 [5] 01 01 fa 00 0b           .....
     680 00 [5] 01 01 fa 00 0b           .....
     680 00 [5] 01 01 fa 00 0b           .....
  5  24.2.2017 11:03:03.372       680 00 [5] 01 01 fa 00 0b           .....
     680 00 [5] 01 02 fa 00 0b           .....
  6  24.2.2017 11:03:03.379       680 00 [5] 01 02 fa 00 0b           .....
     680 00 [5] 01 03 fa 00 0b           .....
  7  24.2.2017 11:03:03.386       680 00 [5] 01 03 fa 00 0b           .....
     680 00 [5] 11 00 fa 00 0b           .....
  8  24.2.2017 11:03:03.391       680 00 [5] 11 00 fa 00 0b           .....
     680 00 [5] 11 01 fa 00 0b           .....
  9  24.2.2017 11:03:03.398       680 00 [5] 11 01 fa 00 0b           .....
     680 00 [5] 11 02 fa 00 0b           .....
 10  24.2.2017 11:03:03.404       680 00 [5] 11 02 fa 00 0b           .....
     680 00 [5] 11 03 fa 00 0b           .....
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 25 Februar 2017, 13:43:56
Hallo Niwa,

es sieht so aus, als ob einzelne Befehle gehen, aber bei einer Befehls-Serie geht nichts. Wäre es denkbar, dass der Raspi den USBtin mit zu wenig Strom versorgt?

Viele Grüsse
Jürg

@all: Gibt es jemanden, der den Raspi 3 erfolgreich mit dem USBtin betreibt?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 01 März 2017, 13:46:47
Hallo zusammen,

ich wollte nun mein Gerät in FHEM anlegen mit

define WP Elster can0
hat nicht funktioniert. Modul konnte nicht geladen werden etc.


Dann habe ich versucht das Modul manuell zu laden.

reload 50_Elster.pm
Can't locate loadable object for module elster_perl in @INC (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl ./FHEM) at /usr/share/perl5/elster_perl.pm line 11.
Compilation failed in require at ./FHEM/50_Elster.pm line 60.
BEGIN failed--compilation aborted at ./FHEM/50_Elster.pm line 60.


Ok. es haben sich wohl irgendwelche Verzeichnisse geändert da ich Perl5.20 auf einem aktuellen System habe ( mit FHEM 5.8 )
Alles klar. die beiden Daten elster_perl.pm und elster_perl.so /usr/lib/arm-linux-gnueabihf/perl/5.20.2 kopiert.


reload 50_Elster.pm
 Can't load '/usr/lib/arm-linux-gnueabihf/perl/5.20/elster_perl.so' for module elster_perl: libperl.so.5.14: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden at /usr/lib/arm-linux-gnueabihf/perl/5.20/DynaLoader.pm line 187.
 at /usr/lib/arm-linux-gnueabihf/perl/5.20/elster_perl.pm line 11.
Compilation failed in require at ./FHEM/50_Elster.pm line 60.
BEGIN failed--compilation aborted at ./FHEM/50_Elster.pm line 60.


Die Datei 'elster_perl.so' ist definitiv vorhanden,
weitere folgende Versuche mit reload 50_Elster.pm enden mit:

Attempt to reload elster_perl.pm aborted.
Compilation failed in require at ./FHEM/50_Elster.pm line 60.
BEGIN failed--compilation aborted at ./FHEM/50_Elster.pm line 60.


in der Zeile 60 in der 50_Elster.pm steht

use elster_perl; # SWIG wrapper zu elster_perl.so (C++-Modul)

 :o :o :o

Das Module "elster_perl.so " kann bei mir nicht geladen werden.
Weiß jemand Rat?

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 01 März 2017, 15:08:43
ich bin mir gerade nicht sicher ob vielleicht die Datei, "libperl.so.5.14" vermisst wird.
die habe ich nämlich so nicht gefunden sondern nur die Datei "libperl.so.5.20.2" ???

Wieso wird denn die Datei "libperl.so.5.14" gebraucht?
Wo kommt diese Abhängigkeit her? "libperl.so.5.20.2" habe ich gefunden.
Hat jemand ein aktuelles Jessie mit FHEM5.8 und dem Wrapper am laufen?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 01 März 2017, 16:37:20
Habe mal noch swig installiert um die beiden Dateien
elster_perl.pm und elster_perl.so neu zu erzeugen leider ohne Erfolg:

sudo ./can_elster_perl.arm
elster_perl_wrap.cxx:743:20: fatal error: EXTERN.h: Datei oder Verzeichnis nicht gefunden
 #include "EXTERN.h"
                    ^
compilation terminated.
elster_instance.cpp: In function ‘void elster_instance::Undef()’:
elster_instance.cpp:439:12: warning: deleting object of polymorphic class type ‘KCanElster’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
     delete Can;
            ^

Wenn ich mir die Liste der Installierten Bibliotheken anschaue, erscheint libperl (mit falscher Version), aber keine "elster_perl"
sudo ldconfig -p | grep perl
        libperl.so.5.20 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libperl.so.5.20

 :'( :'( :'(

Hat jemand eine Idee wie ich die beiden Dateien in ein aktuelles System integrieren kann um die WP auszulesen?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 01 März 2017, 22:10:14
OK, bin einen Schritt weiter:

Die "falsche" perllib kommt aus meiner Builddatei weil das natürlich nicht angepasst wurde:
folgende Zeile musste an meinen neuen Gegebenheiten passen
CORE_PATH="/usr/lib/arm-linux-gnueabihf/perl/5.20.2/CORE"
Ein Linkerfehler besagte dann ständig, dass "lperl" nicht gefunden wurde.
nachstellen konnte ich das ganze mit

sudo ld -lperl --verbose
und tatsächlich, es ist ja auch libperl.so.5.20 vorhanden, anstelle libperl.so.
Also kurz einen Link anlegen mit:
sudo ln -s  /usr/lib/arm-linux-gnueabihf/libperl.so.5.20 /usr/lib/arm-linux-gnueabihf/libperl.so


Ok, eine paar Warnungen aber es hat geklappt:
sudo ./can_elster_perl.arm
In file included from elster_perl_wrap.cxx:745:0:
elster_perl_wrap.cxx: In function ‘void boot_elster_perl(PerlInterpreter*, CV*)’:
/usr/lib/arm-linux-gnueabihf/perl/5.20.2/CORE/XSUB.h:164:20: warning: unused variable ‘items’ [-Wunused-variable]
 #define dITEMS I32 items = (I32)(SP - MARK)
                    ^
/usr/lib/arm-linux-gnueabihf/perl/5.20.2/CORE/XSUB.h:172:16: note: in expansion of macro ‘dITEMS’
  dSP; dAXMARK; dITEMS
                ^
elster_perl_wrap.cxx:2505:3: note: in expansion of macro ‘dXSARGS’
   dXSARGS;
   ^
elster_instance.cpp: In function ‘void elster_instance::Undef()’:
elster_instance.cpp:439:12: warning: deleting object of polymorphic class type ‘KCanElster’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]
     delete Can;
            ^
pi@rpi_can:~/can/20170301-can_progs/can_progs $

die beiden Dateien in "/usr/share/perl/5.20" kopieren.

shutdwn restart in fhem mit anschließend reload 50_Elster.pm und  ALLES GUT 8) 8) 8) 8)

nun noch define WP Elster can0
und siehe da ein neues Gerät ist da    ;D ;D ;D ;D

Und nun ????
Ist es bei euch auch so,  dass wenn ihr mit einem Klick auf den "get"-Knopf den Wert einer Variable abfragen wollt der Status auf disconnected umspringt?
Wie kann ich nun die Werte in FHEM mittracen???  Muss ich mich für jeden Wert neu connecten, oder ist in meinem Modul doch noch was faul?????

Readings err QUELLE_IST: value (01d4) not read 2017-03-01 22:20:11
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 02 März 2017, 11:52:16
Hallo Korre,

gratuliere zu Deinem Erfolg. Aber das mit dem Disconnect darf nicht sein. Ich werde es überprüfen.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 05 März 2017, 09:24:39
Hallo Jürg,
Hallo Kollegen,

ich habe mir die Sache nochmals in Ruhe angeschaut.

folgende Punkte:
1.)  beim Neustart des rpi muss ich die Can Schnittstelle konfigurieren und "up" bringen. (dazu habe ich nun ein kleines Script in der crontab @reboot)
          -Ist das auch bei euch so, bzw. ist das die normale Vorgehensweise?

2.) Elster zeigte sporadisch "disconnect" obwohl ich trotz disconnect Status Werte manuell (get Knopf) lesen kann.
          - bei Abfrage der gleichen Variablen (Readings)  hintereinander entstand das disconnect.
          - im Moment geht jedoch alles wie erwartet ( ein Abfragen der gleichen Variable im Sekundentakt funktioniert und connect bleibt erhalten).
          - hatte jemand ähnliches Verhalten?

3.) Werte aufzeichnen und in Logfile schreiben.
          - wird wohl am besten über ein notify oder at als "pull" -Abfrage umzusetzen sein?
          - Sollen dann alle gewünschten IDs (Readings) in einem notify seriell abgefragt werden?
          - schreibt ihr dann alle Readings in ein Logfile?
          - Wie habt ihr das gelöst?

Vielen Dank.



Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 05 März 2017, 13:48:38
Hallo Korre,

ich habe unter Windows mit einer Simulation das Modul 50_Elster getestet und Korrekturen vorgenommen. In "can_progs_20170305_test.zip" sind die Dateien dazu. Wenn Du mit dieser Version immer noch den "Disconnect" hast, werde ich es auch auf dem Raspi testen.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 06 März 2017, 16:34:33
Ich habe es mit dem Raspi getestet. Den Disconnect konnte ich mit der WP-Simulation (stiebel_simul) nicht feststellen.

stiebel_simul <==> CAN-Bus <= Raspi => fhem (50_Elster.pm)

Kleine Korrektur in can_progs_20170306_test.zip.

 
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: korreander12 am 06 März 2017, 21:02:05
Hallo Jürg,

anbei screenshots zu dem derzeitigen Verhalten.
Heute habe ich erst festgestellt, dass bei einem fhem Befehl bei der Eingabe in das Eingabefeld oben
zB  "get WP AUSSENTEMP" ein Popup Fenster erscheint. Das Modul möchte eigentlich was sagen  ......   aber Text fehlt.
Auch zu erkennen auf den Screenshots sind  Internals STATE "disconnected".

Muss ich nun nur die 50_ELSTER.PM Datei ersetzten oder alles bauen ???

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 07 März 2017, 06:39:44
Hallo Korre,

das Popup Fenster erhalte ich auch, allerdings bleibt es Connected. Mit einer falschen Anforderung z.B.

get WP aa

erscheint dasselbe Fenster, aber jetzt mit Inhalt. Bei

set WP MONAT 3

funktioniert es. Und bei

set WP MM 3

kommt eine andere Liste, als beim "get". Die Reihenfolge in den Listen verstehe ich nicht.

Die 50_Elster.pm bleibt unverändert. Ersetzen solltest Du elster_perl.so und elster_perl_pm.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 23 Juni 2017, 10:07:27
Erstmal hut ab, was für ein "hirnschmalz" und Aufwand da inzwischen in die CANBUS Kromschröder Abfrage gesteckt wurde!

Ich mache mich nach langer Zeit mal wieder an die Canbus Steuerung meiner WPL13 mit dem WPM2.
Canbus Raspi Interface mit Abschlusswiderstand + FEK Fernbedienung vorhanden.

Kurze Frage, da ich seit kurzem eine Photovoltaikanlage habe.

Ich möchte:
- die Kühlung -sofern genügend PV Strom vorhanden ist- ein und ausschalten können.
 (Kuehlung EIN, Flaeche EIN)
- die WW Bereitung einschalten wenn genügend PV Strom vorhanden ist

(Die Logik mit der PV Strom Prüfung habe ich anderweitig bereits (IP-Symcon Modbus))

Ich habe parallel noch einen Windows 7 Mini PC im Heizraum.

Wie komme ich am einfachsten an diese Anforderung?

- Auf dem Windows PC die Kromschröder Software (liegt mir vor) installieren
- RASPI Canbus Interface über einen Virtuellen Comport mounten
- CSBRUECKE.EXE starten
- Kromschröder Comfortsoft starten und Änderung vornehmen
Die gemachten Änderungen werden angezeigt/mitgeschnitten?

Das könnte ich dann für die normale Ansteuerung direkt über RASPI verwenden?

P.S.
Ich denke das müsste lt. ElsterTable.inc hier zu suchen sein:
{ "KUEHLMODE"                                     , 0x0287, 0}, Wahrscheinlich Kühlung AUS/EIN
{ "FLAECHENKUEHLUNG"                        , 0x025f, 0}, Wahrscheinlich FBH Kühlung AUS/EIN
{ "KUEHL_FREIGABE_TEMPERATUR"        , 0x03dd, 0}, Wahrscheinlich gewünschte Raumptemperatur

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 24 Juni 2017, 20:32:35
anbei ein 24h log... nicht am datum/Uhrzeit stören... der raspi war noch unkonfiguriert...
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 25 Juni 2017, 09:49:33
Hallo Mastermind,

ich schlagen dir vor, alle Anforderungen auf dem Windows-PC zu realisieren. Beim WW kann man die Solltemperatur entsprechend anpassen. Dabei sollte man beachten, dass nicht allzu oft geändert wird, da die Solltemp. vermutlich in einem Flash-Speicher hinterlegt wird!

Wie für Perl, gibt es auch für PHP (IP-Symcon) die Möglichkeit, einen "SWIG-Wrapper" zu bilden. Ich habe dies gemacht. Leider kann ich den Wrapper nicht für Windows generieren. Dazu benötigt man Visual-Studio, das ich nicht besitze. Aber für den MAC funktioniert der Wrapper. Hast du Visual-Studio?

Wenn ich zu deinen simulierten Daten mit ComfortSoft die Kühlung einschalte, dann entspricht das den Kommandos:

./can_scan can0 680 180.0613.0002           LUEFT_STUFE_HAND = 2
./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1

Kommandos beim Abschalten:

./can_scan can0 680 180.0613.0000
./can_scan can0 680 180.0287.8000

Viele Grüsse
Jürg

P.S.: Der Anhang wurde aus deinem totalscan1 generiert und kann in 50_Elster.pm eingesetzt werden.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 29 Juni 2017, 22:51:59
Hallo Mastermind,

ich schlagen dir vor, alle Anforderungen auf dem Windows-PC zu realisieren. Beim WW kann man die Solltemperatur entsprechend anpassen. Dabei sollte man beachten, dass nicht allzu oft geändert wird, da die Solltemp. vermutlich in einem Flash-Speicher hinterlegt wird!

Wie für Perl, gibt es auch für PHP (IP-Symcon) die Möglichkeit, einen "SWIG-Wrapper" zu bilden. Ich habe dies gemacht. Leider kann ich den Wrapper nicht für Windows generieren. Dazu benötigt man Visual-Studio, das ich nicht besitze. Aber für den MAC funktioniert der Wrapper. Hast du Visual-Studio?

Wenn ich zu deinen simulierten Daten mit ComfortSoft die Kühlung einschalte, dann entspricht das den Kommandos:

./can_scan can0 680 180.0613.0002           LUEFT_STUFE_HAND = 2
./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1

Kommandos beim Abschalten:

./can_scan can0 680 180.0613.0000
./can_scan can0 680 180.0287.8000

Viele Grüsse
Jürg

P.S.: Der Anhang wurde aus deinem totalscan1 generiert und kann in 50_Elster.pm eingesetzt werden.
Danke für die Info.

Sorry für die späte Antwort. Hab keine Benachrichtigung erhalten...

Ich habe zusätzlich einen Mini PC 24*7 mit win 10. Dann muss ich mir noch anschauen, wie ich das canbus Modul vom Raspberry virtuell in das Windows einbinden kann, damit die kromschröder(stiebel) Software zufrieden ist.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 06 Juli 2017, 22:18:43
Hallo Mastermind,

ich schlagen dir vor, alle Anforderungen auf dem Windows-PC zu realisieren. Beim WW kann man die Solltemperatur entsprechend anpassen. Dabei sollte man beachten, dass nicht allzu oft geändert wird, da die Solltemp. vermutlich in einem Flash-Speicher hinterlegt wird!

Wie für Perl, gibt es auch für PHP (IP-Symcon) die Möglichkeit, einen "SWIG-Wrapper" zu bilden. Ich habe dies gemacht. Leider kann ich den Wrapper nicht für Windows generieren. Dazu benötigt man Visual-Studio, das ich nicht besitze. Aber für den MAC funktioniert der Wrapper. Hast du Visual-Studio?

Wenn ich zu deinen simulierten Daten mit ComfortSoft die Kühlung einschalte, dann entspricht das den Kommandos:

./can_scan can0 680 180.0613.0002           LUEFT_STUFE_HAND = 2
./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1

Kommandos beim Abschalten:

./can_scan can0 680 180.0613.0000
./can_scan can0 680 180.0287.8000

Viele Grüsse
Jürg

P.S.: Der Anhang wurde aus deinem totalscan1 generiert und kann in 50_Elster.pm eingesetzt werden.


danke nochmals.
Zur Aktivierung der kühlung wird zusätzlich noch die Info gesetzt über welches Medium gekühlt werden kann.
Beim mir Fussbodenheizung (=FLAECHE EIN)

So lässt sich die Kühlung mit FBH bei mir aktivieren:

sudo ./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1
sudo ./can_scan can0 680 180.0613.0002           LUEFT_STUFE_HAND = 2
???????sudo ./can_scan can0 680 180.025f.0100            FLAECHE EIN (256) ??????

FLAECHE EIN bereitet mir noch Probleme. wenn ich dies über den WPManager händisch mache, ist später per abfrage:
./can_scan can0 680 180.025f
Ergebnis:
0100 (256)

wie kann ich den wert per can_scan setzen? es kommt "VALUE NOT SET"

Die Reihenfolge der Kommandos habe ich auch noch gedreht, da man am WPM2 selbst auch erst die KUEHLUNG auf ein schalten muss, und dann die Parameter definiert.

Die Temperatur fürs kühlen definiert man dann bei bedarf
680 180.0261.xxxx  Kuehl Solltemperatur
xxxx (22 Grad = 00dc / 21 Grad = 00d2 / 20 Grad = 00c8)

hilft vielleicht manch anderem

Ich möchte die Kuehlung einschalten per Schalter in meiner Heimautomation - wenn genug PV Strom vom Dach kommt - :-)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 08 Juli 2017, 14:36:44
Hallo Mastermind,

hat ComfortSoft mit dem Setzen von "Fläche ein" auch Probleme?

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Radiator am 10 August 2017, 11:40:03
Lang nicht mehr reingeschaut...
... zu dem Post https://forum.fhem.de/index.php/topic,42248.msg593543.html#msg593543 habe ich dieselbe Beobachtung. Anscheinend sind die Buffer des USBTin zu klein. Immer wenn ich Daten schnell hintereinander abgefordert hatte, waren einige Antworten "verschwunden". Ab ca. 5 schnell hintereinander gesendeten Befehlen verschwanden Antworten. Einzelabfragen gingen immer einwandfrei. Ob das am Sende, oder Empfangsbuffer liegt - keine Ahnung. Ich habe daher in meinem Modul einen zusätzlichen Sendebuffer eingebaut. Seitdem funktioniert der USBTin wunderbar. Zusätzlich habe ich eine Bandbreitenbegrenzung realisiert, so daß ich nie mehr als 20% der CAN Buskapazität der Wärmepumpe benutze, ich will ja nicht den Bus blockieren und eine Störung in der Wärmepumpe verursachen. Seitdem habe ich keine verlorenen Werte mehr.

Zusätzlich habe ich die Register des USBTin so programmiert, dass nur Antworten direkt an mich durchgereicht werden. Das senkt die Rechnelast für fhem.
Letzte Version : https://forum.fhem.de/index.php/topic,35614.msg450042.html#msg450042

Gruß
Hartmut
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 29 August 2017, 08:36:49
Das mit dem "Puffer" konnte ich mit meinem Canberry ebenfalls feststellen...

ich schalte ja bisher nur die Kühlung ein/aus.

Ich mach in meiner Bash Routine einfach ne kurze Pause zwischen den Befehlen rein...

Und was mein Problem angeht zum einschalten der Kühlung...
So funktioniert das Aktivieren der Kühlung:
------------------------------------------------------------------
sudo ./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1
sudo ./can_scan can0 680 180.0613.0002           LUEFT_STUFE_HAND = 2
sudo ./can_scan can0 680 180.025f.0100            FLAECHE EIN
sudo ./can_scan can0 680 180.0287.0001           KUEHL_MODE = 1
----------------------------------------------------------------
Ich setze Kühlung ein einfach zweimal, dann passts....

Kühlung aus:
./can_scan can0 680 180.0613.0000
./can_scan can0 680 180.0287.8000
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 28 September 2017, 10:10:44
Ich bin derzeit dran mein IP-SYMCON mit Canbus Daten zu füttern (ich hoffe das darf man hier schreiben)  ;D

Laut ElsterTable.inc gibt es ja die Wärmesummenmessung der WPM Steuerung (am Display des WPMW2 kann man die erzeugte Wärme für WW und Heizung ablesen).
Nun möchte ich das per Canbus machen.
Leider kommt bei allen Wärmesummenwerten

Value: 8000 (...... not available)

Hier laut Liste:

{ "WAERMEERTRAG_WW_TAG_WH"                           , 0x092a, 0},
{ "WAERMEERTRAG_WW_TAG_KWH"                          , 0x092b, et_double_val},
{ "WAERMEERTRAG_WW_SUM_KWH"                          , 0x092c, 0},
{ "WAERMEERTRAG_WW_SUM_MWH"                          , 0x092d, et_double_val},
{ "WAERMEERTRAG_HEIZ_TAG_WH"                         , 0x092e, 0},
{ "WAERMEERTRAG_HEIZ_TAG_KWH"                        , 0x092f, et_double_val},
{ "WAERMEERTRAG_HEIZ_SUM_KWH"                        , 0x0930, 0},
{ "WAERMEERTRAG_HEIZ_SUM_MWH"                        , 0x0931,}


Abruf ganz einfach per
./can_scan can0 680 180.0930./can_scan can0 680 180.0931./can_scan can0 680 180.092d
Beim allgemeinen Scan werden die Daten ebenfalls nicht "verarbeitet"
./can_scan can0 680 180

Gibt's das inzwischen? Evtl. ist meine can_scan Bibliothek auf meinem Raspi ja veraltet?
.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 29 September 2017, 15:56:45
Ich bin derzeit dran mein IP-SYMCON mit Canbus Daten zu füttern (ich hoffe das darf man hier schreiben)  ;D

Laut ElsterTable.inc gibt es ja die Wärmesummenmessung der WPM Steuerung (am Display des WPMW2 kann man die erzeugte Wärme für WW und Heizung ablesen).
Nun möchte ich das per Canbus machen.
Leider kommt bei allen Wärmesummenwerten

Value: 8000 (...... not available)

Hier laut Liste:

{ "WAERMEERTRAG_WW_TAG_WH"                           , 0x092a, 0},
{ "WAERMEERTRAG_WW_TAG_KWH"                          , 0x092b, et_double_val},
{ "WAERMEERTRAG_WW_SUM_KWH"                          , 0x092c, 0},
{ "WAERMEERTRAG_WW_SUM_MWH"                          , 0x092d, et_double_val},
{ "WAERMEERTRAG_HEIZ_TAG_WH"                         , 0x092e, 0},
{ "WAERMEERTRAG_HEIZ_TAG_KWH"                        , 0x092f, et_double_val},
{ "WAERMEERTRAG_HEIZ_SUM_KWH"                        , 0x0930, 0},
{ "WAERMEERTRAG_HEIZ_SUM_MWH"                        , 0x0931,}


Abruf ganz einfach per
./can_scan can0 680 180.0930./can_scan can0 680 180.0931./can_scan can0 680 180.092d
Beim allgemeinen Scan werden die Daten ebenfalls nicht "verarbeitet"
./can_scan can0 680 180

Gibt's das inzwischen? Evtl. ist meine can_scan Bibliothek auf meinem Raspi ja veraltet?
.
Die neueste Bibliothek von Febr. bringt leider dieselbe Antwort..

Wie kann man eigentlich mitsniffen wenn ich die erzeugte Wärmemenge am wpmw2 Abrufe? Das könnte ich ja evtl. Mitlesen, und daraus die richtige abfrage ableiten?

Gesendet von meinem Redmi Note 2 mit Tapatalk

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 Oktober 2017, 10:49:48
Hallo Mastermind,

"mitsniffen" kannst du, indem du in einer weiteren Bash

./can_logger can0 0

laufen lässt. Die Kommunikation von can_scan wird dir mit dem Zusatz "trace" angezeigt:

./can_scan can0 680 180.092d trace

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 06 Oktober 2017, 07:43:16
Mit dem Trace wird ausgespuckt :-) :
Muss ich zusätzlich mal an sniffer testen, bei der Bedienung am Wärmepumpenmanager....

pi@raspberrypi ~/can_progs_neu $ ./can_scan can0 680 180.0930 trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] 31 00 fa 09 30           1...0
  0  6.10.2017 05:28:34.160       680 00 [5] 31 00 fa 09 30           1...0
  1  6.10.2017 05:28:34.175       180 00 [7] d2 00 fa 09 30 80 00     ....0..

send ComfortSoft: 0d00030100fa0930800801cc   can232: t68053100FA0930
recv ComfortSoft: 03000d0200fa0930800001c5   can232: t1807D200FA09308000

value: 8000  (WAERMEERTRAG_HEIZ_SUM_KWH  not available)


oder
pi@raspberrypi ~/can_progs_neu $ ./can_scan can0 680 180.092d trace
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

     680 00 [5] 31 00 fa 09 2d           1...-
  0  6.10.2017 05:27:41.678       680 00 [5] 31 00 fa 09 2d           1...-
  1  6.10.2017 05:27:41.690       180 00 [7] d2 00 fa 09 2d 80 00     ....-..

send ComfortSoft: 0d00030100fa092d800801c9   can232: t68053100FA092D
recv ComfortSoft: 03000d0200fa092d800001c2   can232: t1807D200FA092D8000

value: 8000  (WAERMEERTRAG_WW_SUM_MWH  not available)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 30 Oktober 2017, 14:51:47
Ich antworte mir mal selbst:-) Vielleicht für andere interessant...

Um die Wärmemenge (meiner Luft-WP SE WPL13 cool) abfrage zu können, muss ich folgende Indixes (über die Canbus ID 500)  abrufen...
Ansonsten rufe ich eigentlich alles über 180 / 301 ab... In anderen Foreneinträgen, wird die WM ebenfalls per 180 abgerufen... Wird bei mir wohl an der Softwareversion liegen...
keine Ahnung...

Nun kann ich endlich vollautomatisch "die schlechte JAZ" ausrechnen... Zumindest der Gang in den Keller kann ich mir sparen :-)



680 500.
und dann:
092b WAERMEERTRAG_WW_TAG_KWH
092f WAERMEERTRAG_HEIZ_TAG_KWH
092d WAERMEERTRAG_WW_SUM_MWH
0931 WAERMEERTRAG_HEIZ_SUM_MWH
0923 WAERMEERTRAG_2WE_WW_TAG_KWH
0925 WAERMEERTRAG_2WE_WW_SUM_MWH
0927 WAERMEERTRAG_2WE_HEIZ_TAG_KWH0016 RUECKLAUFISTTEMP

Also z.B. "can_scan can0 680 500.092b"


Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 05 November 2017, 14:17:12

Die 50_Elster.pm bleibt unverändert. Ersetzen solltest Du elster_perl.so und elster_perl_pm.

Viele Grüsse
Jürg

Hallo Jürg,

erstmal danke für deine Mühe. Ich habe auch ein CAN BUS modul am Raspberry und nun mit Hilfe der Hinweise von Knorre das Elster device im FHEM zum Laufen gebracht. Leider habe ich auch diesen disconnect state wie Knorre.
Ich habe die letzte http://juerg5524.ch/data/can_progs_20170715_test.zip heruntergeladen und die beiden Datei ausgetauscht. Leider bekomme ich nun gar keine Werte mehr in FHEM angezeigt. Nur ???? bei get AUSSENTEMPERATUR.

Wenn ich die Dateien aus dieser Version verwende http://juerg5524.ch/data/can_progs_20170125.zip
muss ich die beiden
elster_perl.so
elster_perl.pm
zwar nach der Anleitung von Knorre erneut übersetzen, aber ich sehe Werte im FHEM und kann auch Werte in der WPL 13 ändern. Scheinbar hast du bei den letzten Änderungen etwas verstellt.

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 06 November 2017, 14:07:30
Hallo Frank,

ich habe die Zwischenversion can_progs_20170305_test.zip auf juerg5524.ch gestellt. Wäre es dir vielleicht möglich zu prüfen, ob diese Version bereits fehlerhaft ist? Ich wäre dir dankbar.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 10 November 2017, 08:15:45
Hallo Frank,

ich habe die Zwischenversion can_progs_20170305_test.zip auf juerg5524.ch gestellt. Wäre es dir vielleicht möglich zu prüfen, ob diese Version bereits fehlerhaft ist? Ich wäre dir dankbar.

Viele Grüsse
Jürg

Hallo Jürg,

ich hatte erst jetzt Zeit das auszutesten. Leider funktioniert diese Version can_progs_20170305_test.zip auch nicht. Ich habe Jessie auf dem Raspberry laufen mit Perl 5.20.2 und musste die can_elster_perl.arm etwas anpassen.

swig -perl5 -module elster_perl -c++ elster_perl.i

#CORE_PATH="/usr/lib/perl/5.14/CORE"
[color=red]CORE_PATH="/usr/lib/arm-linux-gnueabihf/perl/5.20.2/CORE"
[/color]

${CROSS_COMPILE}g++ -shared -Wall -D__LINUX__ -D__ARM__ -D__CONSOLE__ -D__CAN__ -DSWIG -I${CORE_PATH} \
  -lc -lpthread -ldl -lperl \
  elster_perl.cpp elster_perl_wrap.cxx elster_instance.cpp \
  KIpSocket.cpp KThread.cpp KCriticalSection.cpp KCanDriver.cpp KComm.cpp KRPiCanDriver.cpp \
  KCanCommDriver.cpp KCanServer.cpp KStream.cpp NUtils.cpp NCanUtils.cpp KElsterTable.cpp KScanTable.cpp KCanElster.cpp \
  KCanTcpDriver.cpp KTcpClient.cpp [color=red]KSniffedFrame.cpp[/color] \
  -o elster_perl.so

# sudo cp elster_perl.so /usr/lib/perl/5.14.2
# sudo cp elster_perl.pm /usr/lib/perl/5.14.2
# sudo cp 50_Elster.pm /opt/fhem/FHEM

# sudo /etc/init.d/fhem start


KSniffedFrame.cpp hat in deiner Version gefehlt, sonst startet FHEM nicht.

perl: symbol lookup error: /usr/lib/arm-linux-gnueabihf/perl/5.20/elster_perl.so: undefined symbol: _ZN12KSniffedDataC1Ev

Der disconnect state und die Fragezeichen bei get Aussentemp sind aber auch schon in der März Version.

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 10 November 2017, 13:08:44
Hallo Frank,

danke für deine Tests. Ich werde es genauer anschauen. Das kann allerdings etwas dauern.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 27 November 2017, 15:51:24
Eine Frage in die Runde, hat sich schon jemand an das Auslesen und interpretieren des aktuellen Betriebsstatus gemacht?
Ich hab dazu per scan auf 680 180 folgende Dinge gefunden die auf "STATUS" schliessen lassen..

0059  -> Heizkreisstatus
0176  -> Betriebsstatus
01d2  -> Pumpenstatus
fdad   -> WP Pumpenstatus
005a  -> Speicherstatus
0063 -> Kesselstatus

Wenn die WP läuft und meiner Meinung nach WW macht, dann steht bei 680 180.0176 Betriebsstatus (65) drin.

Hat jemand eine Deutung der Statusangaben?

Interessieren würde mich:
- heizen
- Warmwasser
- Abtauen
- nur Heizkreispumpe


Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 23 Dezember 2017, 15:44:28
Hallo,

ich versuche mich derzeit an der Einbindung meiner SE WPC 7cool (mit WPM3) in FHEM auf meinem Rispberry. Vielen Dank erstmal für euer Engagement und Eure umfangreichen Vorleistungen zu diesem Thema.

Ich habe PiCan-Schaltung mit galvanischer Trennung von Jürg nachgebaut, angeschlossen und nach der PiCan-Anleitung ins Linux eingebunden.
Übrigens in Jürg's Schaltbild PiCan.sch hat sich der Fehlerteufel eingeschlichen. Der Widerstand R8 darf nicht an Pin 5 des MCP2551 sondern muss an Pin 8. Danach hat es auch bei mir geklappt.

Dein „can_scan“ funktioniert soweit einwandfrei und ich bekomme Daten zurück. Die „50_Elster.pm“ habe ich entsprechend angepasst und die „elster_perl.pm“ und „elster_perl.so“ neu kompiliert und in das Verzeichnis (bei mir) „/usr/lib/arm-linux-gnueabihf/perl/5.24/“ kopiert.
Nach dem Define-Befehl in FHEM hab ich jetzt die selben Probleme mit disconnect. Bekomme aber mit jedem get-Befehl aktuellere Werte gelesen.

Wie habt Ihr das jetzt mit dem Bufferüberlauf bzw. Begrenzung der Buslast gelöst, und wie bekomme ich die Werte bei Veränderung auf eine Variable geschrieben, damit ich Sie an meine SPS weiterleiten kann.

Ich bin sowohl Linux- als aus FHEM-Anfänger

Danke schon mal und viele Grüße.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 02 Januar 2018, 23:27:15
Mein Industrialcanberry Interface  (auf meinem Raspi Pi Model B) funktioniert nicht mehr (LED leuchtet nicht mehr.. - defekt)...

Kurze Frage: Welche Canbus Interfaces kann man mit einem Raspi Pi Modell B empfehlen?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 12 Januar 2018, 16:20:03
Hallo Jürg,

ich hab deine 50_Elster.pm so halbwegs erfolgreich bei mir eingebunden. Allerdings läuft die Geschichte noch etwas instabil. Ich habe auch den Eindruck das die Buslast, bzw Rechenkapazität ziemlich ausgelastet wird. Die Werte werden nicht automatisch aktualisiert. Immer wenn ich jedoch den "get" befehl für einen Wert ausführe, werden gleich mehrere Werte (aber immer andere) aktualisiert. Mein Hauptproblem allerdings ist derzeit die Logdatei. Diese wird bei jedem "get" Befehl mir u.g. Daten zugemüllt, obwohl scheinbar ja nur ein Wert abgefragt wird . Selbst mit "Verbose=0" kann ich das Loggen nicht verhindern.  Da ich den "get" Befehl aller Minute zur Aktualisierung ausführen will, wird meine LOG-Datei rießig und gut für de SD-Card ist das sicher auch nicht.

Kannst du mir helfen, wie ich erstmal das mitloggen deaktivieren oder eingrenzen kann, und wo ich evt. das Zeitinterval für die autom. Aktualisierung einstellen kann.

Außerdem liest er nicht immer korrekte Werte ein. Beim "SAMMEL_RELAISSTATUS" liest er manchmal eine Dezimalzahl "4.1" oder "44.1" aus und manchmal wie benötigt eine ganze Zahl "364".

Wäre schön wenn du mir dabei helfen kannst.

Danke Markus.

Hier ein kurzer Ausschnitt des Logging:
1345900  13.1.2018 10:39:36.927       180 00 [7] 60 79 5a 02 00 00 00     `yZ....
1345903  13.1.2018 10:39:36.953       180 00 [7] 60 79 fa 0a 20 00 00     `y.. ..
1345935  13.1.2018 10:39:38.819       180 00 [7] 22 00 0c 00 0e 00 00     "......
1345964  13.1.2018 10:39:40.731       180 00 [7] d2 00 fa 01 01 00 00     .......
1345969  13.1.2018 10:39:40.862       180 00 [7] d2 00 fa 02 7e 00 00     ....~..
1345996  13.1.2018 10:39:41.948       180 00 [7] 22 00 0e 01 dd 00 00     "......
1346003  13.1.2018 10:39:42.559       180 00 [7] 22 00 16 01 13 00 00     "......
     680 00 [5] 31 00 fa 0a 20           1...
1346056  13.1.2018 10:39:46.302       680 00 [5] 31 00 fa 0a 20           1...
1346057  13.1.2018 10:39:46.312       680 00 [7] 61 02 fa 14 61 00 00     a...a..
get sniffed: 180 000e 47.7
get sniffed: 180 07fc 0.472
get sniffed: 180 0802 73
get sniffed: 180 000c 1.4
get sniffed: 180 0016 27.5
get sniffed: 180 01d4 18.1
get sniffed: 180 0a20 0
1346058  13.1.2018 10:39:46.320       180 00 [7] d2 00 fa 0a 20 00 00     .... ..
1346120  13.1.2018 10:39:49.385       180 00 [7] 22 00 0c 00 0e 00 00     "......
1346170  13.1.2018 10:39:51.918       180 00 [7] 22 00 0e 01 dd 00 00     "......
1346192  13.1.2018 10:39:53.114       180 00 [7] 22 00 16 01 13 00 00     "......
     680 00 [5] 31 00 fa 00 0c           1....
1346217  13.1.2018 10:39:54.557       680 00 [5] 31 00 fa 00 0c           1....
1346218  13.1.2018 10:39:54.572       180 00 [7] d2 00 fa 00 0c 00 0e     .......
1346323  13.1.2018 10:39:59.939       180 00 [7] 22 00 0c 00 0e 00 00     "......
     680 00 [5] 31 00 fa 0a 20           1...
1346352  13.1.2018 10:40:01.620       680 00 [5] 31 00 fa 0a 20           1...
1346353  13.1.2018 10:40:01.635       180 00 [7] d2 00 fa 0a 20 00 00     .... ..
1346371  13.1.2018 10:40:01.911       180 00 [7] 22 00 0e 01 dd 00 00     "......
1346393  13.1.2018 10:40:03.040       180 00 [7] 22 00 16 01 13 00 00     "......
1346411  13.1.2018 10:40:03.832       180 00 [7] 60 79 0c 00 0e 00 00     `y.....
1346412  13.1.2018 10:40:03.838       180 00 [7] 60 79 16 01 13 00 00     `y.....
1346413  13.1.2018 10:40:03.846       180 00 [7] 60 79 0e 01 dd 00 00     `y.....
1346415  13.1.2018 10:40:03.864       180 00 [7] 60 79 53 00 00 00 00     `yS....
1346417  13.1.2018 10:40:03.879       180 00 [7] 60 79 5a 02 00 00 00     `yZ....
1346420  13.1.2018 10:40:03.905       180 00 [7] 60 79 fa 0a 20 00 00     `y.. ..
     680 00 [5] 31 00 fa 0a 20           1...
1346439  13.1.2018 10:40:05.044       180 00 [7] d2 00 fa 0b 76 00 00     ....v..
1346440  13.1.2018 10:40:05.060       680 00 [5] 31 00 fa 0a 20           1...
1346441  13.1.2018 10:40:05.078       180 00 [7] d2 00 fa 0a 20 00 00     .... ..
     680 00 [5] 31 00 fa 0a 20           1...
1346523  13.1.2018 10:40:09.609       680 00 [5] 31 00 fa 0a 20           1...
1346524  13.1.2018 10:40:09.624       180 00 [7] d2 00 fa 0a 20 00 00     .... ..
1346530  13.1.2018 10:40:09.890       180 00 [7] 22 00 0c 00 0d 00 00     "......
1346581  13.1.2018 10:40:12.353       180 00 [7] 22 00 0e 01 dd 00 00     "......
1346592  13.1.2018 10:40:12.976       180 00 [7] 22 00 16 01 13 00
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 14 Januar 2018, 14:08:52
Hallo Markus

Ich habe einige Fehler korrigiert, getestet habe ich nur in einem Simulationsaufbau (can_progs_20180114.zip). Bitte nimm auch das neue 50_Elster.pm aus dem Verzeichnis fhem.

Setze in 50_Elster.pm (Zeile 73) "my $trace_all = 0;".

Die Zeile 523 mit "elster_perl::toggle_trace();" solltest du löschen.

Ich bin gespannt, ob damit deine Fehler verschwinden.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 15 Januar 2018, 10:14:14
Hallo Jürg,

danke erstmal für die schnelle Antwort. Hab die neuen Dateien eingespielt und siehe da, die Loggerei hat ein Ende. Prima  ;D
Eine automatische Aktualisierung erfolgt immer noch nicht, ist das OK so?

Wofür ist eigentlich "elster_perl::toggle_trace();" da?

Mir ist aufgefallen das anstelle der Errors beim auslesen jetzt "?" angezeigt werden. Das kann ich sicher programmtechnisch noch rausfiltern (bei ungültigen Empfang das Reading max. 5 mal wiederholen). Aber ist das normal, das die Fehllesung so häufig kommt? Hat jemand auch die Probleme? Ich hab dir mal mein Log angehängt.

2018.01.15 17:29:51 3: getstring(680 180 000c): 3.4
2018.01.15 17:30:26 3: getstring(680 180 0a20): ?
2018.01.15 17:30:36 3: getstring(680 180 0a20): ?
2018.01.15 17:30:41 3: getstring(680 180 0a20): ?
2018.01.15 17:30:43 3: getstring(680 180 0a20): ?
2018.01.15 17:30:44 3: getstring(680 180 0a20): 348
2018.01.15 17:33:07 3: getstring(680 480 fdac): ?
2018.01.15 17:33:12 3: getstring(680 480 fdac): ?
2018.01.15 17:33:14 3: getstring(680 480 fdac): 0
2018.01.15 17:33:26 3: getstring(680 480 0921): 0.732
2018.01.15 17:33:32 3: getstring(680 180 091d): 0.929
2018.01.15 17:33:35 3: getstring(680 180 0101): 0
2018.01.15 17:33:38 3: getstring(680 180 000c): 3.2
2018.01.15 17:33:42 3: getstring(680 180 0001): ?
2018.01.15 17:33:45 3: getstring(680 180 0001): ?
2018.01.15 17:33:47 3: getstring(680 180 0001): 0
2018.01.15 17:33:57 3: getstring(680 180 0053): ?
2018.01.15 17:34:00 3: getstring(680 180 0053): 256
2018.01.15 17:34:04 3: getstring(680 180 0287): ?
2018.01.15 17:34:08 3: getstring(680 180 0287): ?
2018.01.15 17:34:09 3: getstring(680 180 0287): ?
2018.01.15 17:34:10 3: getstring(680 180 0287): 0
2018.01.15 17:34:16 3: getstring(680 180 0805): ?
2018.01.15 17:34:18 3: getstring(680 180 0805): 0
2018.01.15 17:34:23 3: getstring(680 180 07fc): ?
2018.01.15 17:34:24 3: getstring(680 180 07fc): 0.493
2018.01.15 17:34:34 3: getstring(680 180 0802): ?
2018.01.15 17:34:36 3: getstring(680 180 0802): 75
2018.01.15 17:34:40 3: getstring(680 180 07ff): 0.000
2018.01.15 17:34:48 3: getstring(680 180 0112): Automatik
2018.01.15 17:34:53 3: getstring(680 180 0058): 2
2018.01.15 17:35:00 3: getstring(680 180 01d4): 3.6
2018.01.15 17:35:06 3: getstring(680 180 0016): ?
2018.01.15 17:35:07 3: getstring(680 180 0016): ?
2018.01.15 17:35:10 3: getstring(680 180 0016): ?
2018.01.15 17:35:14 3: getstring(680 180 0016): 26.7
2018.01.15 17:35:19 3: getstring(680 180 0a20): ?
2018.01.15 17:35:25 3: getstring(680 180 0a20): ?
2018.01.15 17:35:27 3: getstring(680 180 0a20): 348
2018.01.15 17:35:31 3: getstring(680 180 000e): ?
2018.01.15 17:35:33 3: getstring(680 180 000e): 45.8
2018.01.15 17:35:37 3: getstring(680 180 005a): 2
2018.01.15 17:35:42 3: getstring(680 180 0931): 3.836
2018.01.15 17:35:47 3: getstring(680 180 092d): 3.187
2018.01.15 17:35:52 3: getstring(680 180 01d6): 50.7
2018.01.15 17:36:04 3: getstring(680 480 fdac): 0
2018.01.15 17:36:08 3: getstring(680 180 027e): off

Danke Gruß Markus
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 16 Januar 2018, 07:33:29
Hallo,

habe festgestellt, das bei "can_scan" ebenfalls mal Werte gelesen werden und dann mal wieder nicht. Nutzt du die selben Proceduren in FHEM wie auch bei "can_scan" oder liegt das vielleicht doch an meiner Hardware?

Gruß Markus
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 26 Januar 2018, 14:38:37
Hallo Jürg,

hab mich wegen der automatischen Aktualisierung nochmal mit der "Elster_Read" beschäftigt. Ich habe das Problem, das diese nicht automatisch aufgerufen wird, wenn was im Emfangsbuffer "gesnifft" wird. Dazu habe ich in der "Elster_Define" unten die beiden Zeilen aktiviert.
 
$hash->{FD} = 8;
$selectlist{"$name.$dev"} = $hash;

ebenfalls habe ich in der "Elster_Undef" die folgenden Zeilen eingefügt.


my $dev = $hash->{DeviceName};
my $name = $hash->{NAME};

delete($selectlist{"$name.$dev"});
delete($hash->{FD});

Die "Elster_Read" wird nach einem RELOAD immer noch nicht ausgeführt. Ich vermute das die Übergabe des "$hash->{FD} = 8;" noch fehlerhabt ist. Laut meinen recherschen müsste dort eigentlich

$hash->{FD}=fileno($port);

angegeben werdn. Wie komme ich nun an die "Schnittstellennummer"? Was muß ich jetzt hier angeben. Ich nutze SocketCan "can0". Kannst du mir hier weiterhelfen?

Dankeschön.
Gruß Markus.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 29 Januar 2018, 17:13:10
Hallo Markus,

ja, can_scan und meine FHEM-Anbindung verwenden dieselben Prozeduren. Es sollte also zuerst mit can_scan zum Laufen gebracht werden. Verwende vielleicht auch eine ältere can_scan Version.

Was die auskommentierten Stellen machen sollten, das weiss ich nicht mehr. Vielleicht kann dir jemand vom Forum weiterhelfen. Ich bin kein guter Perl-Programmierer. Meine Stärken liegen bei Delphi und C++. Das ist auch der Grund, dass ich das "elster_perl"-Modul in C++ zur Verfügung gestellt habe.

"can0" wird in elster_perl geöffnet. can0 ist der Default-Wert. Für can1 müsste man

elster::perl::setdev("can1");

aufrufen. Mit "toggle_trace" wird das Tracing umgeschaltet (ein oder aus).

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: parabacus am 01 Februar 2018, 19:37:28
Mein Industrialcanberry Interface  (auf meinem Raspi Pi Model B) funktioniert nicht mehr (LED leuchtet nicht mehr.. - defekt)...

Kurze Frage: Welche Canbus Interfaces kann man mit einem Raspi Pi Modell B empfehlen?

Hallo in die Runde..!

Ich hatte vor einigen Wochen auch vor ein Projekt mit Raspi 3 und CAN-Interface zu starten, um damit an meine LWZ-504 zu kommen.
Inzwischen habe ich aber dafür eine "elegantere" Lösung gefunden, da die 504 auch USB hat und es dazu das FHEM-Modul THZ gibt.

Kurz gesagt - ich hab zwei USB-Interface-Module übrig, die wahrscheinlich nur in der Schublade verschwinden würden.
Anzubieten hätte ich ein PiCAN 2-Modul passend für den Raspi und ein USBtin-Interface von Fischl.
Beide habe ich kurz vor Weihnachten 2017 bestellt und bekommen und sind daher praktisch neuwertig. Ich hab auf beiden lediglich ein Jumper-Stiftpaar für den Abschlusswiderstand gelötet und beide für wenige Tage zum sniffen betrieben, bevor ich auf die USB-Lösung getroffen bin.

Wenn du Mastermind1 oder jemand anders Interesse daran ha(s)t, einfach schreiben - hier oder per PN. Beim Preis lässt sich sicher reden...  ;)

Ciao..!
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag 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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 26 März 2018, 15:40:57
Hallo Frank,

das mit den Fehlermeldungen habe ich auch, dazu hab ich in der "sub Elster_Get($@)" nach der Zeile
my $res = elster_perl::getstring($Elster_str);

folgenden Code eingetragen

  my $counter = 1;
  while (($res eq '?') && ($counter <= 5)) # max. 5 Versuche falls Auslesen nicht geklappt
  {
select(undef, undef, undef, 1.0); # 1,0 Sekunden warten (Pause)
$res = elster_perl::getstring($Elster_str); # nochmal auslesen
$counter++;
Log3 ($name,4,"getstring($Elster_str): $res, Versuch: $counter");
  }

damit wird bei einem GET-Befehl max. 5mal neu ausgelesen falls eine Fehlauslesung passiert. Zwischendurch wird jeweils 1 sec gewartet, kann noch optimiert werden. Zumindest habe ich jetzt spätestens nach dem 3. Leseversuch meine Daten.

Das mit dem sniffen funktioniert bei mir leider auch nicht. Laut dem Forum sollt es ja noch bis zur Version vom 25.01.2017 funktioniert haben. Diese Version habe ich aber selbst nicht probiert. Keine Ahnung was seit dem geändert wurde.

Wird bei dir die "sub Elster_Read($)" regelmäßig ausgeführt? Bei mir nicht. Ich glaube die ist für das Anstoßen des sniffens notwendig. Ich weiß nicht ob das was mit der Zeile

  require "$attr{global}{modpath}/FHEM/DevIo.pm";

aus der "sub Elster_Initialize($)" und

DevIo_OpenDev( $hash, 0, "Elster_DevInit" );
 

aus der "sub Elster_Define($$)" in Version 25.01.17 zu tun hat, die gab es nähmlich nicht mehr in den jüngeren Versionen.  ???

Gruß Markus.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 30 März 2018, 14:16:50
Hallo Markus

Ich habe das Gerüst von Radiator übernommen. Er griff mittels Perl-Funktionen auf die serielle Schnittstelle zu. Deshalb das

require .... DevIo.pm"

Das wird aber hier nicht benötigt. Ebenso der Aufruf von DevIo_OpenDev.

Ich habe in can_progs_2018014_test.zip einiges korrigiert. Ich wäre deshalb froh, wenn ihr mir zu dieser Version Rückmeldungen geben könntet.

Danke und viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 02 April 2018, 08:51:07
Hallo Jürg,

danke für die Rückmeldung, wie bereits oben beschrieben funktioniert die Version vom 14.01.2018 recht stabil auf meinem Rispberry. Ich nutze sie derzeit aber nur zum Auslesen von ca. 12 Werten, also in einer "abgespeckten" Version.
- Die GET-Funktion läuft mit meinen oben beschriebenen Ergänzungen (nochmaliges lesen bei fehlerhaften Werten) gut und ich erhalte somit immer meine geswünschten Werte.
- Die SET-Funktion habe ich momentan noch nicht im Einsatz und somit auch nicht getestet.
- Die Sniffer-Funktion läuft garnicht. Wäre aber eine tolle Option um nicht alle Werte mit GET abzufragen.

Die Funktionen "Elster_Ready" und "Elster_Read", die meines erachtens für die Snifferei zuständig sind werden bei mir nicht aufgerufen. Warum auch immer???

Wenn du noch andere Angaben benötigtst, dann melde dich einfach.

Gruß Markus
und schöne Restostern.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 April 2018, 15:34:25
Hallo Markus

Danke für deine Rückmeldung. Ein getstring setzt bis zu dreimal eine Anfrage ab. Dieser Wert ist in KCanElster.h mit count = 3 vorgegeben:

bool Send(unsigned count = 3, bool WaitForAnswer = true, int inner_delay = 50);

Diesen Wert könnte man auch auf 10 oder 15 erhöhen. Das müsste dann zum selben Resultat führen.

Ich bin daran, die Sniffer-Funktion zu testen und zu korrigieren.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 05 April 2018, 15:53:03
Hallo

Mit can_progs_20180405_test.zip funktioniert das "Sniffen" wieder. Ich habe es in einer MAC-Simulation ausgetestet.

Für das Anstossen von Elster_Ready und Elster_Read ist

$readyfnlist{"$name.$dev"} = $hash;

zuständig. "DevIo_OpenDev" macht das vorher, obwohl die Prozedur mit einem Fehler endete.

Viel Vergnügen
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: mmeine am 05 April 2018, 19:44:16
Danke Jürg,

ich werde es bei Gelegenheit testen, hab aber im Moment viel um die Ohren, kann also etwas dauern.

Gruß Markus
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 03 Mai 2018, 18:52:30
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 21 August 2018, 16:01:07
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?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: stoeff99 am 22 August 2018, 21:06:32
@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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag 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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Mastermind1 am 28 Oktober 2018, 08:11:07
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.

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 28 Oktober 2018, 10:42:27
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?



Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 03 November 2018, 00:56:10
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 03 November 2018, 15:38:14
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 03 November 2018, 16:35:46
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)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 04 November 2018, 15:00:42
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 06 November 2018, 23:06:01
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

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 10 November 2018, 16:19:50
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 18 November 2018, 18:05:36
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
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 03 Januar 2019, 13:53:58
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?
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 04 Januar 2019, 12:32:07
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 :)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: jodamm am 09 Januar 2019, 21:34:28
Hallo, ich habe es endlich auch mal geschafft meine LWZ504 anzuschließen. Das Modul hat nicht gleich mit der LWZ504 zusammen funktioniert, doch davon gibt es in einem späteren Post mehr, wenn ich alles fertig eingerichtet habe. Bei der Inbetriebnahme sind mir zwei Fehler in den Programmen aufgefallen. Die CAN Send Routine hat nicht auf die Antwort gewartet wenn sich ein anderes Telegram dazwischen gemogelt hat. Mir haben bei meinen Scans Werte gefehlt und das hat dann wohl zu den nicht erfoglreichen Gets geführt die hier im Thread erwähnt werden. Und im Elster Modul für fhem hat das Sniffen nicht funktioniert. Anbei sind die gefixten Programmdateien für die can_progs vom 20.05.18.
Der Fix für das Sniffen ist in den Zeilen 667 und 668 von 50_Elster.pm
        if (hex($el->{ID}) == hex($recv_id) &&
            hex($el->{EIdx}) == hex($elster_idx))
In der 50_Elster.pm habe ich auch noch den Befehl in Zeile 529 auskommentiert (siehe Beitrag zuvor).

Für den Fix für die verlorenen Antworttelegramme wurden die folgenden Zeilen nach Zeile 171 in die KCanElster.cpp eingefügt.
            else
              continue;
Der Bereich sieht dann so aus:
              Ok = true;
          #if !defined(__UVR__)
            if (Ok)           
              SniffedData.ClearSniffedValue(RecvFrame);
            else
              continue;
          #endif
            return Ok;

Für den Fix mit den verlorenen Telegrammen muss man dann die elster_perl lib neu kompilieren mit ./elster_perl.arm und dann die elster_perl.so in das passende Verzeichnis kopieren.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 12 Januar 2019, 14:19:27
Hallo jodamm

Vielen herzlichen Dank, deine Fehler-Korrektur in KCanElster.cpp ist für die Stabilität von grosser Bedeutung! Das mit dem Sniffen werde ich bei Gelegenheit anschauen.

Viele Grüsse
Jürg

P.S.: KCanElster.cpp ist in can_prog.zip korrigiert.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Phil_E am 15 Januar 2019, 12:52:06
Hallo

Stiebel hat nun zum 3. mal bei mir einen der beiden Kompressoren ausgetauscht (min. 3 Monate insgesamt mit Strom geheizt) und ich zweifle sehr, dass dies der letzte war.
Dieser Zweifel brachte mich zu diesem Forum, da ich meine WP überwachen und loggen möchte (die startet ja nach einem Fehler gleich wieder.)
Der Servicemonteur sagte mir bei Fragen mit Vernetzung, dass ein Freak aus der Schweiz die WP von Stiebel schon länger loggt..wird wohl Jürg sein  ;)

Ich möchte allen und vor allem Jürg danken für ihren Beitrag, der mir vielleicht hilft, dass meine Stromkosten nicht weiter explodieren und ich jetzt ein neues Hobby habe  ;) (Haus automatisieren)

Ich warte leider immer noch auf die CAN-Schnittstelle und werde danach meine Erfahrung mit euren Anleitungen und Software berichten.

CANBus
Ich werde beide Augen zudrücken und wie choetzu eine Stichleitung legen...bei dieser Baud. sollte es ja mit der Kabellänge keine Probleme geben.

Ist es richtig, dass hier noch niemand die Fehlermeldungen geloggt hat?

Nochmals vielen Dank und Grüsse...auch aus Schwiizerland(TG)

Philipp
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Phil_E am 16 Januar 2019, 17:56:14
Hallo nochmals

Ich habe mit RaPi FHEM, Perl und Python praktisch noch keine Erfahrung aber dank euren Posts kriege ich nun schon mal die Aussentemperatur rein, 8)
danach funktioniert die Struktur leider nicht mehr.
Vielen Dank nochmals!

Ich habe eine WPL33HT mit WPM 2.1, die eine andere Struktur hat als das Tabellenfile von Jürg.

Ich konnte im Netz die Comfortsoft nirgends finden, da der Link nicht mehr gültig ist.

Könnte mir jemand das Scanfile im Anhang bearbeiten, damit ich es in die ElsterTable einbinden kann oder weiss jemand wo ich die Software kriegen kann?
merci

Grüsse Philipp

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 17 Januar 2019, 17:05:35
Hallo Philipp

Die Datei für deine WP findest du im Anhang.

Viel Spass
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 17 Januar 2019, 21:21:54
Hallo Jürg,

Darf ich fragen wie du Fehler detektierst und anzeigst?

Danke und Gruß,
Gerrit

Edit: sorry Auto Korrektur
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Phil_E am 18 Januar 2019, 19:22:32
Hallo Jürg
Vielen herzlichen Dank für deine Bemühungen..ich habe die Änderungen in 50_Elster übernommen und habe gesehen, dass eigentlich nur die WPM-Adresse bei mir 300 ist.
Muss aber erstmal den RasPi neu aufsetzen, da der nicht mehr startet. :-\
Bin öfters Gesch. in Wohlen und müsste dir eigendlich min. eine Flasche Wein mal in den Briefkasten stellen ;)

Allerdings hat meine WP 2 FUs/ 2 Komp. und für meine Diagnose brauche ich unbedingt noch zusätzliche Daten der IWS.(siehe PDF)

Infos Temperaturen:
Am meisten interessiert mich die SauggastempHD, aber auch die anderen Daten wie Ströme, Drehzahl und Wärmemenge wären interessant.
Ich nehme an, das IWS ist Adresse 500 oder? Wie komme ich nun zu den Indizies?
Geht das mit Comfortsoft und deiner Brücke und woher bekomme ich die Software...soll ich mal Stiebel fragen?..die zittern schon wenn ich wieder anrufe ;) 

Ich nehme mal an, wenn ich die Fehler des HD-Verdichters(2.Seite PDF)  tracen will, muss ich das an FHEM vorbei lösen?

Nochmals vielen Dank
Gruss Philipp


Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 20 Januar 2019, 09:57:14
Hallo Gerrit

Der Typ zum einzelnen Wert wird in der Datei ElsterTable.inc zugeordnet.

Wenn du einen Scan durchführst

./can_scan can0 680 total >scan.txt

und mir scan.txt gibst, kann ich dir die Werte, die von der Software ComfortSoft generiert werden, zukommen lassen. Für einen vollständigen Scan musst du zwingend die neuste can_progs.zip Software verwenden!

Im Anhang ist eine Fehlerliste von ComfortSoft.

FHEM verwende ich nur in einer Simulation, um Austesten zu können. Ich zeige deshalb keine Fehler an. 

Viele Grüsse
Jürg

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 20 Januar 2019, 10:13:04
Hallo Philipp

Danke, das mit der Flasche Wein ist lieb von dir, aber übertrieben!

Die Datei ElsterTable.inc enthält alle mir bekannten "Elster-Paare" und diese Paare stimmen nicht zwingend. ComfortSoft liefert keine zusätzlichen Werte.

Kannst du z.B. die "SAUGGASTEMP" im WPM anzeigen? Wenn du das kannst, dann muss der WPM den Wert von ID 180 abfragen, d.h. er ist auf dem CAN-Bus sichtbar.

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: thorschtn am 21 Januar 2019, 10:52:21
Stiebel hat nun zum 3. mal bei mir einen der beiden Kompressoren ausgetauscht (min. 3 Monate insgesamt mit Strom geheizt) und ich zweifle sehr, dass dies der letzte war.

Hallo Phillip,

die elektrische Zusatzheizung ist bei mir separat abgesichert. Seitdem ich unmittelbar nach Einzug mal einen Defekt hatte und daraufhin unwissentlich mit Heizstab geheizt habe, ist die Sicherung bei mir permanent aus. Das heisst, wenn Dein Kompressor mal wieder kaputt ist, wirds zwar kalt in der Hütte, so bekommst Du aber sofort mit, wenns Probleme gibt und heizt nicht ohne Dein Wissen mit Heizstab.

Gruß,

Thorsten
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Phil_E am 21 Januar 2019, 13:01:34
die elektrische Zusatzheizung ist bei mir separat abgesichert. Seitdem ich unmittelbar nach Einzug mal einen Defekt hatte und daraufhin unwissentlich mit Heizstab geheizt habe, ist die Sicherung bei mir permanent aus. Das heisst, wenn Dein Kompressor mal wieder kaputt ist, wirds zwar kalt in der Hütte, so bekommst Du aber sofort mit, wenns Probleme gibt und heizt nicht ohne Dein Wissen mit Heizstab.
Hallo Thorsten
Danke für deine Info, aber mein DHC springt erst bei Notbetrieb an und den stelle ich manuell ein. Der Heizwendel im Speicher (für Not-Notbetrieb) ist eh abgeschaltet, da ich den nicht am Sperrschütz habe. ;)
Ich habe so lange mit Strom geheizt, da Stiebel jedes Mal mind. 3 Wochen braucht, bist der Kompressor getauscht ist!
Gruss Philipp
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Phil_E am 21 Januar 2019, 13:35:55
Hallo Jürg
Danke für die Antwort. Ich überlege mir mal bei Stiebel die kompletten Adressen und Eigenschaften der Parameter anzufragen.
Die schulden mir noch was!

Ist das IWS nicht ID500?
Ich habe den Bus mal aufgezeichnet, bin dann runter in den Keller und habe den WPM auf Infos Temp "SAUGGASTEMPHD" gestellt
Danach kann man im File sehen, dass nur im unteren Bereich gewisse neue Werte beiI D500 auftauchen.
Da ich zuerst auf Aussentemp gestellt habe und danach nach 0C suchte, nahm ich an, dass die 2Byte FA05 die Adresse des Sauggastemp ist--> gedreht 05FA.

Das war falsch..inzwischen habe ich gemerkt, dass die Adresse in Byte 4/5 ist und nicht gedreht werden muss!
--> gelbe Markierung 1Byte nach rechts

Danach habe ich einen Eintrag in der ElsterTable.inc und 50Elster.pm gemacht.(ist das ok)?
{ "SAUGGASTEMPHD"                                , 0x05d7, et_dec_val},
"SAUGGASTEMPHD"   => { EIdx => "05d7", ID => "500" } ,
In FHEM Sauggastemp ausgewählt...kam der Wert ohne Komma zurück.
So habe ich auch den Strom gefunden!

Habe nur jetzt die Möglichkeit aufzuzeichnen, da ich sonnst wieder auf <-5° ein Jahr warten muss  ;)
So, jetzt gehts ans ploten oder DB, die Zeit drängt ;)

Gruss Philipp
 
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 21 Januar 2019, 23:18:19
Im Anhang ist eine Fehlerliste von ComfortSoft.
Hallo Jürg, vielen Dank für die Infos. Hab im Bauexpertenforum noch einen Beitrag von 2014 von dir gefunden, in dem du die Fehlerfeld Struktur näher erläuterst. Da das mit der Fehlernummer aus Adresse 0001 zufällig gepasst hatte (genau in dem Feld war zufällig der gleiche Fehlercode wie aktuell, aber eben doch anderer Zeitpunkt in den Feldern davor), hat ich mir die Daten ansonsten nicht mehr angeschaut. Aber alle Daten der Historie mit Zeitangaben sind in den Feldern aufgeteilt. Der letzte Fehler aktuell im letzen Fehler-Feld 139. In der ElsterTable.inc hab ich noch weitere Felder gefunden, die vllt mehr Infos zum aktuellen geben (oder ist bei mir jetzt immer der aktuelle Fehler in Feld 139?). Zwar Schade zum Testen aber zum Glück gibts aktuell nicht so häufig Fehler ;) (Alle paar Monate mal einer)
Ich werde die neueste Version heut oder morgen zum Laufen bringen und dann Feedback geben!
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 26 Januar 2019, 14:19:28
Hallo Philipp

Die Einträge in ElsterTable.inc und 50_Elster.pm sind richtig, aber hast du auch die folgende Zeile entfernt?

{ "LEISTUNGSREDUZIERUNG_KUEHLEN"                     , 0x05d7, 0},

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 24 Februar 2019, 14:40:27
Guten Tag,
Bei mir läuft das Elster Modul seit einiger Zeit stabil. Danke Jürg für das tolle Modul und deinen unermüdlichen Support! Einfach super.

Frage in die Runde: wie habt ihr nun die Steuerung der Heizung in Fhem umgesetzt? Welche notify und DOIFS habt ihr? Welche Readings beobachtet ihr?

Ich habe lediglich ein at zum Auslesen der Readingss

defmod Timer_WPL18e_auslesen at +*00:05:00 {\
fhem "get WPL18e AUSSENTEMP";;\
        sleep 2;; \
        fhem "get WPL18e PROGRAMMSCHALTER";;\
sleep 2;; \
        fhem "get WPL18e RUECKLAUFISTTEMP";;\
sleep 2;; \
        fhem "get WPL18e WPVORLAUFIST";;\
sleep 2;; \
        fhem "get WPL18e PUFFERSOLL";;\
        sleep 2;;\
        fhem "get WPL18e SPEICHERISTTEMP";;\
}
attr Timer_WPL18e_auslesen alias Betriebsstatus Überwachung
attr Timer_WPL18e_auslesen alignTime 00:00
attr Timer_WPL18e_auslesen group Status
attr Timer_WPL18e_auslesen room Heizung
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 04 Oktober 2019, 17:36:02
Habe aktuell Probleme das Perl-Modul zu bauen (mit Perl lib 5.28.1 von raspbian buster, Raspi 3, can_progs Feb 2019, CORE_PATH angepasst)
Das so. File wird nicht gebaut, zwischendrin gibt es einen Error beim Kompilieren:

In file included from /usr/include/features.h:424,
                 from /usr/include/arm-linux-gnueabihf/sys/ioctl.h:21,
                 from KRPiCanDriver.cpp:24:
/usr/include/arm-linux-gnueabihf/bits/socket.h:282:45: error: flexible array member ‘cmsghdr::__cmsg_data’ not at end of ‘struct timehdr’
     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */

Habe das arm-Build File noch angepasst, aber auch das hat nicht geholfen (64-bit und fPic Flag entfernt, damit gleich Aufruf aus älterer can_progs Version)

Hat das jemand schon erfolgreich unter raspbian buster gebaut?

EDIT: mit dem alten so-File und einem manuellen Link von 5.28 auf libperl.5.24.1.so (damit war die so gelinkt) geht es noch, nur der state vom Modul wird mit ??? Fragezeichen angezeigt. Neu bauen geht aktuell aber nicht mehr
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Ratzefummel am 23 Oktober 2019, 19:21:56
Hallo Zusammen,

vielen Dank für die grandiose Arbeit von euch Allen.
Ich habe euren Anleitungen folgen können und alles installiert. Elster-Modul läuft und empfängt FHEM Readings. Allerdings scheinen die Zuordnungen nicht immer richtig zu sein.

Leider schaffe ich es nicht, die ComfortSoft zum laufen zu bringen. Daher möchte ich euch bitten, das Scanfile im Anhang zu bearbeiten, damit ich es in die ElsterTable einbinden kann.
Anlage: WPM3, Hydraulikmodul THM eco, Wärmepumpe Tecalor TTL 15 A(C)S (ohne Kühlung).

Danke im Voraus

Liebe Grüsse
Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: juerg5524 am 26 Oktober 2019, 13:07:04
Hallo Ratzefummel

Leider unterstützt ComfortSoft den WPM3 nicht mehr. Aber du kannst mit "special/log_to_scan" aus deinem log-File ein File im "scan_data"-Format erzeugen (siehe Anhang). Was dabei auffällt, sind die vielen CAN-Ids:

  100
  180
  379
  380
  480
  500
  579
  601
  680
  700

Da die 680 auch vorkommt, solltest du sie zum Sannen nicht verwenden!

Die fhem-include-Datei kannst du mit "fhem/LogAnalyze" aus dem Scan erzeugen (siehe Anhang).

Viele Grüsse
Jürg
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: chris128 am 29 Dezember 2019, 15:08:41
Hallo gbr,
ich bin zwar neu hier, kann dir aber helfen, da ich die gleichen Probleme hatte!
Das kommt wohl von der neuen Raspbian-Version.
Die Lösung ist, in der Datei KSocketCanDriver.cpp die Struktur timehdr umzusortieren. (Zeile 109).

Gruß
Christian
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: chris128 am 29 Dezember 2019, 15:19:36
Hallo Jürg,
nach Anfagsproblemen, konnte ich mittlerweile deine Tools (vom 8.2.19) kompilieren, habe scans erstellt, konvertiert und jetzt ein lauffähiges FHEM-Modul.
Vielen Dank für die intensiven Vorarbeiten!

Nach dem Durchschauen der gets und sets in FHEM ist mir aufgefallen, das das Tool LogAnalize die IDs rausgelassen hat, die im Scan einen Inhalt von 0 geliefert hatten.
Etwas zur Vorgeschichte ist in HT-Dialog-Forum nachzulesen:
http://www.htdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden?page=8 (http://www.htdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden?page=8)

Ich könnte da jetzt per Hand Einträge ergänzen, jedoch habe ich Bedenken, da ich die jeweiligen Datentypen nicht kenne.
Ich habe eine LWZ 304 Trend.
Du schreibst, dass die Software Comfortsoft nicht mehr mit dem WPM3 zurechtkommt.
Wie finde ich heraus, welcher bei mir verbaut ist?

Gruß
Christian
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: labe am 02 Januar 2020, 15:14:41
Hallo Zusammen,
ich habe eine Stiebel Eltron LWZ 304 SOL (Baujahr 2018) und würde für diese gerne mit Hilfe von Jürgs Tools einen KNX Wrapper bauen. Leider bin ich nach Lektüre von diesem Thread und der Readme noch nicht ganz sicher, wie ich die Tools dafür verwenden muss. Als ersten Schritt habe ich einen Raspberry Pi 3 mit dem CAN Modul von IndustrialBerry bestückt und an die Heizung angeschlossen. Das funktioniert soweit, über candump kann ich Nachrichten mitsniffen und auch über das Tool can_logger kann ich Daten aufzeichnen. Die initiale Abfrage mit can_send zum scannen der IDs läuft bei mir allerdings ins Leere und ergibt keine gefundenen Werte.

./can_scan can0 680 total
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

scan on CAN-id: 680
list of valid can id's:




Meine Vermutung ist, dass dies mit einer ID zusammenhängt, die wohl etwas untypisch ist im Vergleich zu dem was ich hier sonst so gelesen habe (ID 6a1, die ich mit Hilfe des can_logger herausgefunden habe).

Die Abfrage der Minuten liefert leider kein Ergebnis:
./can_scan can0 700 180.0126
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

no value read

Wisst ihr, wie ich weiter vorgehen kann, um meine Heizung zum Antworten zu bewegen? Muss ich mich zum Beispiel initial als "Bedienteil" identifizieren?

Viele Grüße
labe
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: chris128 am 05 Januar 2020, 10:34:11
Hallo labe,
ich war vor einem Monat in der gleichen Situation mit meiner LWZ304 Trend.
Die Tools von Jürg müssen ein wenig angepasst werden, weil die ID 680 nicht mehr funktioniert.
Wenn du ein aktuelles Raspbian (Buster) hast, musst du noch ein wenig mehr anpassen, damit die Tools wieder compilieren.

Meine ersten Versuche habe ich mit Informationen aus dem Haustechnik-Dialog-Forum gemacht.
Hier habe ich auch eine Zusammenfassung meiner Schritte gepostet.
http://www.htdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden?page=8 (http://www.htdialog.de/Forum/t/169910/ComfortSoft-mit-CAN-BUS-Anbindung-Raspberry-Pi-verwenden?page=8)
Schau dir erst mal den letzten Eintrag an und dann ggf weiter zurück.

Gruß
Christian
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 08 Februar 2020, 14:43:49
Habe aktuell Probleme das Perl-Modul zu bauen (mit Perl lib 5.28.1 von raspbian buster, Raspi 3, can_progs Feb 2019, CORE_PATH angepasst)
Das so. File wird nicht gebaut, zwischendrin gibt es einen Error beim Kompilieren:

In file included from /usr/include/features.h:424,
                 from /usr/include/arm-linux-gnueabihf/sys/ioctl.h:21,
                 from KRPiCanDriver.cpp:24:
/usr/include/arm-linux-gnueabihf/bits/socket.h:282:45: error: flexible array member ‘cmsghdr::__cmsg_data’ not at end of ‘struct timehdr’
     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */

Habe das arm-Build File noch angepasst, aber auch das hat nicht geholfen (64-bit und fPic Flag entfernt, damit gleich Aufruf aus älterer can_progs Version)

Hat das jemand schon erfolgreich unter raspbian buster gebaut?

EDIT: mit dem alten so-File und einem manuellen Link von 5.28 auf libperl.5.24.1.so (damit war die so gelinkt) geht es noch, nur der state vom Modul wird mit ??? Fragezeichen angezeigt. Neu bauen geht aktuell aber nicht mehr

hallo, wie hast du das mit dem "manuellen Link" hingekriegt? ich weiss nicht genau, wo ich das machen muss. Danke. Lg C
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: gbr am 09 Februar 2020, 13:51:10
Jetzt hier noch die aktuelle Lösung mit neuestem canprogs.zip:

can_elster_perl.arm ausführbar machen: chmod +x can_elster_perl.arm

Anpassung von can_elster_perl.arm
CORE_PATH="/usr/lib/arm-linux-gnueabihf/perl/5.28/CORE"

Und Anpassung von KSocketCanDriver.cpp
Zeile 107 und 108 tauschen

das ganze bauen: ./can_elster_perl.arm

Danach dann die pm, so und die 50_elster.pm aus dem fhem ordner nach opt/fhem/FHEM kopieren
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: choetzu am 09 Februar 2020, 16:53:35
Jetzt hier noch die aktuelle Lösung mit neuestem canprogs.zip:

can_elster_perl.arm ausführbar machen: chmod +x can_elster_perl.arm

Anpassung von can_elster_perl.arm
CORE_PATH="/usr/lib/arm-linux-gnueabihf/perl/5.28/CORE"

Und Anpassung von KSocketCanDriver.cpp
Zeile 107 und 108 tauschen

das ganze bauen: ./can_elster_perl.arm

Danach dann die pm, so und die 50_elster.pm aus dem fhem ordner nach opt/fhem/FHEM kopieren

als Ergänzung: Auf http://juerg5524.ch/list_data.php gibts die neuste can_progs (version 20200209), die auch für Buster gehen. Dann, wie von gbr beschrieben kompilieren und verschieben.  Ich musste die Anpassung vonKSocketCanDriver.cpp nicht machen, wieso auch immer.

Danke Jürg für die neue can_progs Version.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Damu am 27 August 2020, 17:15:06
Hallo

Suche ein PICAN Modul das Galvanisch getrennt ist.
Habe nur ein Dual Modul gefunden:
https://buyzero.de/products/pican2-duo-isolated (https://buyzero.de/products/pican2-duo-isolated)
Finde kein Fertiges Modul so wie es Juerg5524 beschreibt.



Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: LDSign am 27 November 2020, 14:44:47
Hallo zusammen

Ich habe es tatsächlich geschafft mit der super Arbeit von Jürg und diesem Thread meine WPL mittels einem Pican anzubinden. Fhem dient hier nur als Bridge, denn ich nutze ioBroker auf einem weiteren Pi. Es läuft alles soweit :) Fhem kann die Werte auslesen und ioBroker bekommt sie mittels Telnet weitergereicht. Einzig eine Sache funktioniert nicht - ich kann das Aktualisieren der Werte jeweils nur manuell per get anstoßen (siehe Screenshot). Dann wird der jeweilige Wert auch sofort aktualisiert.

Wie bekomme ich es denn hin, dass Fhem diese bei Änderung automatisch erhält oder (als Workaround?) in einem bestimmten Interval abruft?

Bonusfrage: Warum sind diese Zeitstempel eigentlich rot? ;)

Gruß
Frank

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 02 Dezember 2020, 09:59:47
Hallo Frank,

ich bin ebenfalls über das Problem gestolpert, dass die Readings nicht automatisch aktualisiert werden. Ich habe etwas Entwicklungserfahrung und habe mir mal die 50_Elster.pm angesehen. Dort gibt es eine sub Elster_read() die das über ein singleReadingUpdate behandeln sollte. Hier habe ich einen Fehler entdeckt und korrigiert

sub Elster_Read($)
{
  my ($hash) = @_;
  my @cList = keys %Elster_gets;
 
  if ($sniffed_set != 1)
  {
    return;
  }
  my $buf = elster_perl::getsniffedvalue();
  while (length($buf) > 10)
  {
    my @arr = split /\s+/, $buf;
    my $recv_id = shift @arr;
    my $elster_idx = shift @arr;
    my $value = join(" ", @arr);
 
    #printf "elster_read_: $recv_id $elster_idx $value\n";
    $buf = elster_perl::getsniffedvalue();
    for my $key (@cList)
    {
      my $el = $Elster_gets{$key};
      if ($el)
      {
        #printf "id: $el->{ID} $el->{EIdx}\n";
        if ($el->{ID} == hex($recv_id) &&
            $el->{EIdx} == hex($elster_idx))
        {
          #printf "single update: $key $value\n";
          readingsSingleUpdate($hash, "$key", "$value", 1);
          last;
        }
      }
    }
    $buf = elster_perl::getsniffedvalue();
  }
  return;
}

Im If Statement werden leider hexWerte mit dezimal Werten verglichen und dadurch wird die readingsSingleUpdate Funktion nie aufgerufen.

Ich habe es mal angepasst und noch einen Check hinzugefügt, da bei mir die PUFFERTEMP_UNTEN1 ständig über den CAN Bus geht und mit das reading dauernd aktualisiert werden würde, obwohl der Value gleich ist.

sub Elster_Read($)
{
  my ($hash) = @_;
  my @cList = keys %Elster_gets;
  my $myTime = localtime();
 
  if ($sniffed_set != 1)
  {
    return;
  }
  my $buf = elster_perl::getsniffedvalue();
 
  while (length($buf) > 10)
  {
    #Log3 ($buf,3, "Buffer length > 10");
 
    my @arr = split /\s+/, $buf;
    my $recv_id = shift @arr;
    my $elster_idx = shift @arr;
    my $value = join(" ", @arr);
 
    my $newValue = 'id:' . $recv_id . ' idx:' . $elster_idx . ' val:' . $value;
   
    #printf "elster_read_: id: $recv_id  $hex_recv_id index: $elster_idx $hex_elster_idx value: $value\n";
    #printf "$oldValue \n";
 
    $buf = elster_perl::getsniffedvalue();
    for my $key (@cList)
    {
      my $el = $Elster_gets{$key};
      if ($el)
      {
        #printf "----------------> id: $el->{ID} hex($el->{ID}) $el->{EIdx} \n";
       
        if (hex($el->{ID}) == hex($recv_id) &&
            hex($el->{EIdx}) == hex($elster_idx) &&
            $oldValue ne $newValue )
        {
          #print strftime "%Y-%m-%d %H:%M:%S", localtime time;
          printf "$myTime single update: $key $value\n";
          $oldValue = $newValue;
          readingsSingleUpdate($hash, "$key", "$value", 1);
          last;
        }
      }
    }
    $buf = elster_perl::getsniffedvalue();
  }
  return;
}

Weiter oben habe ich noch eine globale Variable angelegt my $oldValue ='empty';
my $sniff = 0;
my $oldValue = 'empty';

#####################################################
# Elster_Initialize($)                              #
# Parameter hash                                    #
#####################################################
sub Elster_Initialize($)


Einfach die /opt/fhem/FHEM/50_Elster.pm mit meiner Version überschreiben, dann sollten die Readings automatisch aktualisiert werden, sobald sie auf dem CAN-Bus erscheinen

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: LDSign am 02 Dezember 2020, 10:28:04
Hallo Namensvetter :)

Wow sehr geil - vielen Dank! Ich habe es bei mir (vorerst) mit einem regelmäßigen Poll per

FHEM Update Command:
define WPL_UPDATE at +*00:00:10
get WPL HEIZKURVE;;
get WPL HZK_PUMPE;;
get WPL LAUFZEIT;;
get WPL PROGRAMMSCHALTER;;
get WPL SOLARBETRIEB;;
get WPL SOMMERBETRIEB;;
get WPL STATUS_HEIZKREIS;;
get WPL STATUS_KESSEL;;
get WPL STATUS_SPEICHER;;
get WPL STATUS_WP_PUMPEN;;
get WPL STATUS_WP;;
get WPL TEMP_AUSSEN;;
get WPL TEMP_HILFSKESSEL_SOLL;;
get WPL TEMP_KESSEL_SOLL;;
get WPL TEMP_MAX_WW;;
get WPL TEMP_PUFFER_SOLL;;
get WPL TEMP_RAUM_SOLL;;
get WPL TEMP_RAUM_SOLL_NACHT;;
get WPL TEMP_RUECKLAUF_IST;;
get WPL TEMP_SOLAR;;
get WPL TEMP_SPEICHER_UNTEN;;
get WPL TEMP_VORLAUF_IST;;
get WPL TEMP_WARMWASSER_IST;;
get WPL TEMP_WARMWASSER_SOLL;;
get WPL TEMP_WARMWASSER_SOLL_NACHT;;

"gelöst". Aber das hat sich schon bei der Umsetzung nicht richtig angefühlt ;) Aber es funktioniert immerhin...

Deine Lösung probiere ich mal aus - das wäre perfekt :)

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 30 Dezember 2020, 10:21:50
Hallo,

ich habe die Feiertage mal genutzt um meinen WPM4 weitere Daten zu entlocken. Die ElsterTablebe.inc habe ich um neue Adressen erweitert.

Nun kann ich die gesamten Prozessdaten der Wärmepumpe sehen
- WP_Volumenstrom
- Lufteintrittstemperatur
- Verdichter Frequenz
- Verdampfertemperatur
- Fortlufttemperratur
- WP Verdichter Starts
- ...

Dabei wurde ersichtlich, das der WPM4 an die CANID 100 die Anfrage sendet und dann die CAN ID 514 antwortet. Eine Anfrage auf der Kommandozeile mit ./can_scan can0 680 514.xxx erhielt ich ebenfalls meine Ergebnisse. Die ElsterTable.inc habe ich auch um die richtigen Datentypen erweitert.

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: intershopper am 08 Januar 2021, 16:14:51
Ich habe weitere Werte rechnerisch ermittelt:
Wärmstrom über den WP_WASSERVOLUMENSTOM l/min * 4,18/60 * (VLtemp -RLtemp)

WAERMELEISTUNG {
  sprintf("%.2f",(ReadingsVal($NAME,"WP_WASSERVOLUMENSTROM",0) * (4.18 / 60) * (ReadingsVal($NAME,"WPVORLAUFIST",0) -
  ReadingsVal($NAME,"RUECKLAUFISTTEMP_WP_IWS",0)))*1)
}

damit kann man in den Diagramm sehr schön die WärmeLeistung ablesen und mit der aufgenommen elektrischen Energie vergleichen. Ich greife die Leistung direkt vom Drehstromzähler ab und kann somit den realen COP errechnen.

COP_real = WAERMELEISTUNG / (aktuelle Leistung Drehstromzähler)

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Araktos am 06 Februar 2021, 16:11:32
Hallo zusammen,

ich bin recht frisch in der FHEM Welt, was Modulprogrammierung und Perl angeht. Ich habe aber schon länger die Programme von Jürg (can_prog) bei mir im Einsatz
und wollte dies nun auch in FHEM einbinden.

Mein Aufbau:
Ich habe eine Stiebel Eltron WPL18 als Außengerät, WPM2 mit einem Heizkreis. Ein RaspberryPi3 + PiCAN2 dient dabei als Schnittstelle. Hier ist auch FHEM installiert.
Da ich sporadisch Probleme mit der Anlage habe und nicht ständig in den Keller laufen wollte, habe ich mit den can_prog und der ComfortSoft
die Möglichkeit Fehler auszulesen und Daten aufzuzeichnen. 

FHEM läuft auch auf dem RaspPi und so kam auch das 50_Elster.pm Modul zur Installation. Die Änderungen und Anpassungen in diesem Forum wurden eingepflegt,
das Modul funktioniert... Mir ist aber aufgefallen das die Systemlast am RaspPi deutlich angestiegen ist.
Ich habe mich auf die Suche gegeben und das Modul 50_Elster.pm grundliegend geändert.

Das würde ich gerne hier vorstellen.

Vorher:
Das Modul registriert sich in der $readyfnlist und somit wird von FHEM die Elster_Ready($) aufgerufen. Diese Funktion soll nun die (fehlende) Verbindung aufbauen.
Da die Verbindung bereits in der Elster_Define($) aufgebaut wurde und die Elster_Ready($) nicht richtig beendet wird, bleibt es in dieser schleife…
Zusätzlich wird bei jeden durchlauf die Elster_Read($) aufgerufen, welche Daten vom C++ Wrapper empfängt und in Readings schreibt.
Bei vielen Readings geht das ordentlich auf die CPU. Interhopper hat dem bereits entgegengewirkt, indem nur Readings geschrieben werden,
die sich auch geändert haben. Das entlastet das System, da nicht mehr so viele events gefeuert werden.

Beschreibung (Nachher):
Das Modul wurde nun wie folgt angepasst, so dass es jetzt stabiler und Ressourcenschonender laufen sollte.
Das Modul verwendet nun einen Timer, welcher in regelmäßigen Abständen die Daten abholt. Der Timer lässt sich bei der Definition übergeben.
Define Heizung Elster can0 [Timer]Dieser wird in Sekunden angegeben und ist optional. Wird kein Wert übergeben, so wird 10s als default angenommen. Das lässt sich unter DEF später auch noch ändern.

Nach dem hinzufügen versucht das Modul über den C++ Wrapper eine Verbindung aufzubauen. Gelingt dies, wird STATE=connected gesetzt und der Aktualisierungtimer wird gestartet.
Meldet das C++ Wrapper einen Fehler, wird nach 30s versucht die Verbindung erneuert aufzubauen. STAT wird solange auf disconnected gesetzt.

Steht die Verbindung, wird die Elster_Read($) (und noch weitere Funktionen) nach Ablauf des Timers aufgerufen und die Daten verarbeitet. Die Daten kommen so rein wie diese auf dem Bus auftauchen.
Wenn sehr viele Daten kommen, steigt auch hier die CPU last an, da ich den code von Interhopper wieder entfernt habe. Besser ist es, wenn wir das Attribut event-on-change-reading  [.*] setzen. Das hat den gleichen Effekt. Der Benutzer hat aber mehr Kontrolle...

Attribute:
Es sind auch Attribute hinzugekommen.

Weitere Funktionen

Das ist der aktuelle Stand.

ToDo´s:

Bei mir kann ich zurzeit keine Werte über den CAN Bus setzen, auch nicht über ComfortSoft.
Früher ging das.
Ich weiß noch nicht, woran das liegt. So ist die SET Funktion im Modul nicht getestet!!!

Ich hoffe das sich ein paar Leute finden, die das Modul aufspielen und Testen könnten. Freu mich auf Verbesserungsvorschläge oder Feedback.
Bitte beachtet das die Anleitungen die bei den can_progs beiliegen immer noch gültig sind und eventuell Anpassungen an dem Modul erfordern.

!!! Die Verwendung geschieht auf eigene Gefahr !!!

Gruß Niko.

Update

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Ratzefummel am 10 Februar 2021, 11:28:56
Hallo Araktos,

ich habe Deine neue 50_Elster.pm seit gestern Abend im Einsatz.
Das Modul funktioniert bisher einwandfrei und macht genau das, was Du beschrieben hast. GET-Werte werden dem Timer entsprechend abgefragt und neue Readings erscheinen, wenn man es so möchte. Die Fehler-Liste ist super übersichtlich und nützlich. Ich werde weiter ausgiebig testen.

Anregung: Nicht jeder Wert muss unbedingt im Timer-Takt abgefragt werden. Beim Fehlerspeicher z.B. würde mir ein tägliches Intervall genügen. Vielleicht könnte man dem autoPullReadings Attribut neben dem Namen noch ein Intervall mitgeben. Ohne Intervall in Attribut gilt der Timer des DEFINE.  Z.B. attr autoPullReadings Name1:60 Name2 Name3:360
Es würde reichen, wenn die Fehlerliste nur die Fehler anzeigt und nicht alle leeren Slots.

Klasse Arbeit. Hut ab!!! Ich bin begeistert.
Danke

Gruß Frank
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Araktos am 17 Februar 2021, 22:02:47
Hallo Ratzefummel,

vielen Dank für das Feedback.

Ich habe noch ein wenig weiter an dem Modul geschraubt und 2 weitere Funktionen hinzugefügt. Siehe oben in meinem Post.

Zu deinen Anregungen:
Die Funktionen _Fehlerliste, _Leistung, _Systemzeit sind von dem Intervall nicht betroffen. Allein bei der _Fehlerliste schon über 100 Werte gelesen werden, habe ich darauf verzichtet. Mein Gedanke war die Fehler über ein at einmal am Tag abzurufen, oder "händisch" im Device.
Ich habe auch entfernt, das leere Zeilen angezeigt werden.

Das gleiche gilt auch für die _Systemzeit und _Leistungsdaten.

Verschiedene Intervalle bei den verschiedenen Readings ist mit deutlich mehr Aufwand verbunden. Ich müsste für theoretisch unendlich viele Readings
Timer vorsehen und diese verwalten...
Wenn es dazu bedarf gibt, kann ich mich gerne damit beschäftigen :)

Als Workaroung verwende ich FHEM Funktionen, die im Modul schon vorhanden sind:
event-on-change-reading .*  -- um weniger Events zu erzeugen,
event-min-interval [reading:int]  -- hab ich selber nicht, soll aber das machen, was du oben gemeint hats,
DBLogExklusive .* / DBLogInclusive [reading:int], [reading:int], ..  -- für Readings die ich in eine Datenbank logge.

Ich bin auch immer für Vorschläge offen und lasse mich auch gerne umstimmen ;)


Ich habe auch in der ElsterTable.inc einige Fehler gefunden und korrigiert. Ich hänge diese Datei ebenfalls oben bei.

Da bin ich mir noch nicht ganz sicher, ob ich diese Dateien auch zum Download anbieten darf. Wenn du die dies Datei verwenden möchtest,
muss diese in das can_progs kopiert werden und dann alle programme neu kompiliert werden.
Auch das mit dem Scannen und Analysieren, muss erneuert gemacht werden...

Gruß Niko.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: N(Zgazucs am 19 März 2021, 09:34:54
Hallo,

ich bin neu hier und stoße wegen meiner Tecalor TSBC 200, TTL 15 ACS, WPM4 und FEK zu Euch. Dazu möchte ich mit Euch meine ersten Eindrücke zum CAN-Setup teilen. Fragen werden sicherlich in Zukunft von mir noch kommen.

Den CAN Bus zapfe ich z.Zt. direkt am FEK ab und nutze dazu einen Raspberry 4B mit PiCAN2 Erweiterung und Raspberry Pi OS Lite. Aussagen im Netz (https://forum-raspberrypi.de/forum/thread/46135-pican2-can-bus-auf-raspberry-pi-4/), dass PiCAN2 mit einem Raspberry 4 nicht funktioniert, sind falsch.

Linux raspberrypi 5.10.17-v7l+ #1403 SMP Mon Feb 22 11:33:35 GMT 2021 armv7l GNU/Linux

Unter Hinzufügen von

dtparam=spi=off
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi0-2cs

nach

/boot/config.txt
wird der PiCAN2 erkannt und mit dem Anlegen des can0 interfaces in

/etc/network/interfaces
mit folgendem Inhalt

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# CAN-Bus
auto can0
iface can0 can static
  bitrate 50000

wird das can0 interface bei jedem Boot automatisch aktiviert. Ich bitte zu beachten, dass die hier im Forum kolportierte 20000 bit/s Baudrate bei mir nicht funktioniert und ich stattdessen 50000 bit/s Baudrate nutze.

Ein erster Scan mit CAN ID 780 brachte folgendes magere Ergebnis:

pi@raspberrypi:~/can_progs $ ./can_scan can0 780
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

list of valid can id's:

  100 (8000 = 502-02-)
  401 (8000 = 501-02-)
  500 (4604 = 70-04)


Das Nutzen der Sender CAN ID 680, welche ausdrücklich nicht für WPM3 empfohlen wird, war da ergiebiger:

pi@raspberrypi:~/can_progs $ ./can_scan can0 680
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

list of valid can id's:

  000 (8000 = not available)
  100 (8000 = 502-02-)
  180 (8000 = 449-04-)
  200 (8000 = 449-04-)
  201 (8000 = 449-04-)
  202 (8000 = 449-04-)
  301 (8000 = 449-04-)
  302 (8000 = not available)
  303 (8000 = not available)
  304 (8000 = 449-04-)
  401 (8000 = 501-02-)
  480 (8000 = 449-04-)
  500 (8000 = 446-04-)
  601 (8000 = 449-04-)
  602 (8000 = not available)
  603 (8000 = not available)
  604 (8000 = 449-04-)
  605 (8000 = 449-04-)
  606 (8000 = 449-04-)

Ein ausführlichen Scan habe ich mit scan.txt angehängt.

Die ersten Fragestellungen, die mich nun umtreiben sind:

Ich freue mich über Hilfestellung, ansonsten schaue ich mal wie weit ich selber komme und berichte dann hier.

Gruß
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Araktos am 21 März 2021, 23:51:32
Hallo N(Zgazucs,

ich habe mir dein scan mal in den Simulator geladen, aber seltsamerweise kann ComfortSoft keine Geräte finden.
Könnest du bei Gelegenheit aus ein scan mit der ID 780 machen. Vielleicht ist da was anders.

Ich habe im Code noch folgendes gefunden was eventuell helfen könnte:

...
my $direkt    = "000";
my $kessel    = "180";
my $bedien_1  = "301";
my $bedien_2  = "302";
my $manager   = "480";
my $heiz      = "500";
my $mischer_1 = "601";
my $mischer_2 = "602";
...

In der Elster Tabelle findet sich diesen Kommentar:
  { "SOFTWARE_VERSION"                                 , 0x019a, 0},
  { "SPEICHER_ZEIT_STATUS"                             , 0x019b, 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},
  { "MISCHERPARAMETER_ZU"                              , 0x019d, 0},
  { "WW_BETRIEB"                                       , 0x019e, 0},

Der Kommentar bezieht sich auf das Register 0x019c.
Wenn du die Zirkulationspumpe über das Panel ein und ausschalten kannst, würde ich das tun und diesen Wert beobachten.
Wenn es der richtige ist, sollte er sich ändern.
Danach kannst du versuchen über CAN den Wert zu setzen.

Gruß Niko.

Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: N(Zgazucs am 22 März 2021, 16:02:11
Hi Niko,

danke für Dein erstes Feedback. Im Anhang findest Du die Scans mit der CAN ID 700 bzw. 780. Nach meinem ersten Eindruck stellen diese keine weiteren Informationen, über den Scan mit der CAN ID 680 heraus, bereit.

Soweit ich den Austausch hier im Thread und auch in anderen Foren verstanden habe, kann ComfortSoft mit WPM3 und neuer nicht umgehen.

Dein Vorschlag
{"INFO_TYP", 0x019c, 0}zu nutzen, scheint vielversprechend zu sein. Im Moment resultiert das bei mir in 0x81 und könnte dazu passen, dass sowohl die HK1- und Zirkulationspumpe bei Abfrage eingeschaltet waren.

Allerdings um die Zirkulationspumpe damit an- oder auszuschalten, ist das vermutlich nicht der richtige Weg. "INFO TYP" lässt eher darauf schließen, dass man hier abfragen und nicht setzen/schreiben kann. Würde auch wenig Sinn machen, da man sonst unbeabsichtigt beim Schalten der Zirkulationspumpe die anderen Pumpenzustände überschreibt. Hier muss ich noch auf die Suche gehen, welcher Index der Richtige sein könnte. Das muss ich vermutlich mitsniffen, wenn ich am WPM die Pumpe schalte.

Ich bin weiterhin offen für weitere Vorschläge.

Gruß
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: Araktos am 22 März 2021, 19:18:35
Hallo N(Zgazucs,

was mir gerade noch durch den Kopf ging:

Du hast schon recht der Index "INFO..." deutet auch eine Information hin :)
Andersrum, der Ausgang für die Zirkulationspumpe ist auf dem WPM. Würde ich das WPM Designen, würde ich den direkten Ausgang nicht über CAN schalten lassen…
Der Ausgang wird durch das Programm im WPM geschaltet. Die Uhrzeiten sollten aber über CAN gesetzt werden können.

Was ist wen du die Zeiten setzt und der Rest macht der WPM3?

Gruß Niko.
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: N(Zgazucs am 22 März 2021, 20:57:42
Exakt Niko,

das ist auch das was mir vorschwebt, nur ein bisschen angepasst. Ich programmiere die Zeiten der Zirkulationspumpe durchgängig 24 Stunden am Tag und schalte dann entsprechend der WPM Einstellungen

Zirkulationspumpe Ausbzw.
Zirkulationspumpe Programm
Ich werde weiter berichten, sobald ich mal Zeit habe die Befehle am Raspy mitzuschneiden, während ich die Befehle am WPM auslöse.

Ein weiteres Problem ist bei mir auch noch das Auslesen der relativen Luftfeuchte und Raumtemperatur meiner Fernbedienung FET. Da weiß ich noch nicht, wie ich am Besten vorgehe :-(

Gruß
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: N(Zgazucs am 23 März 2021, 19:09:17
So langsam laufe ich mich warm.

Wem es hilft, die relative Luftfeuchte und die Raumtemperatur des FEKs bekommt man über

  { "RAUMTEMPERATUR_FEK"                               , 0x4ec7, et_dec_val},
  { "LUFTFEUCHTE_FEK"                                  , 0x4ec8, et_dec_val},

Das FEK hat bei mir die CAN ID 401.

./can_scan can0 680 401.4ec7
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

value: 00d2  (RAUMTEMPERATUR_FEK  21.0)

./can_scan can0 680 401.4ec8
elster-kromschroeder can-bus address scanner and test utility
copyright (c) 2014 Jürg Müller, CH-5524

value: 021e  (LUFTFEUCHTE_FEK  54.2)
Titel: Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
Beitrag von: momad am 12 Mai 2021, 13:21:33
Hallo zusammen,

auch bei mir klappt alles wunderbar , siehe unten  :)
Schreiben (SET) klappt auch bisher getestet nur RAUMSOLL.
Lässt sich eigentlich den SG Ready Modus (PV Anlage Überschuss nutzen) hier auch via CAN-BUS ansteuern?
Falls ja hat es jemanden bereits probiert und welches Wert sollte hierfür aktiviert werden?