Discussions about Nibe S-series and the integration

It depends what you are after,

I am happy to share the entities I use. This is what my setup looks like for my S1255-6

1 Like

That looks like a good start. Had worked out a couple of those entities, but not all. Please could you share code for the card?

A couple of things that would be particularly useful that I can’t find at all:

  1. Setting “away mode” on and off
  2. Adjusting that main thermostat (climate system 1 or BT50 in my case)

Also, I understand that there is a way to toggle the SG interface switches (ie: the aux functions) through the modbus, but can’t work that one out. Found the tech info here:

but not sure how to instigate it.

1 Like

And I am curious, is there anyone who has managed to get the energy input from an S1255? I can see some of you can get it from S2125. But there seems to be a problem with the S1255. I can see the energy in the display, but it does not seem to be in a MODBUS-register.

I am also interested in that

For the S1155 PC it seems that BT25 is not working (unknown) and BT71 is missing.
Would it be possible to manually add these next to the normal Nibe integration?

The integration has failed after I upgraded the Nibe firmware on my VVM S320 to 2.22.6 yesterday ( https://www.nibe.eu/webdav/files/myuplink_changelog/nibe-n.pdf )

I get the following error

2023-10-21 09:02:44.072 ERROR (MainThread) [homeassistant.components.nibe_heatpump] Unexpected error fetching Nibe Heat Pump data: Failed to decode temperature-overload-pool-40001 coil from raw: 0000, exception: Raw value 0 is out of range for coil temperature-overload-pool-40001

Anyone else seeing this?

Replying to myself - the issue has already been reported. More info here [Errno 104] Connection reset by peer and [Errno 111] Connect call failed after updating heat pump to 2.22.6 · Issue #102385 · home-assistant/core · GitHub

@toem I had that issue too. I added the device again to the integration (you have to enter the hostname / ip address again) and everything came back. Actually, more entities seem to work now.

A bit echoey in here


I have an s1155. Tons of entities are available for it, but there are two really basic things that I would like to do, which I don’t seem to be able to do with any of these entities.

  1. Set “away” mode on or off.
  2. Change the set point value of my climate system (ie turn up or down the one room thermostat that my system has).

It seems incredible to me that it is not possible to do these two things.

If anybody has had any luck doing these two things with any system, please tell me the entity names.

There has been a lot of mention how to obtain the full list available modbusbus registers by Nibe heat pump model. If you don’t have the heat pump (yet, like me) you can find a recent list in the Nibe linbrary on github (thank you yozik04): Nibe modbus registers by heat pump model

This may also help to discover why some registers don’t work for your model. At the time of writing this list was updated 2 months ago for the model I’m expecting by the end of this year (S1255PC). In particular I will be interested to see whether register 2291 is available for COP calculations (mentioned above). This register is not in the list for S1255PC (nor S2125) so it may not be complete.

Thank you. I have seen these Modbus Registers before and I can spot the entities that should do what I want, but for some reason, some of them just don’t work - settings at the heat pump don’t change when you change them in HA. Other entities (fan speed, hot water demand, operating mode for example) work fine and I can control them through HA.
Oh well, guess I’m at a dead end and will have to pay to renew the premium NIBE app to allow me control away from home (how stingy is that of NIBE? Only paid thousands of pounds for a HP that geos wrong every time I do a firmware update, and they still want more money
)

I’m hoping there is someone in this topic who could help me with a script for the following.

I have an S2125 with a VVMS320 connected to HA via modbus. Recently entities/sensors for energy usage and production have appeared, such as these:

sensor.energy_log_energy_used_for_heat_during_past_hour_32292
sensor.energy_log_energy_produced_for_heat_during_past_hour_32284

Now I have been able to calculate the COP based on those, but the only thing is that these sensors log per hour and this means that I only get the COP per hour and I would like to monitor per day/week/month/year to also get the sCOP. Can anyone help me with how I should script this?

Making some progress with my S1155. I can now adjust the main room thermostat set point through HA! Here’s how I did it, if it’s of any use to anyone:

  1. Find the entity “switch.heating_connected_climate_system_1_40933”, enable it if it isn’t already and switch it on
  2. Find the entity “number.room_sensor_set_point_value_climate_system_1_40207”, enable it if necessary and add it to a card on your dashboard. Now you can use it to adjust your thermostat.

We just have one thermostat / room sensor, which is “climate_system_1”. Your system may be different of course and you’ll need to do the same for the relevant climate system/s.

Now I’m going to have a look at holiday mode and see if I can work that one out, knowing that it may be a two stage process.

The same happened to me and my SMO S40.
Any solution already at the horizon, also I cannot activate “word swap” as the item 5.3. isn’t available on the menu.
Cheers

Hi @wijsman and @alfabetagama

Thanks for your example config regarding the COP calculations. I have modified your code slightly to fit my S1155 unit. The utility meters are working fine (contains data). However the COP calulations are «unavailable».

Here®s my code in configuration.yaml (I®m quite new to this so the error might be obvious, sorry😜):

modbus:
  - name: "NibeS1155"
    type: tcp
    host: 192.168.1.104
    port: 502
    sensors:
      - name: "S1155 External Supply Temp BT25"
        unique_id: "nibe_s1155_ext_supply_temp_bt25"
        data_type: int16 # int8
        address: 39
        input_type: input # R/W
        scale: 0.1
        precision: 1
        state_class: measurement
        device_class: temperature
        unit_of_measurement: "C"
        slave: 1
        scan_interval: 30
      - name: "IN - Nibe S1155 used energy floorheat last hour"
        unique_id: "nibe_s1155_in_energy_heating"
        data_type: int16 # int8
        address: 2291
        input_type: input # R/W
        scale: 0.01
        precision: 2
        state_class: measurement
        unit_of_measurement: "kWh"
        slave: 1
        scan_interval: 900
      - name: "OUT - Nibe S1155 produced energy floorheat last hour"
        unique_id: "nibe_s1155_out_energy_heating"
        data_type: int16 # int8
        address: 2283
        input_type: input # R/W
        scale: 0.01
        precision: 2
        state_class: measurement
        unit_of_measurement: "kWh"
        slave: 1
        scan_interval: 900
      - name: "IN - Nibe S1155 used energy hot water last hour"
        unique_id: "nibe_s1155_in_energy_hot_water"
        data_type: int16 # int8
        address: 2293
        input_type: input # R/W
        scale: 0.01
        precision: 2
        state_class: measurement
        unit_of_measurement: "kWh"
        slave: 1
        scan_interval: 900
      - name: "OUT - Nibe S1155 produced energy hot water last hour"
        unique_id: "nibe_s1155_out_energy_hot_water"
        data_type: int16 # int8
        address: 2285
        input_type: input # R/W
        scale: 0.01
        precision: 2
        state_class: measurement
        unit_of_measurement: "kWh"
        slave: 1
        scan_interval: 900

template:
  - sensor:
      - name: "Nibe S1155 COP Total"
        unique_id: "nibe_s1155_cop_energy"
        unit_of_measurement: ""
        state: >
          {% set nibe_s1155_out_energy_cop = states('sensor.nibe_s1155_out_energy_heating') | float + states('sensor.nibe_s1155_out_energy_hot_water') | float %}
          {% set nibe_s1155_in_energy_cop = states('sensor.nibe_s1155_in_energy_heating') | float + states('sensor.nibe_s1155_in_energy_hot_water') | float %}

          {{ (nibe_s1155_out_energy_cop / nibe_s1155_in_energy_cop) | float | round(2) }}

  - sensor:
      - name: "Nibe S1155 COP Heating"
        unique_id: "nibe_s1155_cop_energy_heating"
        unit_of_measurement: ""
        state: >
          {% set nibe_s1155_out_heating = states('sensor.nibe_s1155_out_energy_heating') | float %}
          {% set nibe_s1155_in_heating = states('sensor.nibe_s1155_in_energy_heating') | float %}

          {{ (nibe_s1155_out_heating / nibe_s1155_in_heating) | float | round(2) }}
  - sensor:
      - name: "Nibe S1155 COP Hot water"
        unique_id: "nibe_s1155_cop_energy_hot_water"
        unit_of_measurement: ""
        state: >
          {% set nibe_s1155_out_hot_water = states('sensor.nibe_s1155_out_energy_hot_water') | float %}
          {% set nibe_s1155_in_hot_water = states('sensor.nibe_s1155_in_energy_hot_water') | float %}

          {{ (nibe_s1155_out_hot_water / nibe_s1155_in_hot_water) | float | round(2) }}

1 Like

Following this thread with excitement. I would like to have this one also for my S1155. I got the same status “Unavailable”. My HA knowledge is just building up so trying to learn step by step.

The sensors names that are refered to in the template sensor are probably named differently.
In my environment the

name: “Nibe S1155 COP Total”
unique_id: “nibe_s1155_cop_energy”

will result in a sensor entity sensor.nibe.s1155_cop_total instead of sensor.nibe_s1155_cop_energy.
So it seems a derivative of ‘name’ is used instead of ‘unique_id’ . Just have a look at the entity names in Settings-> Devices to find the correct names.

Also if the heatpump did not produce any heat or hot water in that hour, the in_energy values will be 0. And it seems a division by zero results in an ‘unavailable’ value.

1 Like

Thanks @mirakels,

That solved the issue. Is there a way to solve the «unavailable» value when no hot water produced last hour? Maybe the last recorded cop calulation could be shown instead of just «unavailable».

It would be really nice if you could share the code for that card - looks like youÂŽve got the most important entities configured nicely. Thanks :smiley:

@Cregeland thanks! Not all perfect, but you can find the code I used and shared on this thread

https://community.home-assistant.io/t/how-do-i-config-modbus-tcp-for-nibe-s1255/353874/86

1 Like