Modbus configuration for NIBE S series heatpumps

Hi Everyone, just to let you know I have tried the beta of the upcoming nibe integration for my S1255.

Works ok with a few tweaks needed. The integration has over 1000 entities as it covers the most of the nibe range so its a lot time to to go through each entitiy and check what is works for my specific model.

Still have not gone through all of them but this is what i have so far.

Some entities like the “More Hot Water” is a slider with a range of -128 to +127 where as on the MyUplink app its a simple on off switch.

It sort of works if you slide it all the way to +127.

Offset works well and for some functions like Hot Water Demand Mode its a slider but will figure a way to make them into buttons.

How did you get the offset to work with negative values? I have script sending offset values with buttons both increase and decrease function. Positive values works fine, but going negative will return error: Error while executing automation automation.decrease_offset_curve: value must be at least 0 @ data[‘value’][0]
I dont understand where the at least 0 is coming from.

script:
  alias: Nibe_heating_curve
  fields:
    offset:
      description: Heat Curve offset
      default: 0
      example: 0
  sequence:
    - service: modbus.write_register
      data:
        address: 30
        slave: 1
        value: "{{ offset }}"
        hub: Nibe
  mode: single

That comes with the integration which is now available for S series pumps.

Try in your automation 0.0. All values should have a decimal.

That’s if you don’t want the integration. The integration was released today with the update.

Hi Everyone, there is a new thread now for those who have installed the Nibe integration to control S series pumps.

You can find it here: https://community.home-assistant.io/t/discussions-about-nibe-s-series-and-the-integration/499985

1 Like

Hello,
We’ve stil got an SMO40 with a S2125 heatpump. The code from above i use to read some values. I also want to change the room setpoint and the More WarmWater function. This last both options I can’t get stil working. Read out things is working. The list with registers I verified and changed at some points. I have the registerlist from the SMO by the USB stick.
But i stil get an Modbus error:
Pymodbus: NIBE S2125: Exception Response(132, 4, IllegalFunction)
Is there anyone who knowes where i need to check thing?

I still found the cause of the Error. There was an register which wasn’t give the right answer. Now i found the right registernumber for the suction gas value and the problem is solved.

1 Like

Does anyone know how you change the set point for the room sensor on a S320?

993d6bde8ffe440ffbd91715fa3db06669c563b2_2_229x250

I’ve got a sensor called “number.room_sensor_set_point_value_climate_system_1_40207” but the value does not correspond to value in the image above.

I would guess something like number.external_adjustment_with_room_sensor_climate_system_1_40056_2.
This shows for my nibe smo s40.I am not using room thermostat so i can not test it.

I have a Nibe S1255-6PC with an RMU S40 room thermostat.
In this thread I have found several registers that seem to work fine, but I don’t get the RMU S40 temp. working.
I’m using register 116 as found above in this thread with following settings:

      name: "Room Temperature"  # BT50
      unique_id: "room_temperature_bt50"
      unit_of_measurement: "°C"
      data_type: int16
      device_class: temperature
      address: 116  # 116 for RMU S40, 26 for BT50
      input_type: input  # R
      scale: 0.1
      precision: 1
      state_class: measurement
      slave: 1

I always seem to get a value of -3276.8 which is exactly scaled 0.1 of minimum value for iint16 which is -32768.
When I try to swap: byte, I get a positive value of 12.8 degrees Celcius, but this is not correct since the real temp is somewhere between 19 and 20 degrees.

Can anyone see what I’m missing here?

I have some issues getting the current showing for different phases. It seems the config is a multitude off. Does anyone have this working?
image

And the sensor config:

      - name: "Nibe Current Phase 2" 
        unique_id: "nibe_current_be2"
        unit_of_measurement: "A"
        data_type: uint32
        device_class: current
        address: 48
        input_type: input
        scale: 0.1
        precision: 1
        state_class: measurement
        slave: 1

@ShadowArm I had the same thing. You need to swap the values like below, also you need to read 2 registers (that’s why they are two apart from each other:

      - name: "Current Phase 1"  # BE1
        unique_id: "current_be1"
        unit_of_measurement: "A"
        data_type: uint32
        count: 2
        swap: word
        device_class: current
        address: 50
        input_type: input  # R
        scale: 0.1
        precision: 1
        state_class: measurement
        slave: 1
      - name: "Current Phase 2"  # BE2
        unique_id: "current_be2"
        unit_of_measurement: "A"
        data_type: uint32
        count: 2
        swap: word
        device_class: current
        address: 48
        input_type: input  # R
        scale: 0.1
        precision: 1
        state_class: measurement
        slave: 1
      - name: "Current Phase 3"  # BE3
        unique_id: "current_be3"
        unit_of_measurement: "A"
        data_type: uint32
        count: 2
        swap: word
        device_class: current
        address: 46
        input_type: input  # R
        scale: 0.1
        precision: 1
        state_class: measurement
        slave: 1

Do you happen to have a RMU S40 and get it showing a working temp?

Hi,

Thank you, I will test this out today!

I actually have a VVM S320. It should have same addresses for the phases and I have working sensors for temperatures and compressor frequency.

@ArnoPW were you ever able to get the RMU S40 room temperature? I’m struggeling with the same problem.

Yes, I may have overlooked earlier, but in the official integration I find the room temperature is available under:
sensor.room_average_temp_clim_system_1_bt50_30117

I haven’t however found the relative humidity.

Unfortunately it does not work for me, it returns status “Unknown”.
I’ve reinstalled HA with the latest version…

I was able to get the room temperature and humidity via myUplink integration.
Not the preferred way, but …

Has anyone managed to set the degree minutes to a negative value? It appears to work correctly setting it as a positive value, but set it to a negative value and it changes to 0.

I will change the Room Setpoint by Modbus for our S2125 (with SMO040). I can read the current setpoint at input 2505. How can I change that value?

@cybermaus. How did you manage to get the different values showed? I only get “unknown”!


When i use the Nibe heat pump add-on i get the different value. Anyone who knows how to troubleshoot this one?

Hi everybody,

Im on the latest Firmware of Nibe F2120 and latest HA. Somehow writing registers is not working as expected. I takes very long to take effect (aprox 10min.). I tested writing with another server app and it was instantaneous. Is there some caching in HA going on? I set the log of modbus to debug but there is just no output. Do you experience anything alike?

Thanks, Marco