Modbus binding - lots and lots of Things. Is this correct?

Since the Nibe bindings doesn’t work with the Nibe heat pumps in the S-series, I’m trying to use the modbus binding instead. It seems to work quite well, but I’m not sure if I’m doing something wrong or if this is what to expect:

  1. If I try to create a poller Thing spanning several input registers where one ore more of them isn’t in use in the heat pump (for example register 6 and 8 in my example below), I will get an error. If this is correct, I vill have to create poller Things for each input register or small groups of registers without gaps.

  2. For each data item that I want to fetch, I have to create another data Thing. This might not be a problem but I guess I will end up with a large number of things and of course corresponding Items.

It’s what’s to be expected.
Just create those things you are interested in.

Hi
I‘m currently trying to connect my S1155 through Modbus over Openhab.

I startet with NodeRed where the connection works quiet well.

But now in Openhab there is always a config error when trying to create a read request.

Would you be so kind to share one modbus thing here!?

Three things to get this working to read current outdoor temperature (BT1) from my S1155:

UID: modbus:tcp:82e63e5f78
label: Nibe S1155, Modbus TCP Slave
thingTypeUID: modbus:tcp
configuration:
  rtuEncoded: false
  connectMaxTries: 1
  reconnectAfterMillis: 0
  timeBetweenTransactionsMillis: 60
  port: 502
  timeBetweenReconnectMillis: 0
  connectTimeoutMillis: 10000
  host: 192.168.1.252
  id: 1
  enableDiscovery: false
location: Main Building
UID: modbus:poller:93ca22656b
label: Input register 1-5
thingTypeUID: modbus:poller
configuration:
  length: 5
  start: 1
  refresh: 60000
  maxTries: 3
  cacheMillis: 50
  type: input
bridgeUID: modbus:tcp:82e63e5f78
UID: modbus:data:93ca22656b:a9635e8aa8
label: Aktuell utetemperatur (BT1)
thingTypeUID: modbus:data
configuration:
  readValueType: int16
  readTransform: default
  writeTransform: default
  readStart: "1"
  updateUnchangedValuesEveryMillis: 1000
  writeMultipleEvenWithSingleRegisterOrCoil: false
  writeMaxTries: 3
bridgeUID: modbus:poller:93ca22656b


Sorry I havn‘t got a notification for your reply…

Thank you very much for this example!

I did set this up with my S1256, modbus configuration worked following your example, but tempartures seems to be 69 instead of 6,9. How did you manage that?

I did use the Modbus gain profile and added 0.1 to get the factor right but item now holds value 7 instead of 6.9 and I really would like to show 6.9.

As I guess you have figured out, I use a transformation on the modbus Thing (see screen shot) but why did you add 0.1?

To fix the presentation I use a state description on the Item: %.1f °C

Thanks alot, that really helped and the gain where the sam for you and me i put 0.1 in Gain and then added unit lik you have so now it seem to work.

What I really would like to do is to use an average indoor and outdoor temperature from other sensors to be used as valus for heatpumps own logic but I assuem that’s gonna be hard.

I haven’t done much more except adding a possibility to adjust the heating curve like +1, +2 etc, mainly to verify that writeback of values to the heat pump works. Actually that was quite useful, or at least i saves me from going down to the basement to adjust if it’s too cold, but doing more advanced stuff is probably possible but I’m not there yet.

I have an additional installation in another building with radiators in the basement, under-floor heating in the rest of the house, and fan-coil units for add-on heating during really cold winter days and cooling during the summer. It would really benefit from more intelligent automation so please let me know if you come up with something useful :grinning:

Hi

Can you please post your writing example for writing a new curve to heatpump, I guess that you put your new curve into ID26? I canä’t see any place where one could write indoor or outdoor temperature to heatpump. So logic will need to be completley outside of the heatpump. There is some good examples around here. But I need to know how to successfully write to heatpump.

I’m using register 30 to offset the curve.

Use type “holding register” instead of input register on the Regular Poll Thing (interval 60000, start 30, length 1).

On the Thing for modbus data, use read and write adress 30, read value type “16 bit signed integer (int16)”, write type “holding register” , transform “default”, and write value type “16 bit positive or negative integer, 1 register (int16, uint16)”