Modbus TCP binding with heatpump

Hi,
when I create a poll I get Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveErrorResponseExceptionImpl: Slave responded with error=2 (ILLEGAL_DATA_ACCESS)
my setup:
Bridge:
UID: modbus:tcp:492aca8f58
label: Modbus TCP Slave
thingTypeUID: modbus:tcp
configuration:
rtuEncoded: false
timeBetweenTransactionsMillis: 60
connectMaxTries: 1
reconnectAfterMillis: 0
port: 502
timeBetweenReconnectMillis: 0
host: 192.168.1.19
connectTimeoutMillis: 10000
id: 1
enableDiscovery: false
poll:
UID: modbus:poller:492aca8f58:a544477aec
label: Regular Poll
thingTypeUID: modbus:poller
configuration:
start: 1
length: 2
refresh: 1000
maxTries: 3
cacheMillis: 50
type: input
bridgeUID: modbus:tcp:492aca8f58

Bridge is shown as Online but trying several combinations for the poller with start,length and type I always get the error=2
I also have this specsheet of my heatpump

You are likely accessing a wrong modbus id or register.
Validate you are using the correct id.
Also check if you need to use a -1 offset like you do for many modbus devices.
(bridge online means little essentially just that the TCP connect worked)

1 Like

The good news is that you have the correct IP address and Modbus ID - the remote device is responding.
The bad news it is saying “No, I won’t do that”.

As @mstormi says, review your poller config - start address being odd or even numbers, length sometimes only supported in multiples of two or four, type of register is important, decimal or hex addresses confusion.

The code says 1 but the table says to use 241

you mean the ID from the bridge? Thought this has only identity reasons for OH

Wow it works! thank you - I will try now to write data

Good point. Something is responding on ID1 (maybe this is one of those devices with mutiple IDs e.g. 1 for admin and 241 for data)

one maybe basic thing: I now get 170 as value (Item is set to number:temp) but it should be 17.0
maybe this is a “,” and “.” thing as I am in Europe and we use comma decimal sign. how can I get the raw data what the poller is responding?

This is the raw data that you get unless you’ve applied a transformation which I guess you didn’t. I’d guess there should be some remark in your manufacturer’s doc stating the unit is tenth of. If so you should use a JS transformation to divide the raw value by 10 before assigning it to your item.
You can log:set debug org.openhab.binding.modbus in OH console to see all raw communication to confirm.

You should also step back from Modbus for a minute and revisit your understanding of OH as a whole system. Representation (, . etc) has nothing to do with Modbus. Misunderstandings about general OH concepts will lead to many more problems and frustration on everybody’s part.

Modbus - Bindings | openHAB
here is my problem listed - but thanks anyway for your help

The problem behind is the same; solution, too (a transformation) - just applied on a different level.

Hello @andy_k1 how did you solve it? I have the same error as you with a Tecalor ISG Plus Gateway and head pump THZ 5.5 eco I am using Port 502 and ID 1 as well.