Nibe Heat Pump integration is missing new model NIBE SVM S332

I just got the new model NIBE SVM S332 and when I try to integrate it with the modbus option (for s320 or s325 which in should have the same registers) I get an error.
I am attaching the document with the registers from Nibe (quick search for s332 will lead you to the right place).

Logger: homeassistant.components.nibe_heatpump
Source: components/nibe_heatpump/config_flow.py:192
integration: nibe_heatpump (documentation, issues)
First occurred: 22:21:45 (1 occurrences)
Last logged: 22:21:45

Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/config_flow.py", line 192, in async_step_modbus
    title, data = await validate_modbus_input(self.hass, user_input)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/config_flow.py", line 150, in validate_modbus_input
    await connection.verify_connectivity()
  File "/usr/local/lib/python3.13/site-packages/nibe/connection/modbus.py", line 174, in verify_connectivity
    await verify_connectivity_read_write_alarm(self, self._heatpump)
  File "/usr/local/lib/python3.13/site-packages/nibe/connection/__init__.py", line 103, in verify_connectivity_read_write_alarm
    await connection.write_coil(coil_data)
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 189, in async_wrapped
    return await copy(fn, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 111, in __call__
    do = await self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 153, in iter
    result = await action(retry_state)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/tenacity/_utils.py", line 99, in inner
    return call(*args, **kwargs)
  File "/usr/local/lib/python3.13/site-packages/tenacity/__init__.py", line 398, in <lambda>
    self._add_action_func(lambda rs: rs.outcome.result())
                                     ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.13/site-packages/tenacity/asyncio/__init__.py", line 114, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/nibe/connection/modbus.py", line 142, in write_coil
    result = await self._client.write_registers(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<3 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/async_modbus/core.py", line 233, in write_registers
    request = self.protocol.write_multiple_registers(
        slave_id, starting_address, values
    )
  File "/usr/local/lib/python3.13/site-packages/umodbus/client/tcp.py", line 223, in write_multiple_registers
    return _create_request_adu(slave_id, function.request_pdu)
                                         ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/async_modbus/umodbus_numpy.py", line 130, in request_pdu_registers
    return pack_16bits(self.function_code, self.starting_address, self._values)
  File "/usr/local/lib/python3.13/site-packages/async_modbus/umodbus_numpy.py", line 46, in pack_16bits
    values = numpy.array(values, dtype=dtype, copy=False)
ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.

Also attaching a list of the default registers exported from the machine.

Title	Register type	Register	Division factor	Unit	Size of variable	Min value	Max value	Default value	
Current outdoor temperature (BT1)	MODBUS_INPUT_REGISTER	1	10	°C	2	0	0	0
Supply line (BT2)	MODBUS_INPUT_REGISTER	5	10	°C	2	0	0	0
Return line (BT3)	MODBUS_INPUT_REGISTER	7	10	°C	2	0	0	0
Hot water top (BT7)	MODBUS_INPUT_REGISTER	8	10	°C	2	0	0	0
Hot water charging (BT6)	MODBUS_INPUT_REGISTER	9	10	°C	2	0	0	0
Roomsensor 1-1	MODBUS_INPUT_REGISTER	26	10	°C	2	0	0	0
Average temperature (BT1)	MODBUS_INPUT_REGISTER	37	10	°C	2	0	0	0
Flow sensor (BF1)	MODBUS_INPUT_REGISTER	40	10	l/m	2	0	0	0
-	MODBUS_INPUT_REGISTER	60	10	°C	2	0	0	0
-	MODBUS_INPUT_REGISTER	61	10	°C	2	0	0	0
-	MODBUS_INPUT_REGISTER	62	10	°C	2	0	0	0
-	MODBUS_INPUT_REGISTER	63	10	°C	2	0	0	0
-	MODBUS_INPUT_REGISTER	64	10	°C	2	0	0	0
-	MODBUS_INPUT_REGISTER	65	10	°C	2	0	0	0
Additional heat (BT63)	MODBUS_INPUT_REGISTER	72	10	°C	2	0	0	0
Degree minutes	MODBUS_HOLDING_REGISTER	11	10	DM	3	-30000	30000	0
Calculated supply climate system 1	MODBUS_INPUT_REGISTER	1017	10	°C	2	0	0	0
Power internal additional heat	MODBUS_INPUT_REGISTER	1027	100	kW	2	0	0	0
Operating mode internal add. heat	MODBUS_INPUT_REGISTER	1029	1		4	0	0	0
Return line (EB101-BT3)	MODBUS_INPUT_REGISTER	1475	10	°C	2	0	0	0
Supply line (EB101-BT12)	MODBUS_INPUT_REGISTER	1478	10	°C	2	0	0	0
Outdoor temperature (EB101-BT28)	MODBUS_INPUT_REGISTER	1621	10	°C	2	0	0	0
Evaporator (EB101-BT16)	MODBUS_INPUT_REGISTER	1622	10	°C	2	0	0	0
Heating medium pump speed (GP1)	MODBUS_INPUT_REGISTER	1636	1	%	4	0	0	0
Pressure sensor, condenser (EB101-BP4)	MODBUS_INPUT_REGISTER	1801	10	bar	2	0	0	0
Current compressor frequency (EB101)	MODBUS_INPUT_REGISTER	1803	10	Hz	2	0	0	0
Protection mode (EB101)	MODBUS_INPUT_REGISTER	1804	1		5	0	0	0
Requested compressor frequency (EB101)	MODBUS_INPUT_REGISTER	1854	1	Hz	4	0	0	0
Evaporator 2 (EB101-EP14-BT16)	MODBUS_INPUT_REGISTER	1966	10	°C	2	0	0	0
Alarm number	MODBUS_INPUT_REGISTER	1975	1		2	0	0	0
Flow sensor, hot water (BF4)	MODBUS_INPUT_REGISTER	2125	100	l/m	2	0	0	0
Pump speed (GP8)	MODBUS_INPUT_REGISTER	2136	1	%	4	0	0	0
Hot water out (BT38)	MODBUS_INPUT_REGISTER	2134	10	°C	2	0	0	0
Charge pump (GP8)	MODBUS_INPUT_REGISTER	2135	1		4	0	0	0
Current (BE1)	MODBUS_INPUT_REGISTER	50	10	A	6	0	0	0

I don’t think this has something to do with your version, as I get the same error with my SMO S40 modbus connection.

If I read the error correctly, it is an invalid call in the umodbus_numpy.py file. I’m trying to find this file in the sources, but while googling, I came across this topic.

I try to change the Water demand mode using the dropdown, then I get this error.

1 Like

as already mentioned, it is not a specific nibe heat pump but rather a general problem. When integrating the Nibe S735 with Modbus TC/IP, the same error is generated.

Logger: homeassistant.components.nibe_heatpump
Quelle: components/nibe_heatpump/config_flow.py:192
Integration: nibe_heatpump (Dokumentation, Probleme)
Erstmals aufgetreten: 10:54:05 (1 Vorkommnisse)
Zuletzt protokolliert: 10:54:05

Unexpected exception
...
ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.

It seems that a central function causes the error, as it occurs in different PY scripts.
I hope a developer can take care of it.

Thank you
Best regards

1 Like

I have the same issue. Please post back here if you find a solution

I saw that there is a bug reported for the numpy stuff in Home Assistant, so I guess it should be fixed soon.

I will leave this open for adding support for the new model NIBE SVM S332.

Good news! It seems to be fixed with this evenings HA Core update.

I am attaching some screenshots to reference the sensors from the register compared to the myUplink data.