Hauptmenü

Kermi und Modbus

Begonnen von Fistandantilus, 01 Oktober 2024, 13:50:29

Vorheriges Thema - Nächstes Thema

Fistandantilus

Hallo zusammen,

ich habe eine Kermi x-change 16 awe Wärmepumpe und möchte diese per ModBus TCP einbinden. Der Support hat mir den ModBus bereits freigeschaltet, was erst mal Grundvoraussetzung war.
Die Verbindung selbst steht, aber ich komme mit dem Auslesen der Register nicht weiter. Die vorliegenden Infos sind im Anhang.

Ich habe jetzt versucht z.B. die Außentemperatur auszulesen:

attr Kermi obj-h1504-reading Außentemperatur
Das scheint aber nicht zu passen, im Log sehe ich dann folgende Infos:

2024.10.01 13:32:13 5: Kermi: Send called from ProcessRequestQueue
2024.10.01 13:32:13 5: DevIo_SimpleWrite Kermi: 001400000006030305e00002
2024.10.01 13:32:13 5: Kermi: readFn buffer: 001400000003030302 mode master, expect response
2024.10.01 13:32:13 5: Kermi: ParseFrameStart called from ReadFn protocol TCP expecting id 3
2024.10.01 13:32:13 4: Kermi: ParseFrameStart (TCP, master) extracted id 3, fCode 3, tid 20, dlen 3 and potential data 02
2024.10.01 13:32:13 5: Kermi: HandleResponse called from ReadFn
2024.10.01 13:32:13 5: Kermi: HandleResponse is now creating response hash, masterHash is HASH(0x8134d80)
2024.10.01 13:32:13 5: Kermi: HandleResponse is now calling ParseResponse, masterHash is HASH(0x8134d80)
2024.10.01 13:32:13 5: Kermi: ParseResponse called from HandleResponse, fc 3
2024.10.01 13:32:13 5: Kermi: ParseResponse got 9 but expecting 11 bytes
2024.10.01 13:32:13 4: Kermi: ParseResponse got short but valid frame. set allowShortResponses to allow
2024.10.01 13:32:14 3: 192.168.1.172:502 disconnected, waiting to reappear (Kermi)
2024.10.01 13:32:14 5: HttpUtils url=http://192.168.1.172:502/ NonBlocking via http
2024.10.01 13:32:14 4: IP: 192.168.1.172 -> 192.168.1.172
2024.10.01 13:32:14 5: Kermi: ResetExpect for DoOpen from response to idle
2024.10.01 13:32:14 5: Kermi: DropBuffer for DoOpen clears the reception buffer with 001400000003030302
2024.10.01 13:32:14 3: 192.168.1.172:502 reappeared (Kermi)
2024.10.01 13:32:14 4: Kermi: UpdateTimer called from OpenCB with cmd start sets timer to call update function in 29.4 sec at 13:32:43.546, interval 30
2024.10.01 13:32:15 3: Kermi: Timeout waiting for a modbus response, read buffer empty, id 3, fCode 3, tid 20,
request: id 3, read fc 3 h1504, len 2, tid 20, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 2.25 secs ago, sent 2.00 secs ago


Ansonsten habe ich noch aus einer anderen Konfig folgendes drin stehen:

dev-h-defLen 2
dev-h-defPoll 1
dev-h-defUnpack N

Wäre für Eure Hilfe sehr dankbar :)
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Ich habe auch nochmal Register 1504 umgewandelt in Dezimal, vielleicht is es ja in Hex angegeben, aber kein Erfolg. Folgendes Log mit beiden Varianten:

024.10.01 14:52:02 5: Kermi: UpdateSetList: setList=reconnect:noArg saveAsModule createAttrsFromParseInfo interval reread:noArg stop:noArg start:noArg close:noArg scanStop:noArg scanModbusObjects sendRaw inactive active
2024.10.01 14:52:02 5: Kermi: UpdateSetList: getList=
2024.10.01 14:52:12 4: Kermi: GetUpdate (V4.5.6 - 7.11.2023) called from ControlSet
2024.10.01 14:52:12 5: Kermi: CreateUpdateHash full object list: h1504 h5380
2024.10.01 14:52:12 5: Kermi: CreateUpdateHash will request h1504 len 2 Außentemperatur
2024.10.01 14:52:12 5: Kermi: CreateUpdateHash will request h5380 len 2 Außentemperatur
2024.10.01 14:52:12 4: Kermi: CombineUpdateHash objHash keys before combine: h5380,h1504
2024.10.01 14:52:12 5: Kermi: CombineUpdateHash tries to combine read commands
2024.10.01 14:52:12 5: Kermi: CombineUpdateHash keys are now h5380,h1504
2024.10.01 14:52:12 4: Kermi: GetUpdate will now create requests for h1504 len 2 (Außentemperatur), h5380 len 2 (Außentemperatur)
2024.10.01 14:52:12 4: Kermi: DoRequest called from GetUpdate created new request, read buffer empty, id 4, fCode 3, tid 231,
request: id 4, read fc 3 h1504, len 2, tid 137, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2)
2024.10.01 14:52:12 5: Kermi: QueueRequest called from DoRequest with h1504, qlen 0 from master Kermi through io device Kermi
2024.10.01 14:52:12 5: Kermi: StartQueueTimer called from QueueRequest sets internal timer to process queue in 0.000 seconds
2024.10.01 14:52:12 4: Kermi: DoRequest called from GetUpdate created new request, read buffer empty, id 4, fCode 3, tid 231,
request: id 4, read fc 3 h5380, len 2, tid 126, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2)
2024.10.01 14:52:12 5: Kermi: QueueRequest called from DoRequest with h5380, qlen 1 from master Kermi through io device Kermi
2024.10.01 14:52:12 5: Kermi: ProcessRequestQueue called from Fhem internal timer as queue:Kermi, qlen 2, request: request: id 4, read fc 3 h1504, len 2, tid 137, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 0.03 secs ago
2024.10.01 14:52:12 5: Kermi: checkDelays commDelay, last communication with same device was 16.286 secs ago, required delay is 0.1
2024.10.01 14:52:12 5: Kermi: checkDelays sendDelay, last send to same device was 16.294 secs ago, required delay is 0.1
2024.10.01 14:52:12 5: Kermi: checkDelays clientSwitchDelay is not relevant
2024.10.01 14:52:12 5: Kermi: checkDelays busDelayRead is not required
2024.10.01 14:52:12 4: Kermi: ProcessRequestQueue (V4.5.6 - 7.11.2023) qlen 2, sending 008900000006040305e00002 via 192.168.1.172:502, read buffer empty, id 4, fCode 3, tid 231,
request: id 4, read fc 3 h1504, len 2, tid 137, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 0.03 secs ago
2024.10.01 14:52:12 5: Kermi: Send called from ProcessRequestQueue
2024.10.01 14:52:12 5: DevIo_SimpleWrite Kermi: 008900000006040305e00002
2024.10.01 14:52:12 5: Kermi: StartQueueTimer called from ProcessRequestQueue sets internal timer to process queue in 1.000 seconds
2024.10.01 14:52:12 5: Kermi: readFn buffer: 008900000003040302 mode master, expect response
2024.10.01 14:52:12 5: Kermi: ParseFrameStart called from ReadFn protocol TCP expecting id 4
2024.10.01 14:52:12 4: Kermi: ParseFrameStart (TCP, master) extracted id 4, fCode 3, tid 137, dlen 3 and potential data 02
2024.10.01 14:52:12 5: Kermi: HandleResponse called from ReadFn
2024.10.01 14:52:12 5: Kermi: HandleResponse is now creating response hash, masterHash is HASH(0x8134d80)
2024.10.01 14:52:12 5: Kermi: HandleResponse is now calling ParseResponse, masterHash is HASH(0x8134d80)
2024.10.01 14:52:12 5: Kermi: ParseResponse called from HandleResponse, fc 3
2024.10.01 14:52:12 5: Kermi: ParseResponse got 9 but expecting 11 bytes
2024.10.01 14:52:12 4: Kermi: ParseResponse got short but valid frame. set allowShortResponses to allow
2024.10.01 14:52:12 3: 192.168.1.172:502 disconnected, waiting to reappear (Kermi)
2024.10.01 14:52:12 5: HttpUtils url=http://192.168.1.172:502/ NonBlocking via http
2024.10.01 14:52:12 4: IP: 192.168.1.172 -> 192.168.1.172
2024.10.01 14:52:12 5: Kermi: ResetExpect for DoOpen from response to idle
2024.10.01 14:52:12 5: Kermi: DropBuffer for DoOpen clears the reception buffer with 008900000003040302
2024.10.01 14:52:12 3: 192.168.1.172:502 reappeared (Kermi)
2024.10.01 14:52:12 4: Kermi: UpdateTimer called from OpenCB with cmd start sets timer to call update function in 29.8 sec at 14:52:42.181, interval 30
2024.10.01 14:52:12 5: Kermi: StartQueueTimer called from OpenCB sets internal timer to process queue in 0.000 seconds
2024.10.01 14:52:12 5: Kermi: ProcessRequestQueue called from Fhem internal timer as queue:Kermi, qlen 1, request: request: id 4, read fc 3 h5380, len 2, tid 126, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 0.17 secs ago
2024.10.01 14:52:12 5: Kermi: checkDelays busDelayRead is not required
2024.10.01 14:52:12 5: Kermi: checkDelays clientSwitchDelay is not relevant
2024.10.01 14:52:12 5: Kermi: checkDelays sendDelay, last send to same device was 0.135 secs ago, required delay is 0.1
2024.10.01 14:52:12 5: Kermi: checkDelays commDelay, last communication with same device was 0.130 secs ago, required delay is 0.1
2024.10.01 14:52:12 4: Kermi: ProcessRequestQueue (V4.5.6 - 7.11.2023) qlen 1, sending 007e00000006040315040002 via 192.168.1.172:502, read buffer empty, id 4, fCode 3, tid 137,
request: id 4, read fc 3 h5380, len 2, tid 126, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 0.17 secs ago
2024.10.01 14:52:12 5: Kermi: Send called from ProcessRequestQueue
2024.10.01 14:52:12 5: DevIo_SimpleWrite Kermi: 007e00000006040315040002
2024.10.01 14:52:12 5: Kermi: readFn buffer: 007e00000003040302 mode master, expect response
2024.10.01 14:52:12 5: Kermi: ParseFrameStart called from ReadFn protocol TCP expecting id 4
2024.10.01 14:52:12 4: Kermi: ParseFrameStart (TCP, master) extracted id 4, fCode 3, tid 126, dlen 3 and potential data 02
2024.10.01 14:52:12 5: Kermi: HandleResponse called from ReadFn
2024.10.01 14:52:12 5: Kermi: HandleResponse is now creating response hash, masterHash is HASH(0x8134d80)
2024.10.01 14:52:12 5: Kermi: HandleResponse is now calling ParseResponse, masterHash is HASH(0x8134d80)
2024.10.01 14:52:12 5: Kermi: ParseResponse called from HandleResponse, fc 3
2024.10.01 14:52:12 5: Kermi: ParseResponse got 9 but expecting 11 bytes
2024.10.01 14:52:12 4: Kermi: ParseResponse got short but valid frame. set allowShortResponses to allow
2024.10.01 14:52:12 3: 192.168.1.172:502 disconnected, waiting to reappear (Kermi)
2024.10.01 14:52:13 5: HttpUtils url=http://192.168.1.172:502/ NonBlocking via http
2024.10.01 14:52:13 4: IP: 192.168.1.172 -> 192.168.1.172
2024.10.01 14:52:13 5: Kermi: ResetExpect for DoOpen from response to idle
2024.10.01 14:52:13 5: Kermi: DropBuffer for DoOpen clears the reception buffer with 007e00000003040302
2024.10.01 14:52:13 3: 192.168.1.172:502 reappeared (Kermi)
2024.10.01 14:52:13 4: Kermi: UpdateTimer called from OpenCB with cmd start sets timer to call update function in 28.4 sec at 14:52:42.181, interval 30
2024.10.01 14:52:14 3: Kermi: Timeout waiting for a modbus response, read buffer empty, id 4, fCode 3, tid 126,
request: id 4, read fc 3 h5380, len 2, tid 126, master device Kermi, reading Außentemperatur (getUpdate for Außentemperatur len 2), queued 2.17 secs ago, sent 2.00 secs ago
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Ich habe gerade mal mit QModMaster geschaut. Damit bekomme ich Werte geliefert. 177 entspricht aktuell 17,7 Grad Außentemperatur. Passt also.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Fistandantilus

Ich glaube ich habe es gelöst. ID musste 1 sein. Mit Len 1 und unpack n kommen jetzt erstmal Werte, die ich noch formatieren muss, sieht denke ich aber ok aus.

Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage