Stiebel Eltron ISG (Slave responsed with error=2)

  • Platform information:
    • OS: debian 10
    • Java Runtime Environment: docker image
    • openHAB version: 3.1.0
    • ISG version. 12.1.0
  • Issue of the topic: i cannot connect to ISG. I got the error " Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveErrorResponseExceptionImpl: Slave responsed with error=2". The TCP Modbus is online with default parameters.

UID: modbus:tcp:1fcbeb88fd
label: Modbus TCP Slave
thingTypeUID: modbus:tcp
configuration:
rtuEncoded: false
timeBetweenTransactionsMillis: 60
connectMaxTries: 3
reconnectAfterMillis: 0
port: 502
timeBetweenReconnectMillis: 0
host: xxx.xxx.xxx.xxx
connectTimeoutMillis: 30000
id: 1
enableDiscovery: false

UID: modbus:heatpump:1fcbeb88fd:139079e891
label: StiebelEltron
thingTypeUID: modbus:heatpump
configuration:
refresh: 60
maxTries: 10
bridgeUID: modbus:tcp:1fcbeb88fd

18:42:25.467 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=500, length=36, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 1f5321fc-0fd1-4748-baa9-208c4aea01fb]
18:42:25.530 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=500, length=36, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 1f5321fc-0fd1-4748-baa9-208c4aea01fb]
18:42:25.592 [ERROR] [ort.modbus.internal.ModbusManagerImpl] - Last try 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=500, length=36, maxTries=3]). Aborting. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 1f5321fc-0fd1-4748-baa9-208c4aea01fb]
18:42:25.656 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=3500, length=16, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 35351b00-de66-4713-8537-a8d3a4f0543f]
18:42:25.734 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=3500, length=16, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 35351b00-de66-4713-8537-a8d3a4f0543f]
18:42:25.797 [ERROR] [ort.modbus.internal.ModbusManagerImpl] - Last try 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=3500, length=16, maxTries=3]). Aborting. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID 35351b00-de66-4713-8537-a8d3a4f0543f]
18:42:25.862 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_MULTIPLE_REGISTERS, start=1500, length=11, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID b35cee45-9ea3-4042-90dc-3ffd1f25eac6]
18:42:25.924 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_MULTIPLE_REGISTERS, start=1500, length=11, maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 2 [operation ID b35cee45-9ea3-4042-90dc-3ffd1f25eac6]

i have created a pooler and it can read register from ISG

18:48:57.807 [DEBUG] [dbus.handler.ModbusPollerThingHandler] - Thing modbus:poller:760fc1a197:4b8e348131 received response PollResult(result=AsyncModbusReadResult(request = ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=1, length=1, maxTries=3], registers = ModbusRegisterArray(00D2)))
18:49:02.813 [DEBUG] [dbus.handler.ModbusPollerThingHandler] - Thing modbus:poller:760fc1a197:4b8e348131 received response PollResult(result=AsyncModbusReadResult(request = ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_INPUT_REGISTERS, start=1, length=1, maxTries=3], registers = ModbusRegisterArray(00D2)))

Look at Stiebel ISG modbus register list and compare it with your device. I had a look on binding and one of heat pumps combined with ISG I recently got access.
ISG runs fairly long list of registers which allows you to combine multiple Stiebel products. I found that ISG binding currently does scan a small subset of available registers. To me they look specific to WPM 3 or WPM 3i but not to WPM System. I don’t know exact differences between these products coming from Stiebel, yet pay attention if you have a compatible controller in first place.

For sake of test you can try following. Install mbpoll utility and run below:

mbpoll -v -1 -t 3 -r 501 -c 108 192.168.0.126
mbpoll -v -1 -t 4 -r 1501 -c 21 192.168.0.126
mbpoll -v -1 -t 3 -r 2501 -c 47 192.168.0.126
mbpoll -v -1 -t 3 -r 3501 -c 125 192.168.0.126
mbpoll -v -1 -t 3 -r 3625 -c 125 192.168.0.126
mbpoll -v -1 -t 4 -r 4001 -c 2 192.168.0.126

This will give you outputs available from ISG for heat pumps. Out of these you can figure out what you can scrap. Then you can simply switch to raw modbus binding and retrieve data yourself. It will be a bit harder to manage, but it will give you a full flexibility.

According to Stiebel registry list, binding currently tries to fetch following registers:
503-508, 510, 513, 516
522-223, 536
1501-1503, 1510-1511
3501-3505, 3511-3516

Best,
Łukasz