Läuft: Heizung mit eBus-Schnittstelle

Begonnen von Prof. Dr. Peter Henning, 29 November 2014, 13:36:59

Vorheriges Thema - Nächstes Thema

amunra

#90
Hallo Roland,

sorry, anbei nun alle Daten:


2014-12-25 19:17:01.589 [bas event] >>> write -h 15070400
2014-12-25 19:17:01.590 [bas event] write hex cmd: 0a1507040098
2014-12-25 19:17:01.590 [net debug] [00002] wait for result
2014-12-25 19:17:01.641 [bus debug] switching from ready to send command
2014-12-25 19:17:01.673 [bus debug] switching from send command to receive command ACK
2014-12-25 19:17:01.678 [bus debug] switching from receive command ACK to receive response
2014-12-25 19:17:01.728 [bus debug] switching from receive response to send response ACK
2014-12-25 19:17:01.735 [bus debug] notify request: success
2014-12-25 19:17:01.735 [bus event] read res: 0ab534333030300215200233
2014-12-25 19:17:01.736 [bas event] <<< 0ab534333030300215200233

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb5bff460 (LWP 29748)]
BusHandler::setState (this=0x38240, state=bs_sendSyn, result=0, firstRepetition=<optimized out>) at bushandler.cpp:602
602                             unsigned char dstAddress = m_request->m_master[1];
(gdb) backtrace
#0  BusHandler::setState (this=0x38240, state=bs_sendSyn, result=0, firstRepetition=<optimized out>) at bushandler.cpp:602
#1  0x0000f746 in BusHandler::handleSymbol (this=0x38240) at bushandler.cpp:527
#2  0x0000f978 in BusHandler::run (this=0x38240) at bushandler.cpp:214
#3  0x0001ca46 in Thread::enter (this=0x38240) at thread.cpp:94
#4  0x0001ca52 in Thread::runThread (arg=<optimized out>) at thread.cpp:28
#5  0xb6fbcebc in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#6  0xb6e24a38 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#7  0xb6e24a38 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Danke.

heikoh81

Ich bin jetzt ein bißchen weiter als vorher, habe allerdings wie im Baublog von Alexex vorgeschlagen mal die 1993 ohne den Patch kompiliert, da es für diese Version umfangreichere .csv-Dateien zu geben scheint. Läuft jetzt seit ca. 30min stabil.

Allerdings liefern die telnet-Befehle keine sinnvollen Werte:


get mv boiler_temp
0.000000 0
get mv VF1_temp
55.000000 0
command not found
get mv RF1_temp
15.000000 0
get mv heat_press
0.000000 0
get hw mode
error send ebus msg
get amu date
error  ==> 38 00 00
get amu time
error  ==> 00 07 61
get mv heat_pump
command not found
get mv heat_pump_io
255
get nv pump_stat
command not found
get mv pump_stat
255
get mv at_temp
0.000000 255


In meinem ebusd-Fenster erscheinen folgende Werte:

2014-12-26 14:18:26.371 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d b0 04 ff 67 01 00 ff 3e 00
2014-12-26 14:18:26.591 [EBH]   10 fe b5 16 03 01 b0 04 85
2014-12-26 14:18:26.592 [NOT]  found: FEB5160301 type: 1 ==> id: 3
2014-12-26 14:18:26.593 [DBG] id: 3 elem: 0 p1: 2 p2: 3 p3: 0 p4: 0
2014-12-26 14:18:26.594 [DBG] buf: 4.687500
2014-12-26 14:18:26.594 [EBS] 4.687500
2014-12-26 14:18:28.503 [EBH]   10 08 b5 10 09 00 00 66 ff ff ff 04 ff 00 34 00 01 01 9a 00
2014-12-26 14:18:34.587 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d b0 04 ff 67 01 00 ff 3e 00
2014-12-26 14:18:36.695 [EBH]   10 08 b5 11 01 02 8a 00 06 03 3c 96 46 8c 6e e3 00
2014-12-26 14:18:38.692 [EBH]   10 08 b5 10 09 00 00 66 ff ff ff 04 ff 00 34 00 01 01 9a 00
2014-12-26 14:18:44.780 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d 80 04 ff 67 01 00 ff 7c 00
2014-12-26 14:18:46.778 [EBH]   10 08 b5 04 01 00 3d 00 0a 03 48 18 14 26 12 05 14 b0 04 7a 00
2014-12-26 14:18:48.900 [EBH]   10 08 b5 10 09 00 00 66 ff ff ff 04 ff 00 34 00 01 01 9a 00
2014-12-26 14:18:54.985 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d b0 04 ff 67 01 00 ff 3e 00
2014-12-26 14:18:56.953 [EBH]   10 08 b5 10 03 05 ff 01 98 00 01 01 9a 00
2014-12-26 14:18:58.990 [EBH]   10 08 b5 10 09 00 00 66 ff ff ff 04 ff 00 34 00 01 01 9a 00
2014-12-26 14:19:05.078 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d 80 04 ff 67 01 00 ff 7c 00
2014-12-26 14:19:07.127 [EBH]   10 fe b5 16 08 00 09 19 14 26 12 05 14 10
2014-12-26 14:19:07.129 [NOT]  found: FEB5160800 type: 1 ==> id: 2
2014-12-26 14:19:07.130 [DBG] id: 2 elem: 0 p1: 7 p2: 0 p3: 0 p4: 0
2014-12-26 14:19:07.130 [DBG] buf: Fri
2014-12-26 14:19:07.131 [DBG] id: 2 elem: 1 p1: 5 p2: 6 p3: 8 p4: 0
2014-12-26 14:19:07.132 [DBG] buf: 26.12.2014
2014-12-26 14:19:07.133 [DBG] id: 2 elem: 2 p1: 4 p2: 3 p3: 2 p4: 0
2014-12-26 14:19:07.134 [DBG] buf: 14:19:09
2014-12-26 14:19:07.135 [EBS] Fri 26.12.2014 14:19:09
2014-12-26 14:19:07.365 [EBH]   10 08 b5 12 02 00 00 ca 00 00 00 00
2014-12-26 14:19:09.186 [EBH]   10 08 b5 10 09 00 00 66 ff ff ff 04 ff 00 34 00 01 01 9a 00
2014-12-26 14:19:13.293 [EBH]   10 08 b5 11 01 01 89 00 09 66 5d 80 04 ff 67 01 00 ff 7c 00
2014-12-26 14:19:15.290 [EBH]   10 08 b5 04 01 00 3d 00 0a 03 16 19 14 26 12 05 14 80 04 2a 00
2014-12-26 14:19:15.550 [EBH]   10 08 b5 11 01 02 8a 00 06 03 3c 96 46 8c 6e e3 00
2014-12-26 14:19:15.787 [EBH]   10 08 b5 12 02 00 00 ca 00 00 00 00
2014-12-26 14:19:17.698 [EBH]   10 18 07 04 00 ad
2014-12-26 14:19:18.446 [EBH]   10 18 07 04 00 ad
2014-12-26 14:19:19.192 [EBH]   10 18 07 04 00 ad
2014-12-26 14:19:19.934 [EBH]   10 50 07 04 00 b5
2014-12-26 14:19:20.680 [EBH]   10 50 07 04 00 b5
2014-12-26 14:19:21.427 [EBH]   10 50 07 04 00 b5
2014-12-26 14:19:22.172 [EBH]   10 ec 07 04 00 d4
2014-12-26 14:19:22.918 [EBH]   10 ec 07 04 00 d4
2014-12-26 14:19:23.665 [EBH]   10 ec 07 04 00 d4
2014-12-26 14:19:24.410 [EBH]   10 a0 07 04 00 2f
2014-12-26 14:19:25.158 [EBH]   10 a0 07 04 00 2f
2014-12-26 14:19:25.904 [EBH]   10 a0 07 04 00 2f
2014-12-26 14:19:26.650 [EBH]   10 ed 07 04 00 8a
2014-12-26 14:19:27.398 [EBH]   10 ed 07 04 00 8a


Wie wäre jetzt das weitere Vorgehen?

heikoh81

Also zwischenzeitlich bin ich soweit, dass die Außentemperatur zuverlässig in FHEM erscheint.
Nur wie komme ich nun an die anderen Werte? Vorlauf-IST, Vorlauf-Soll, Rücklauf-Ist, Speicher-IST, Systemdruck, Betirebsmodus, Brennerleistung in %?
Wenn ich es richtig verstehe, ist die Temp. und Zeit ein Broadcast, die anderen Werte muss man aber erst anfordern.
Doch wie mache ich das, wenn die get-commandos nicht funktionieren oder falsch interpretierte Werte liefern?

Prof. Dr. Peter Henning

Na:

1. Dokumentation lesen und feststellen, was die wahrscheinlichen Kommandos für die Anforderung sind
2. Kommandos hexadezimal ausprobieren und nachsehen, was heaxadezimal zurückkommt
3. Interpretation verändern.

LG

pah

heikoh81

Also ohne Hilfe komme ich hier nicht weiter, da ich mit der HEX-Logik nicht vertraut bin.
Vielleicht liest yuhu (Roland) noch mit, er hatte weiter vorne angeboten, bei der Erstellung der .csv behilflich zu sein.
Alzu viel kann nicht mehr fehlen - immerhin habe ich schon die Außentemperatur im Minutentakt in FHEM, jetzt wären die anderen Systemwerte meiner Heizung auch noch toll.

yuhu

Hallo heikoh81,

auf welcher Version von ebusd bist du nun unterwegs?

Du kannst einmal folgendes Testen.

aktuelle Version (0.5.0): ebusctl write -h 08b509030d7600
davor wäre es: hex 08b509030d7600

Das müsste wenn es stimmt die Aussentemperatur + Fühlerstatus für dein Gerät mit Ident BAI00 zurück liefern.

Kurz zum Aufbau (auch wenn es eine gute Spezifikation gibt)

QQ...ff - Absenderadresse von ebusd ergänzt (default 0xff)
ZZ...08 - Zieladresse
PB...b5 - Primär Befehl - b5 steht hier für Vaillant
SB...09 - Sekundär Befehl - Vaillant spezifisch
NN...03 - Anzahl Datenbytes im Master Telegramm
D1...0d - Tertitär Befehl - Vaillant spezifisch
D2...76 - der Datenpunkt als HEX (118)
D3...00 - der Datenpunkt als HEX (118)
CRC...wird von ebusd über QQ bis D3 berechnet und ergänzt. -->> Bei Broadcast wäre hier Schluss

ACK... Anwort vom Slave (00..OK, FF..NOK) an den Master. -->> Bei einem Master-Master Telegramm wäre hier Schluss

NN...0x - Anzahl Datenbytes in der Slave Antwort
Dx... Daten
CRC...über NN und DX vom Slave
ACK...Anwort vom Master  (00..OK, FF..NOK) an den Slave




heikoh81

Ich kann sowohl 0.5 beta2 als auch rev.1993 verwenden.
Probeweise habe ich 0.5 beta laufen lassen, dann ebusctl, dann write -h 08b509030d7600
--> command not found

Mein Problem ist, dass mir die von dir genannte Doku leider überhaupt nichts sagt.
Bei den Hex-Codes steige ich leider aus.

Prof. Dr. Peter Henning

@yuhu: Kann ich nicht bestätigen. Meine Therme (nicht die Kontrollstation) hat auch die ID BAI00 und liefert als Wert des Registers 7600 sechs Byte zurück: 0339fcaa3b

Das ergibt in keiner Darstellung die aktuelle Außentemperatur von 4,94 Grad Celsius

LG

pah

amunra

#98
Hallo heikoh81

1) starte ebusd
2) Falls du eBusd mit Parameter -f gestartet hast, dann starte eine neue Terminal-Sitzung
3) gebe anschließend ein: ebusctl write -h 08b509030d7600 (wenn eBusd nicht abstürzt, dann bekommst du auch ein Ergebnis)

Den Wert "08b509030d7600" kannst du dann in die Konfig übertragen (ebus Version 0.3).
Das sieht dann in etwa wie folgt aus (Analog dazu muss das in die 0.5 Konfig übertragen werden):

get;BAI00;AussentemperaturFuehlerstatus;Aussentemperatur;MS;08;B509;3;0D7600;2;temp;sd;1,2;d2c;1.0;°C;-;Temperatur;sensor;sd;3;uch;-;-;-;Fühler;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Command über ebusd: get BAI00 AussentemperaturFuehlerstatus

Alles ungetestet - das ist nur ein Beispiel.
VG Arthur

yuhu

Zitat von: Prof. Dr. Peter Henning am 26 Dezember 2014, 21:28:16
@yuhu: Kann ich nicht bestätigen. Meine Therme (nicht die Kontrollstation) hat auch die ID BAI00 und liefert als Wert des Registers 7600 sechs Byte zurück: 0339fcaa3b

Das ergibt in keiner Darstellung die aktuelle Außentemperatur von 4,94 Grad Celsius

Schlecht. Statt 7600 mal folgende Register testen.

1600
1700
1800
0200 müsste ein Druck sein
6B00

amunra

Hallo Roland,

haben meine Infos geholfen - laut KNX Forum schon?
Ich habe verstanden - fix kommt - kann ich sonst noch unterstüzen (fehlen noch Infos)?
VG Arthur

yuhu

Wir arbeiten daran und im Moment sind keine weiteren Infos notwendig. Ich hoffe, dass ebusd bald stabil wird.

Ich selbst teste auf einem Raspberry Pi und einem ProLiant MicroServer.

Schade dass die GPIO Pins vom Raspberry nicht für eine Anbindung an den ebusd reichen. Sonst hätte ich schon einen 2. Adapter.


amunra

Zitat von: yuhu am 26 Dezember 2014, 21:41:34
Schlecht. Statt 7600 mal folgende Register testen.

1600
1700
1800
0200 müsste ein Druck sein
6B00
Bei meiner Therme ID BAI00 bekomme ich mit dem command (ebusd 0.5.0): ebusctl write -h 08b5040100
als result:
0a0352250227120614c003a2
mein Deamon, kurze Zeit später gestartet, sagt dazu:
10 8 b5 4 1 0 3d 0 a 3 48 28 2 27 12 6 14 c0 3 1c 0
[START]_________________________________________________________________
Name:00 = no receiption,01 = receiption,02 = synchronized,03 = data valid Value: 3
Name:seconds Value: 48
Name:minutes Value: 28
Name:Hours Value: 2
Name:day Value: 27
Name:month Value: 12
Name:weekday Value: 6
Name:year Value: 14
Name:Außentemperatur Value: 3.8 °C
[ENDE]__________________________________________________________________

VG Arthur
P.S. Mit dem Command (ebusd 0.5.0):ebusctl write -h 08b50400 bekomme ich die Außentemperatur inkl. Fühlerstatus auch (siehe dazu Spezifikation/Doku).

Prof. Dr. Peter Henning

Hm, man kann natürlich die Außentemperatur auch in der Therme abfragen. Allerdings ist es performanter, sie aus den zyklischen Messages auf dem Bus zu übernehmen. Dafür gibt es es zwei Möglichkeiten:

Aus dem Broadcast
10 FE B516 01, gefolgt von 2 Byte Temperatur als D2B

Aus der Mitteilung von Zeit, Datum, Außentemperatur an die internen Module meiner VRS620, z.B. den 1. Heizkreis
10 26 B505 00, IGN:1;BTI;HDA;D2B

Wenn ich die Außentemperatur aktiv abfrage, sehe ich ebenfalls in der Kontrollstation nach:
15 B509 03 0D 0100 => 03=Anzahl Bytes 2800 00=Status OK 3f=CRC
Die 2800=dezimal 2*16+8 = 40.  Divider ist 16, also 40:16 = 2,5 Grad Celsius => stimmt.

Von den internen Registern der VRS620 (Adresse 15, dann B509 05) habe ich 144 (0000 bis 8f00) getestet, 19 sicher identifiziert und bei ca. 10 weiteren zumindest einen Schimmer, was sie bedeuten können.

Die Abfragebefehle B504 sind allerdings effizienter, weil sie jeweils mehrere Register als Datengruppe zurückliefern. Davon habe ich 48 identifiziert
Ferner 30 Schreibbefehle B505 und 15 zyklische Nachrichten auf dem Bus

Die Therme (VC226 ecoTec exclusiv mit der ID BAI00 und der Adresse 08) habe ich bisher im Wesentlichen in Ruhe gelassen, da haben wir jetzt als Register
08b509030d 7600 => 03 39fcaa 3b unverändert seit gestern 
08b509030d 1600 => 03 410755 8c
08b509030d 1700 => 03 11ffaa b3
08b509030d 1800 => 03 c40100 d4
08b509030d 0200 => 03 310600 0e
08b509030d 6B00 => 03 e3ffaa 95

Das Ganze während einer kurzen Schlafpause um 04:15 morgens. Sehen wir mal, was sich daran ändert. Gute Nacht.

LG

pah

amunra

Zitat von: Prof. Dr. Peter Henning am 27 Dezember 2014, 04:59:12
Die Therme (VC226 ecoTec exclusiv mit der ID BAI00 und der Adresse 08) habe ich bisher im Wesentlichen in Ruhe gelassen, da haben wir jetzt als Register
08b509030d 7600 => 03 39fcaa 3b unverändert seit gestern 
08b509030d 1600 => 03 410755 8c
08b509030d 1700 => 03 11ffaa b3
08b509030d 1800 => 03 c40100 d4
08b509030d 0200 => 03 310600 0e
08b509030d 6B00 => 03 e3ffaa 95

Im Moment kann ich nur die Werte aus meiner Therme beisteuern - vielleicht hilft es:

08b509030d 7600 => 03 1d0000 e7 Wert gestern: 03 4b0000 b2
08b509030d 1600 => 03 a90200 c1
08b509030d 1700 => 03 650200 b6
08b509030d 1800 => 03 e90300 ea
08b509030d 0200 => 03 ee0900 3c
08b509030d 6B00 => 03 e3ffaa 95


VG Arthur