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

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

Vorheriges Thema - Nächstes Thema

juerg5524

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?

korreander12

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?


korreander12

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?

korreander12

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?

korreander12

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

juerg5524

Hallo Korre,

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

Viele Grüsse
Jürg

korreander12

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.




juerg5524

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

juerg5524

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.


korreander12

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 ???


juerg5524

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

Mastermind1

#56
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


Mastermind1

anbei ein 24h log... nicht am datum/Uhrzeit stören... der raspi war noch unkonfiguriert...

juerg5524

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.

Mastermind1

Zitat 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.
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.