Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Allgemeine Infos

Die Luxtronik 2 ist eine Steuerung für Wärmepumpen die von Alpha Innotec hergestellt, aber von diversen Herstellern verbaut wird, unter anderem folgende:

  • Alpha Innotec
  • Siemens Novelan
  • Wolf Heiztechnik
  •  CTA (All-In One), schweizer Hersteller

...

Info

Ich werde die Anleitung hier sehr allgemein halten und im Moment nicht detailliert darauf eingehen wie man z.B. die PicoC Implementation vornimmt. Evtl. werde ich sie später um diesen Punkt erweitern.

Webinterface

Das Webinterface an sich ist ungeeignet um mittels MS angesprochen zu werden, allerdings muss auch dieses irgendwie an die Daten der Heizung kommen was wir für unsere Zwecke nutzen können.

Das Webinterface ist unter der IP Adresse der Wärmepumpe, z.B. 192.168.178.10 erreichbar. Sieht man sich die Ethernet Pakete an, die von und zur Wärmepumpe gehen nach dem das Webinterface aufgerufen wurde (mitteles Wireshark), sieht man das das Webinterface eine neue Verbindung auf Port 8889 zur WP öffnet (8888 auf Luxtronik 2 Modulen mit SW Versionen < 1.76). Dabei sendet das Java Applet bestimmte Byte Sequenzen an die WP und bekommt darauf hin eine ganze Reihe an Bytes zurück. Dieses Verhalten lässt sich mit der PicoC Funktionalität des MS nachbilden und man kommt an die gewünschten Informationen.

Verbindung aufbauen und Daten anfragen

Um eine Verbindung aufzubauen connected man auf die IP der Luxtronik unter Verwendung des Ports 8889.

Es gibt 4 mögliche Kommandos die an die Luxtronik gesendet werden können.

Info

Die Übersetzungen der Bezeichnungen sind möglicherweise nicht korrekt!

3002 - Parameter schreiben

Man sendet 4 Bytes mit dem Kommando, Big Endian formatiert, gefolgt von 4 Bytes mit der Parameter Nummer und 4 Bytes mit dem neuen Wert:
Codeblock
languagebash
0x00 0x00 0x0b 0xba 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Die Luxtronik antwortet mit dem Kommando (4 Bytes) und dem Parameterwert (4 Bytes) , ebenfalls Big Endian formatiert.

3003 - Parameter lesen

Man sendet 4 Bytes mit dem Kommando, Big Endian formatiert, gefolgt von 4 Null Bytes:
Codeblock
languagebash
0x00 0x00 0x0b 0xbb 0x00 0x00 0x00 0x00

Die Luxtronik antwortet mit dem Kommando (4 Bytes) und der Anzahl an Parametern die folgen (4 Bytes) , ebenfalls Big Endian formatiert.

Sobald man die Anzahl weiss, liest man diese Anzahl an Integern (jeweils 4 Bytes) 

Beschreibung: 3003.txt

3004 - Berechnungen lesen

Man sendet 4 Bytes mit dem Kommando, Big Endian formatiert, gefolgt von 4 Null Bytes:
Codeblock
languagebash
0x00 0x00 0x0b 0xbc 0x00 0x00 0x00 0x00

Die Luxtronik antwortet mit dem Kommando (4 Bytes), dem Status (4 Bytes) und der Anzahl an Berechnungen die folgen (4 Bytes) , ebenfalls Big Endian formatiert.

Sobald man die Anzahl weiss, liest man diese Anzahl an Integern (jeweils 4 Bytes) 

Nachfolgend ist eine Tabelle die (fast) alle Parameter Beschreibt und zeigt wie man die Werte interpretieren muss.

  • Rot hinterlegte Felder sind unklar
  • Die Parameter 0 - 10 sind auch unklar, im Java Code werden erst die Parameter ab 10 behandelt
  • Die Parameter 6 + 7 ergeben bei mir einen Unix Zeitstempel der sich in den "01.01.2007 01:00:00" umrechnen lässt, aber die Bedeutung erschliesst sich nicht
  • Viele Parameter sind bei mir mit 0, Ich vermute das nicht verbaute Hardware trotzdem in den Daten abgebildet ist um alle Modelle mit einer Software zu erschlagen.

...

0 = ERC
1 = SW1
2 = SW2
3 = WW1
4 = WW2
5 = L1I
6 = L2I
7 = L1A
8 = L2A
9 = KSW
10 = KLW
11 = SWC
12 = LWC
13 = L2G
14 = WZS
15 = L1I407
16 = L2I407
17 = L1A407
18 = L2A407
19 = L2G407
20 = LWC407
21 = L1AREV
22 = L2AREV
23 = WWC1
24 = WWC2
25 = L2G404
26 = WZW
27 = L1S
28 = L1H
29 = L2H
30 = WZWD
31 = ERC
40 = WWB_20
41 = LD5
42 = LD7
43 = SW 37_45
44 = SW 58_69
45 = SW 29_56
46 = LD5 (230V)
47 = LD7 (230 V)
48 = LD9
49 = LD5 REV
50 = LD7 REV
51 = LD5 REV 230V
52 = LD7 REV 230V
53 = LD9 REV 230V
54 = SW 291
55 = LW SEC
56 = HMD 2
57 = MSW 4
58 = MSW 6
59 = MSW 8
60 = MSW 10
61 = MSW 12
62 = MSW 14
63 = MSW 17
64 = MSW 19
65 = MSW 23
66 = MSW 26
67 = MSW 30
68 = MSW 4S
69 = MSW 6S
70 = MSW 8S
71 = MSW 10S
72 = MSW 13S
73 = MSW 16S
74 = MSW2-6S
75 = MSW4-16

...

1 = ein Verdichter darf laufen
2 = zwei Verdichter dürfen laufen
3 = zusätzlicher Wärmeerzeuger darf mitlaufen

...

0 = Heizen
1 = Warmwasser
2 = Schwimmbad / Photovoltaik
3 = EVU
4 = Abtauen
5 = Keine Anforderung
6 = Heizen ext. Energiequelle
7 = Kühlbetrieb 

...

100

...

1 = Wärmepumpe Störung
2 = Anlagen Störung
3 = Betriebsart Zweiter Wärmeerzeuger
4 = EVU-Sperre
5 = Lauftabtau (nur LW-Geräte)
6 = Temperatur Einsatzgrenze maximal
7 = Temperatur Einsatzgrenze minimal (bei LWD reversibel möglicherweise Abschaltung wegen Frostschutz bei Kühlbetrieb - Verdampfungstemperatur zu lange unter 0°C)
8 = Untere Einsatzgrenze
9 = Keine Anforderung 

...

.

...

1 = Wärmepumpe Störung
2 = Anlagen Störung
3 = Betriebsart Zweiter Wärmeerzeuger
4 = EVU-Sperre
5 = Lauftabtau (nur LW-Geräte)
6 = Temperatur Einsatzgrenze maximal
7 = Temperatur Einsatzgrenze minimal (bei LWD reversibel möglicherweise Abschaltung wegen Frostschutz bei Kühlbetrieb - Verdampfungstemperatur zu lange unter 0°C)
8 = Untere Einsatzgrenze
9 = Keine Anforderung 

...

0 = ERC
1 = SW1
2 = SW2
3 = WW1
4 = WW2
5 = L1I
6 = L2I
7 = L1A
8 = L2A
9 = KSW
10 = KLW
11 = SWC
12 = LWC
13 = L2G
14 = WZS
15 = L1I407
16 = L2I407
17 = L1A407
18 = L2A407
19 = L2G407
20 = LWC407
21 = L1AREV
22 = L2AREV
23 = WWC1
24 = WWC2
25 = L2G404
26 = WZW
27 = L1S
28 = L1H
29 = L2H
30 = WZWD
31 = ERC
40 = WWB_20
41 = LD5
42 = LD7
43 = SW 37_45
44 = SW 58_69
45 = SW 29_56
46 = LD5 (230V)
47 = LD7 (230 V)
48 = LD9
49 = LD5 REV
50 = LD7 REV
51 = LD5 REV 230V
52 = LD7 REV 230V
53 = LD9 REV 230V
54 = SW 291
55 = LW SEC
56 = HMD 2
57 = MSW 4
58 = MSW 6
59 = MSW 8
60 = MSW 10
61 = MSW 12
62 = MSW 14
63 = MSW 17
64 = MSW 19
65 = MSW 23
66 = MSW 26
67 = MSW 30
68 = MSW 4S
69 = MSW 6S
70 = MSW 8S
71 = MSW 10S
72 = MSW 13S
73 = MSW 16S
74 = MSW2-6S
75 = MSW4-16

...

 

Der Nachfolgende Codeblock zeigt wie man z.B. in C einen Integer in eine IP Adresse umrechnet (notwendig für Parameter 91 - 94)

Codeblock
languagecpp
titleInteger to IP
linenumberstrue
void print_ip(int ip) {
    unsigned char bytes[4];
    bytes[0] = ip & 0xFF;
    bytes[1] = (ip >> 8) & 0xFF;
    bytes[2] = (ip >> 16) & 0xFF;
    bytes[3] = (ip >> 24) & 0xFF;   
    printf("%d.%d.%d.%d\n", bytes[3], bytes[2], bytes[1], bytes[0]);        
}

3005 - Sichtbarkeiten lesen

Man sendet 4 Bytes mit dem Kommando, Big Endian formatiert, gefolgt von 4 Null Bytes:
Codeblock
languagebash
0x00 0x00 0x0b 0xbd 0x00 0x00 0x00 0x00

Die Luxtronik antwortet mit dem Kommando (4 Bytes) und der Anzahl an Berechnungen die folgen (4 Bytes) , ebenfalls Big Endian formatiert.

Sobald man die Anzahl weiss, liest man diese Anzahl an Bytes (Achtung, nicht 4 Bytes!) 

Beschreibung: 3005.txt

Dauer des Lesevorgangs

Ich habe mal um einen Anhaltspunkt zu bekommen gemessen wie lange es dauert alle Parameter zu lesen und muss sagen das geht wirklich fix, nämlich nur 0.107503 Sekunden für 1634 Werte!

Codeblock
linenumberstrue
2017-02-23 08:27:00 beaglebone Luxtronik2 Gateway[28228] INFO Connected to Luxtronik2
2017-02-23 08:27:00 beaglebone Luxtronik2 Gateway[28228] INFO Sucessfully read 1075 parameters
2017-02-23 08:27:00 beaglebone Luxtronik2 Gateway[28228] INFO Sucessfully read 232 calculations with status 0
2017-02-23 08:27:00 beaglebone Luxtronik2 Gateway[28228] INFO Sucessfully read 327 visibilitys
2017-02-23 08:27:00 beaglebone Luxtronik2 Gateway[28228] DEBUG Execution time was 0.107503s

 

Bedeutung der Daten

Hier ist ein Log das ich von meiner Luxtronik 2 mitgeschrieben habe: example-data.txt

Wirklich interessant dürften wohl nur die Werte aus der 3004er Gruppe sein, dort liegen alle Temperaturen etc.

Hinweis

Die 3 Textfiles (3003.txt, 3004.txt und 3005.txt) mit den Beschreibungen sind aus dem Java File, das an den Browser ausgeliefert wird wenn man das Webinterface öffnet herausgefiltert. Das ganze ist einigermassen anstrengend strukturiert, so das nicht alle Werte einen Sinn ergeben. Vielleicht klärt sich die Bedeutung über die Zeit aber noch.

PicoC Programm

...