Hi,
I have the same problems like Igor. In my configuration I created 10 covers for the channels 1 to 10. In my logs I have additional issues like:
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)
It looks like every cover access the serial port directly. Instead, a controller is needed that bundles communication with the serial port and manages a queue of requests and responses.
I also tested cover groups as described in István’s documentation. For this I have created a group with 5 shutters. If I want to close all the blinds of this group, this only happens with 3 of 5. This could probably be solved with a central queue for requests.
Since I’m not a Python specialist, unfortunately, I do not know how to implement it. But what I have done is to support the set_cover_position function so that intermediate and ventilation positions are supported.
The value of the position is used as follows:
0 = closed
25 = tilt position
50 = intermediate position
100 = open
I have no access rights to the Github repository, so I cannot push the changes. Therefore I am posting here the change you have to insert from line 318 after the stop_cover function in /custom_components/cover/elero.py.
def set_cover_position(self, position, **kwargs):
"""Move the cover to specific position."""
if position == 0 and self._state not in [STATE_CLOSED, STATE_CLOSING]:
"""Close"""
self._down()
self._start_watcher()
elif position == 25:
"""Tilt Position"""
self._tilt()
self._start_watcher()
elif position == 50:
"""Intermediate Position"""
self._intermediate()
self._start_watcher()
elif position == 100 and self._state not in [STATE_OPEN, STATE_OPENING]:
"""Open"""
self._up()
self._start_watcher()