Modbus configuration for NIBE S series heatpumps

Thanks, that I have and posted on this thread a while ago.

For me it was about writing to the registers that’s a challenge. For example, how did you if you did write to the offset which is a slider from -10 to +10?

I don’t use slider, I use direct command like this. This change offset to +2.

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?