Autor Thema: Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers  (Gelesen 15371 mal)

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
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).
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Burny4600

  • Hero Member
  • *****
  • Beiträge: 1449
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #1 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?
Mfg Chris

Raspberry Pi 2/2+/3/3+ / Betriebssystem: Jessie Stretch Lite
Schnittstellen: RFXtrx433E (Oregon) / SIGNALduino / nanoCUL 868MHz (FS20), nanoCUL 433 MHz (IT), LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, FS20, IT, WMR200, TEK603, YouLess, Resol VBUS & DL2, Fronius Datalogger Web 2

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #2 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 

Offline Burny4600

  • Hero Member
  • *****
  • Beiträge: 1449
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #3 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?
Mfg Chris

Raspberry Pi 2/2+/3/3+ / Betriebssystem: Jessie Stretch Lite
Schnittstellen: RFXtrx433E (Oregon) / SIGNALduino / nanoCUL 868MHz (FS20), nanoCUL 433 MHz (IT), LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, FS20, IT, WMR200, TEK603, YouLess, Resol VBUS & DL2, Fronius Datalogger Web 2

Offline Burny4600

  • Hero Member
  • *****
  • Beiträge: 1449
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #4 am: 31 Dezember 2015, 09:28:52 »
@juerg5524

Mit diesen Einstellungen kommen jetzt Daten an.
Wie kann ich die Schnittstelle jetzt in FHEM einbinden?
Mfg Chris

Raspberry Pi 2/2+/3/3+ / Betriebssystem: Jessie Stretch Lite
Schnittstellen: RFXtrx433E (Oregon) / SIGNALduino / nanoCUL 868MHz (FS20), nanoCUL 433 MHz (IT), LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, FS20, IT, WMR200, TEK603, YouLess, Resol VBUS & DL2, Fronius Datalogger Web 2

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #5 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

Offline Burny4600

  • Hero Member
  • *****
  • Beiträge: 1449
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #6 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?
« Letzte Änderung: 12 Januar 2016, 18:40:08 von Burny4600 »
Mfg Chris

Raspberry Pi 2/2+/3/3+ / Betriebssystem: Jessie Stretch Lite
Schnittstellen: RFXtrx433E (Oregon) / SIGNALduino / nanoCUL 868MHz (FS20), nanoCUL 433 MHz (IT), LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, FS20, IT, WMR200, TEK603, YouLess, Resol VBUS & DL2, Fronius Datalogger Web 2

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #7 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 

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #8 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #9 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

Offline Brun

  • Full Member
  • ***
  • Beiträge: 136
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #10 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?

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #11 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

Offline Brun

  • Full Member
  • ***
  • Beiträge: 136
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #12 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #13 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

Offline Brun

  • Full Member
  • ***
  • Beiträge: 136
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #14 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #15 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?

Offline Brun

  • Full Member
  • ***
  • Beiträge: 136
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #16 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #17 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

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #18 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.




Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #19 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?





« Letzte Änderung: 27 Januar 2017, 08:50:29 von Korre »

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #20 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?
« Letzte Änderung: 27 Januar 2017, 09:29:02 von Korre »

Offline Gerhard

  • Full Member
  • ***
  • Beiträge: 333
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #21 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
3 x FB7(3/4)90, 1 x cubietruck 1 x  raspberry 2B, CUL V3 (HMLAN, FS20, HMS, CUL_WS, FBAHA, FBDECT, IPCAM, STV, IT, SecvestIP, ebusd, SecvestIP, etc.)

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #22 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

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #23 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?



« Letzte Änderung: 30 Januar 2017, 16:49:56 von Korre »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #24 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
« Letzte Änderung: 31 Januar 2017, 11:01:30 von juerg5524 »

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #25 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) .

« Letzte Änderung: 31 Januar 2017, 12:14:59 von Korre »

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #26 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


Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #27 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #28 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #29 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #30 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #31 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #32 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #33 am: 07 Februar 2017, 17:26:57 »
Hallo Jürg,

bei beiden Befehle bekomme ich Ausgaben

Gruß
Niwa

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #34 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #35 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #36 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #37 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     .......


Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #38 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #39 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



Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #40 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)

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #41 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #42 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #43 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

Offline niwa83

  • New Member
  • *
  • Beiträge: 31
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #44 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           .....

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #45 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?

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #46 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?

« Letzte Änderung: 01 März 2017, 19:49:53 von Korre »

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #47 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?
« Letzte Änderung: 01 März 2017, 16:09:22 von Korre »

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #48 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?
« Letzte Änderung: 01 März 2017, 20:16:23 von Korre »

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #49 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
« Letzte Änderung: 01 März 2017, 22:21:43 von Korre »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #50 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

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #51 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.



« Letzte Änderung: 05 März 2017, 09:26:12 von Korre »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #52 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #53 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.

 

Offline Korre

  • New Member
  • *
  • Beiträge: 40
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #54 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 ???

Gefällt mir Gefällt mir x 1 Liste anzeigen

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #55 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

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #56 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

« Letzte Änderung: 23 Juni 2017, 10:31:34 von Mastermind1 »

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #57 am: 24 Juni 2017, 20:32:35 »
anbei ein 24h log... nicht am datum/Uhrzeit stören... der raspi war noch unkonfiguriert...

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #58 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.

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #59 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.

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #60 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 - :-)
« Letzte Änderung: 06 Juli 2017, 23:06:42 von Mastermind1 »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #61 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

Offline Radiator

  • New Member
  • *
  • Beiträge: 25
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #62 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

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #63 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

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #64 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?
.

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #65 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


Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #66 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

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #67 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)

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #68 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"



Offline intershopper

  • New Member
  • *
  • Beiträge: 4
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #69 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #70 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

Offline intershopper

  • New Member
  • *
  • Beiträge: 4
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #71 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #72 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

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #73 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



Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #74 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.
« Letzte Änderung: 01 Januar 2018, 17:47:23 von mmeine »

Offline Mastermind1

  • New Member
  • *
  • Beiträge: 12
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #75 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?
« Letzte Änderung: 02 Januar 2018, 23:57:14 von Mastermind1 »

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #76 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
« Letzte Änderung: 13 Januar 2018, 13:39:35 von mmeine »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #77 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

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #78 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
« Letzte Änderung: 16 Januar 2018, 07:37:40 von mmeine »

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #79 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
« Letzte Änderung: 16 Januar 2018, 07:38:14 von mmeine »

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #80 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.
« Letzte Änderung: 26 Januar 2018, 14:40:36 von mmeine »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #81 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

Offline parabacus

  • Full Member
  • ***
  • Beiträge: 187
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #82 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..!
Stiebel Eltron LWZ 504 / FHEM auf Rasperry Pi 3 / THZ / Weather / TABLETUI / SB_SERVER / SB_PLAYER  / Verkehrsinfo / speedtest

Offline intershopper

  • New Member
  • *
  • Beiträge: 4
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #83 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
« Letzte Änderung: 24 März 2018, 09:43:00 von intershopper »

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #84 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.
« Letzte Änderung: 26 März 2018, 17:15:17 von mmeine »

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #85 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

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #86 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.

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #87 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

Online juerg5524

  • New Member
  • *
  • Beiträge: 43
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #88 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

Offline mmeine

  • New Member
  • *
  • Beiträge: 11
Antw:Stiebel-Eltron mit CAN-Bus unter Verwendung eines C++-Wrappers
« Antwort #89 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

Offline intershopper

  • New Member
  • *
  • Beiträge: 4
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

 

decade-submarginal