denpamusic/PyPlumIO

Cannot connect to ecoMAX850r2

Closed this issue · 5 comments

Is there an existing issue for this?

  • I have searched the existing issues

I'm having the following issue:

Hi,

I'm having issues with adding device in HA. I've connected EW11a RS-485-WIFI module to ecoSTER pins on the board.

I have following devices connected:

  • ecoMAX 3xx series
  • ecoMAX 8xx series
  • ecoMAX 9xx series
  • Expansion module B
  • Expansion module C
  • ecoSTER 200/ecoSTER Touch
  • ecoLAMBDA
  • ecoNET 300

I'm connecting to my devices using:

Ethernet/WiFi to RS-485 converter

I'm seeing following log messages:

Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pyplumio/protocol.py", line 229, in frame_consumer
device.handle_frame(frame)
File "/usr/local/lib/python3.11/site-packages/pyplumio/devices/ecomax.py", line 139, in handle_frame
super().handle_frame(frame)
File "/usr/local/lib/python3.11/site-packages/pyplumio/devices/__init__.py", line 132, in handle_frame
if frame.data is not None:
^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/frames/__init__.py", line 159, in data
self.decode_message(self._message) if self._message is not None else {}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/frames/responses.py", line 222, in decode_message
return SchedulesStructure(self).decode(message)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/structures/schedules.py", line 188, in decode
start = message[offset + 1]
~~~~~~~^^^^^^^^^^^^
IndexError: index out of range
2024-01-17 15:09:30.316 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pyplumio/protocol.py", line 229, in frame_consumer
device.handle_frame(frame)
File "/usr/local/lib/python3.11/site-packages/pyplumio/devices/ecomax.py", line 139, in handle_frame
super().handle_frame(frame)
File "/usr/local/lib/python3.11/site-packages/pyplumio/devices/__init__.py", line 132, in handle_frame
if frame.data is not None:
^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/frames/__init__.py", line 159, in data
self.decode_message(self._message) if self._message is not None else {}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/frames/responses.py", line 222, in decode_message
return SchedulesStructure(self).decode(message)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/structures/schedules.py", line 188, in decode
start = message[offset + 1]
~~~~~~~^^^^^^^^^^^^
IndexError: index out of range
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pyplumio/stream.py", line 46, in close
await self.wait_closed()
File "/usr/local/lib/python3.11/site-packages/pyplumio/helpers/timeout.py", line 21, in wrapper
return await asyncio.wait_for(func(*args, **kwargs), timeout=seconds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/tasks.py", line 489, in wait_for
return fut.result()
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pyplumio/stream.py", line 53, in wait_closed
await self._writer.wait_closed()
File "/usr/local/lib/python3.11/asyncio/streams.py", line 349, in wait_closed
await self._protocol._get_close_waiter(self)
File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 1051, in write
n = self._sock.send(data)
^^^^^^^^^^^^^^^^^^^^^
BrokenPipeError: [Errno 32] Broken pipe

My diagnostics data:

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Hi,

Thank you for the feedback!

It seems like your boiler returns empty response to REQUEST_SCHEDULES[54], which leads to IndexError here.

The easiest fix will be to check for empty response in the structure decoder.

This is now fixed and will be released as a part of PyPlumIO v0.5.12 as well as integration v0.4.2.

Thanks, when you will be planning to release integration v0.4.2 ?

You're welcome! v0.4.2 is currently blocked by this major change: denpamusic/homeassistant-plum-ecomax#58, that introduces ability to add custom entities. Sadly I don't have a lot of time to work on said feature this month, so there's no ETA for release yet. It'll probably be closer to February.

That being said, I think we can do a minor PyPlumIO release, containing only a fix for the issue you're experiencing and update main branch of integration to depend on it. This way you will be able to install and use Main version of the integration as described here, while waiting for v0.4.2.

This is now done.
Please follow this guide to install Main branch of the integration via HACS: denpamusic/homeassistant-plum-ecomax#35

Main branch now includes fix for this issue, but please be advised, that since your EM device is untested with this integration, you've might experience some other issues.

Don't hesitate to contact me if this is the case.
Thanks again for your feedback and help!