core: [Errno 104] Connection reset by peer and [Errno 111] Connect call failed after updating heat pump to 2.22.6

The problem

After updating the S1255 heat pump to software version 2.22.6 the integration is unable to fetch all information from the heat pump. I can see in the dashboard that the integration starts to fetch information but before all registers is read the integration throws the errors below. I suspect it may be because Nibe added new Modbus TCP/IP registers?

https://www.nibe.eu/webdav/files/myuplink_changelog/nibe-n.pdf

Added Modbus TCP/IP registers to read shunt voltage for extra climatesystem 2-8
- Climatesystem 2 = 2401
- Climatesystem 3 = 2402
- Climatesystem 4 = 2403
- Climatesystem 5 = 2404
- Climatesystem 6 = 2405
- Climatesystem 7 = 2406
- Climatesystem 8 = 2407

Added RPP10 to holiday functionality

Added possibility to add hourly prices in menu and by Modbus TCP/IP for shunted addition in Smart
Energy Source

Added extended ventilation settings on home screen and RMU S40

Added power consumption for S135 in energy log
2023-10-20 10:28:35.180 ERROR (MainThread) [homeassistant.components.nibe_heatpump] Unexpected error fetching Nibe Heat Pump data: [Errno 104] Connection reset by peer
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 290, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/__init__.py", line 266, in _async_update_data
    return await self._async_update_data_internal()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/__init__.py", line 288, in _async_update_data_internal
    async for data in self.connection.read_coils(_get_coils()):
  File "/usr/local/lib/python3.11/site-packages/nibe/connection/__init__.py", line 43, in read_coils
    yield await self.read_coil(coil, timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 88, in async_wrapped
    return await fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 47, in __call__
    do = self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/__init__.py", line 314, in iter
    return fut.result()
           ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 50, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/nibe/connection/modbus.py", line 116, in read_coil
    result = await self._client.read_holding_registers(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 181, in read_holding_registers
    return await self._send_message(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 142, in _send_message
    return await self.protocol._async_send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 42, in send_message_tcp
    response_error_adu = await reader.readexactly(exception_adu_size)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 36, in wrapper
    return await coro
           ^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 383, in readexactly
    return await self._readexactly(n)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 52, in wrapper
    await self.close()
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 309, in close
    await self.writer.wait_closed()
  File "/usr/local/lib/python3.11/asyncio/streams.py", line 350, in wait_closed
    await self._protocol._get_close_waiter(self)
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 989, in _read_ready__data_received
    data = self._sock.recv(self.max_size)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer
2023-10-20 10:29:36.133 ERROR (MainThread) [homeassistant.components.nibe_heatpump] Unexpected error fetching Nibe Heat Pump data: [Errno 111] Connect call failed ('192.168.50.150', 502)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 290, in _async_refresh
    self.data = await self._async_update_data()
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/__init__.py", line 266, in _async_update_data
    return await self._async_update_data_internal()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/nibe_heatpump/__init__.py", line 288, in _async_update_data_internal
    async for data in self.connection.read_coils(_get_coils()):
  File "/usr/local/lib/python3.11/site-packages/nibe/connection/__init__.py", line 43, in read_coils
    yield await self.read_coil(coil, timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 88, in async_wrapped
    return await fn(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 47, in __call__
    do = self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/tenacity/__init__.py", line 314, in iter
    return fut.result()
           ^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.11/site-packages/tenacity/_asyncio.py", line 50, in __call__
    result = await fn(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/nibe/connection/modbus.py", line 110, in read_coil
    result = await self._client.read_input_registers(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 194, in read_input_registers
    return await self._send_message(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 142, in _send_message
    return await self.protocol._async_send_message(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 39, in send_message_tcp
    await writer.drain()
  File "/usr/local/lib/python3.11/site-packages/async_modbus/core.py", line 113, in drain
    await self._write_coro
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 31, in wrapper
    await self.open()
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 287, in open
    self.reader, self.writer = await coro
                               ^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/sockio/aio.py", line 153, in open_connection
    transport, _ = await loop.create_connection(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1085, in create_connection
    raise exceptions[0]
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection
    sock = await self._connect_sock(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock
    await self.sock_connect(sock, address)
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 628, in sock_connect
    return await fut
           ^^^^^^^^^
  File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 668, in _sock_connect_cb
    raise OSError(err, f'Connect call failed {address}')
ConnectionRefusedError: [Errno 111] Connect call failed ('192.168.50.150', 502)

What version of Home Assistant Core has the issue?

core-2023.10.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

nibe_heatpump

Link to integration documentation on our website

https://www.home-assistant.io/integrations/nibe_heatpump

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

About this issue

  • Original URL
  • State: open
  • Created 8 months ago
  • Reactions: 2
  • Comments: 39 (6 by maintainers)

Most upvoted comments

It does not look at entitles during setup, so does not matter which is enabled. You likely need to restart your pump.

How to roll-back to previous Firmware on S1255PC6: 1. shutdown the device until Power Button is blue 2. Power on the device 3. when the light of the power button gets white, press the button as long as it gets green and release it (one time this failed and the machine powered off, so I successfully retried it one time by pressing the button only a second) 4. the device starts with backup firmware I hope that helps you as well…