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

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

Vorheriges Thema - Nächstes Thema

HGButte

#195
Zitat von: tywe am 22 Dezember 2022, 21:29:16
Guten Abend allerseits!
Wer FEK hat, sieht bitte, welche Pakete und an welche Adressen es sendet, wenn es eingeschaltet ist.
Interessiert daran, wie WPMi feststellt, dass ein FEK im Bus aufgetaucht ist.
Ich möchte eine Nachahmung machen.

Das würde mich auch brennend interessieren.

Hier im Thread sind ja ein paar Posts zu FEK.
Also ich kann per
601 0011 Raumtemperatur
601 0012 Raumtemperatur soll
Abfragen.

Bekomme beides Mal -40.0 gesendet.
Versuche ich als Raumtemperatur was anderes als -40.0 zu setzen bekomme ich einen Fehler. -40.0 wird aber positiv quittiert.

Ich bin mir nicht sicher ob an Klemme X2 alle 4 Leitungen (H, L, T und +) belegt werden müssen damit der WPM eine FEK oder das Gateway erkennen. In einer Anleitung steht dass selbst beim Gateway alle 4 Leitungen angeklemmt werden müssen obwohl das Gateway separat mit Strom versorgt wird.
Ich bin aktuell nur auf H und L mit dem CAN Bus.

tomcat

Warum den umständlichen Weg über eine FEK Simulation gehen?
Num doch einfach einen langsam laufenden PID Controller.
Input ist die Raumtemp des Zielraumes. Setpoint die Heizkurve oder Komforttemperatur.
Dann hast Du das gleiche und alles was Du dafür brauchst ist bekannt und dokumentiert.

HGButte

#197
Komme nicht mehr weiter. Habe heute meinen Raspi auf Bookworm aktualisiert.

Nachdem Neustart läuft das Elster Modul nicht mehr hoch.

RuntimeError Usage: setsniffedframe(params); at ./FHEM/50_Elster.pm line 495, <$fh> line 1794.

Ich habe jetzt alles versucht.
Can Controller ist per cannelloni über einen zweiten Raspi angebunden.
Danke für die Hilfe.

//Edit:
Habs gefunden. Umstieg auf perl 5.36
CORE_PATH in "can_elster_perl.arm" auf 5.36 angepasst.
Anschließend nochmal "can_elster_perl.arm" ausgeführt.


mwuerr

#198
Hallo,
Hat irgendjemand von euch CAN an der Tecalor THZ 504 / Stiebel Eltron LWZ 504 / Stiebel Eltron LWZ 8 CS Premium
am laufen?

Oder nutzt ihr alle USB?
Zitat von: parabacus am 01 Februar 2018, 19:37:28... 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.


Bei mir Läuft es mehr schlecht als recht. Insbesondere scheitert der scan.
Ich habe mir alle Werte die ich habe durch zuhören oder ausprobieren herausgesucht.

Akut bin ich auf der Suche nach "Istwert HK1" laut Bezeichnung auf dem Display. In der "ElsterTabelle.inc" von @juerg5524 werde ich dazu nicht fündig, vermutlich heißt es ganz anders, oder ich bin einfach blind.

Welche CanID/Elsterid hat "Istwert HK1" bei euch?
Unabhängig davon ob ihr eine 504 habt, und insbesondere falls ihr eine habt.


Falls es jemand anderem hilft hier die IDs die ich gefunden habe:

switch(msg.payload.canElsterIndexNotWellDecoded){
    case 0xFA0001:
        msg.payload.canElsterVariableName = "Fehlermeldung(en)"; // ungetestet
        break;
    case 0xFA0003:
        msg.payload.canElsterVariableName = "Speichertemperatur Soll";
        break;
    case 0xFA0004:
        msg.payload.canElsterVariableName = "VORLAUFSOLLTEMP";
        break;
    case 0xFA000C:
        msg.payload.canElsterVariableName = "Außentemperatur";
        break;
    case 0xFA000E:
        msg.payload.canElsterVariableName = "Speichertemperatur";
        break;
    case 0xFA000F:
        msg.payload.canElsterVariableName = "Vorlauftemperatur";
        break;
       
    case 0xFA0013:
        msg.payload.canElsterVariableName = "WW-Soll-Tag";
        break;


    case 0xFA0016:
        msg.payload.canElsterVariableName = "Rücklauftemperatur";
        break;
    case 0xFA0112:
        msg.payload.canElsterVariableName = "PROGRAMMSCHALTER";
        break;
    case 0xFA0121:
        msg.payload.canElsterVariableName = "WOCHENTAG";
        break;   
    case 0xFA0122:
        msg.payload.canElsterVariableName = "TAG";
        break;
    case 0xFA0123:
        msg.payload.canElsterVariableName = "MONAT";
        break;
    case 0xFA0124:
        msg.payload.canElsterVariableName = "JAHR";
        break;
    case 0xFA0125:
        msg.payload.canElsterVariableName = "STUNDE";
        break;
    case 0xFA0126:
        msg.payload.canElsterVariableName = "MINUTE";
        break;
    case 0xFA0176:
        msg.payload.canElsterVariableName = "BETRIEBS_STATUS";
        break;
    case 0xFA019C:
        msg.payload.canElsterVariableName = "INFO_TYP";
        break;
    case 0xFA019A:
        msg.payload.canElsterVariableName = "Versionsnummer";
        break;
    case 0xFA01DA:
        msg.payload.canElsterVariableName = "VOLUMENSTROM";
        break;
    case 0xFA05BB:
        msg.payload.canElsterVariableName = "Wärmeerzeuger Heizstufe";
        break;
       
       
       
    case 0xFA091E:
        msg.payload.canElsterVariableName = "Stromverbrauch Heizung/Tag Wh";
        break;
    case 0xFA091F:
        msg.payload.canElsterVariableName = "Stromverbrauch Heizung/Tag kWh";
        break;
    case 0xFA0920:
        msg.payload.canElsterVariableName = "Stromverbrauch Heizung Gesamt kWh";
        break;
    case 0xFA0921:
        msg.payload.canElsterVariableName = "Stromverbrauch Heizung Gesamt MWh";
        break;
    case 0xFA091D:
        msg.payload.canElsterVariableName = "Stromverbrauch Warmwasser Gesamt MWh";
        break;
    case 0xFA091A:
        msg.payload.canElsterVariableName = "Stromverbrauch Warmwasser/Tag Wh";
        break;
    case 0xFA091B:
        msg.payload.canElsterVariableName = "Stromverbrauch Warmwasser/Tag kWh";
        break;
    case 0xFA091C:
        msg.payload.canElsterVariableName = "Stromverbrauch Warmwasser Gesamt kWh";
        break;
    case 0xFA091D:
        msg.payload.canElsterVariableName = "Stromverbrauch Warmwasser Gesamt MWh";
        break;
       

/*    case 0xFA0xx:
        msg.payload.canElsterVariableName = "xxx";
        break;
*/
    default:
        msg.payload.unknownVariableName = "unknown variable: " + msg.payload.canElsterIndexNotWellDecoded;
}
return msg;

Spannend ist auch noch wen (CAN Adresse) man danach Fragen muss damit man eine Antwort erhält;
auf einige Dinge kann ich auch nur zugreifen weil sie sowieso zyklisch gesendet werden.

Export der relevanten NodeRed nodes die die Abfragenachrichten erzeugen:
[{"id":"caebafbe5b874c1d","type":"change","z":"9d748d77a2d1bacd","name":"read Stromverbrauch Heizung Gesamt kWh","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA09200000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":980,"wires":[["5391972865057a22"]]},
{"id":"8b1241d67d41ca43","type":"change","z":"9d748d77a2d1bacd","name":"Stromverbrauch Warmwasser/Tag Wh","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA091A0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1020,"wires":[["5391972865057a22"]]},
{"id":"4c1294631967543b","type":"change","z":"9d748d77a2d1bacd","name":"Stromverbrauch Warmwasser/Tag kWh","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA091B0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":1060,"wires":[["5391972865057a22"]]},
{"id":"34a0456f0f8cab83","type":"change","z":"9d748d77a2d1bacd","name":"Stromverbrauch Heizung/Tag Wh","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA091E0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":1100,"wires":[["5391972865057a22"]]},
{"id":"2dc5e8ae2f52d8e2","type":"change","z":"9d748d77a2d1bacd","name":"Stromverbrauch Heizung/Tag kWh","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA091F0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":1140,"wires":[["5391972865057a22"]]},
{"id":"a63408a1ee45b62d","type":"change","z":"9d748d77a2d1bacd","name":"read Wärmeerzeuger Heizstufe","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA05BB0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":1200,"wires":[["5391972865057a22"]]},
{"id":"040fc12184373e8e","type":"change","z":"9d748d77a2d1bacd","name":"read Speichertemperatur Soll","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA00030000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":1260,"wires":[["5391972865057a22"]]},
{"id":"c4701bd5d0e88d14","type":"change","z":"9d748d77a2d1bacd","name":"read INFO_TYP","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#6101FA019C0000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":1420,"wires":[["5391972865057a22"]]},
{"id":"f163edae1a9af930","type":"change","z":"9d748d77a2d1bacd","name":"read PROGRAMMSCHALTER","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3100FA01120000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":1480,"wires":[["5391972865057a22"]]},
{"id":"cbd6d1d62571ebce","type":"change","z":"9d748d77a2d1bacd","name":"read Betriebsart","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#6101FA00680000","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":1560,"wires":[["5391972865057a22"]]}]

Und der bisher einzige Wert den ich, ausgelöst durch PV-Optimierung, schreibe.
WW-Soll-Tag wird zwischen 45 Grad und 50 Grad geschalten wenn viel PV Strom übrig ist.
[{"id":"39dd63507e3f6fbb","type":"change","z":"834b82ada2d2fbf5","name":"write WW-Soll-Tag 50 Grad (erhöht)","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3000FA001301F4","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":860,"y":100,"wires":[["e5c1a91fc13c9346","256d63a9bbcad41a"]]},
{"id":"7f2e1d0947e4843c","type":"change","z":"834b82ada2d2fbf5","name":"write WW-Soll-Tag 45 Grad (default)","rules":[{"t":"set","p":"payload","pt":"msg","to":"6A2#3000FA001301C2","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":180,"wires":[["e5c1a91fc13c9346","73e836762720f1df"]]}]


relevante Links die anderen helfen könnten:
* SE vs THZ namen: https://www.stiebel-eltron.de/de/home/unternehmen/stiebel-eltron-tipp-14/inverterregelung-neue-namen-integralgeraete.html
FHEM auf Raspi 3B, FHEM THZ module, THZ 504, sFirmware: version: 07.59, sFirmware-Id: HW: 239 SW: 4.16 Date: NOV  7 2022

HGButte

Sucht du die Ist-Variable der Heizkurve 1?

Bei meiner Tecalor TTF7 ist das
  "HEIZKURVE_1"   => { EIdx => "010e", ID => "301" }

Weiß nicht ob dir das hilft.

oldscrewdriver

Hallo, ich hab auf Debian Bookworm auch das Problem mit dem Modul 50_Elster.pm.

im Forum ist der Fehler schon so ähnlich mehrfach aufgetreten: die libc6.so wurde da nicht gefunden.
Die symbolischen links habe ich gesetzt und den CORE PATH auf die 5.36 angepasst.

CORE_PATH="/usr/lib/aarch64-linux-gnu/perl/5.36.0/CORE".

Ein reload der 50_Elster.pm bringt mir trotzdem ständig:

Can't load './FHEM/elster_perl.so' for module elster_perl: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by ./FHEM/elster_perl.so) at /usr/lib/aarch64-linux-gnu/perl/5.28/DynaLoader.pm line 187.
 at FHEM/elster_perl.pm line 11.
Compilation failed in require at ./FHEM/50_Elster.pm line 68.
BEGIN failed--compilation aborted at ./FHEM/50_Elster.pm line 68.

Es sieht so aus als ob er die elster_perl.so einfach nicht laden möchte.
Habt Ihr eine Idee wie ich vorgehen könnte um den Fehler zu finden?

Mit freundlichen Grüßen
Oldscrewdriver

HGButte

Hast du noch

ZitatAnschließend nochmal "can_elster_perl.arm" ausgeführt

ausgeführt?
Damit wird elster_perl.so neu gebaut.


HGButte

Hast du Bibliothek auch in den fhem/FHEM Ordner kopiert?

Ansonsten kann ich nochmal heute Abend schauen auf meinem System schauen

oldscrewdriver

ja , habe ich gemacht, nach Anleitung hier und in den can_progs, schon mehrfach. Irgend etwas habe ich nicht richtig auf dem Raspi installiert denke ich. Woher kommt das:

/usr/lib/aarch64-linux-gnu/perl/5.28/DynaLoader.pm line 187
in der Fehlermeldung? , wie schon geschrieben, den CORE_PATH habe ich auf "5.36" geändert

Könnte das von der FHEM version gesetzt werden?

HGButte

Was mich gerade stutzig macht ist dass deine DynaLoader.pm auf perl Pfad mit Version 5.28 verweist.

Hast du schon mal den CORE PATH AUF das hier gesetzt

CORE_PATH="/usr/lib/aarch64-linux-gnu/perl/5.28/CORE"

Ich habe bei mir 5.36 installiert.

Was zeigt bei dir der Output von
perl -van.

Bei mir kommt
This is perl 5, version 36, subversion 0 (v5.36.0) built for arm-linux-gnueabihf-thread-multi-64int

oldscrewdriver

#206
ja, habe ich ausprobiert:
CORE_PATH="/usr/lib/aarch64-linux-gnu/perl/5.28/CORE"

perl -v gibt mir das aus:

perl -v
This is perl 5, version 36, subversion 0 (v5.36.0) built for aarch64-linux-gnu-thread-multi
(with 53 registered patches, see perl -V for m

bei mir war die v 5.28 nie drauf, weil ich den Raspi mit Debian bookworm aufgesetzt hatte, Vllt. liegt daran?


HGButte

Den Ordner scheints ja aber zu geben oder?
/usr/lib/aarch64-linux-gnu/perl/5.28
Mein /usr/lib/arm-linux-gnueabihf/perl sieht so aus:
/usr/lib/arm-linux-gnueabihf/perl $ ls -la
insgesamt 92
drwxr-xr-x  5 root root  4096  9. Okt 18:06 .
drwxr-xr-x 69 root root 73728 17. Jan 20:51 ..
lrwxrwxrwx  1 root root     6  8. Jan 2023  5.36 -> 5.36.0
drwxr-xr-x 33 root root  4096  8. Okt 20:20 5.36.0
lrwxrwxrwx  1 root root    19  8. Jan 2023  cross-config -> cross-config-5.36.0
drwxr-xr-x  2 root root  4096  8. Okt 20:20 cross-config-5.36.0
drwxr-xr-x  2 root root  4096  8. Okt 20:20 debian-config-data-5.36.0


Wie sieht denn dein Output von 'can_elster_perl.am' aus?


Der SWIG Aufruf generiert bei mir die 'elster_perl.pm', darin wird aufgeführt:
use base qw(DynaLoader);

Bei mir werden folgende drei Dateien generiert:
-rwxr----- 1 pi   pi       1671 29. Jan 21:03  elster_perl.pm
-rwxr-xr-x 1 pi   pi     451252 29. Jan 21:03  elster_perl.so
-rwxr----- 1 pi   pi      70540 29. Jan 21:03  elster_perl_wrap.cxx

Passiert das bei dir?



oldscrewdriver

ich werde diese Woche mal ein Debian 11 (Bullseye) aufsetzen und damit probieren.
Wenns dann läuft mache ich ein Update auf Debian 12 Bookworm.

Danke erstmal für Deine Hilfe HGButte!

oldscrewdriver

hat sich jetzt überschnitten :-)

ja bei mir werden auch die 3 Dateien neu erzeugt.

ls -l /usr/lib/aarch64-linux-gnu/perl
total 12
lrwxrwxrwx  1 root root   36 Jan 27 13:31 5.28 -> /usr/lib/aarch64-linux-gnu/perl/5.36
lrwxrwxrwx  1 root root    6 Jan  8  2023 5.36 -> 5.36.0
drwxr-xr-x 33 root root 4096 Jan 29 17:24 5.36.0
lrwxrwxrwx  1 root root   19 Nov 25 21:59 cross-config -> cross-config-5.36.0
drwxr-xr-x  2 root root 4096 Jan 13 10:37 cross-config-5.36.0
drwxr-xr-x  2 root root 4096 Jan 13 10:37 debian-config-data-5.36.0
lrwxrwxrwx  1 root root   37 Jan 27 20:16 libperl.so -> /usr/lib/aarch64-linux-gnu/libperl.so