Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Не изменяться цвет для RGBW ленты #163

Open
lesovoy-alim opened this issue Nov 14, 2023 · 3 comments
Open

Не изменяться цвет для RGBW ленты #163

lesovoy-alim opened this issue Nov 14, 2023 · 3 comments

Comments

@lesovoy-alim
Copy link

lesovoy-alim commented Nov 14, 2023

Описание
В HA добавлен rgbw летна
mega:
mega:
led:
led_1_test:
ports: [32e3, 32e2, 32e1, 32e0]
white_sep: true
smooth: 1

При попытка переключить цвет на экране регулировки цвета HA смена не происходит.
image

В логах все время выводиться значения заданные на экране регулировки яркости:
2023-11-14 20:10:02.442 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [140529877779776] alim from 192.168.0.1 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15): Received {'type': 'call_service', 'domain': 'light', 'service': 'turn_on', 'service_data': {'entity_id': 'light.led_1_test', 'rgbw_color': [255, 255, 255, 0]}, 'id': 123}
2023-11-14 20:10:02.443 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event call_service[L]: domain=light, service=turn_on, service_data=entity_id=light.led_1_test, rgbw_color=[255, 255, 255, 0]>
2023-11-14 20:10:02.444 DEBUG (MainThread) [custom_components.mega.entities] turn on light.led_1_test with kwargs {'rgbw_color': (255, 255, 255, 0)}
2023-11-14 20:10:02.444 DEBUG (MainThread) [homeassistant.components.websocket_api.http.connection] [140529877779776] alim from 192.168.0.1 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.5 Safari/605.1.15): Sending {"id":123,"type":"result","success":true,"result":{"context":{"id":"01HF7CZEYBAWN6AF2X72V3XXQV","parent_id":null,"user_id":"f5764b5f707f4c0087a4aabb9efce60b"}}}
2023-11-14 20:10:02.444 DEBUG (Recorder) [homeassistant.components.recorder.core] Processing task: EventTask(event=<Event call_service[L]: domain=light, service=turn_on, service_data=entity_id=light.led_1_test, rgbw_color=[255, 255, 255, 0]>)
2023-11-14 20:10:02.495 DEBUG (MainThread) [custom_components.mega.mega] dim from 1027 to 1027 for 0.0 seconds
2023-11-14 20:10:02.495 DEBUG (MainThread) [custom_components.mega.mega] request: http://192.168.0.14/sec/?cmd=32e3:1027;32e2:1027;32e1:1028;32e0:0
2023-11-14 20:10:02.522 DEBUG (MainThread) [custom_components.mega.mega] response Done

В независимости от введенных пользователе данных. Судя по всему проблема с отправкой Данны из виджета.

При попытке уменьшить яркость на экране выбора цвета отображаются значения введенные на экране регулировки яркости:
2023-11-14 18:00:59.774 DEBUG (MainThread) [custom_components.mega.entities] turn on light.led_1_test with kwargs {'rgbw_color': (82, 82, 82, 0)}
2023-11-14 18:00:59.826 DEBUG (MainThread) [custom_components.mega.mega] request: http://192.168.0.14/sec/?cmd=32e3:1686;32e2:1686;32e1:1686;32e0:0

Экран регулировки яркости
image

Версии систем
Enviroment: linux
HA version: Home Assistant 2023.10.1
mega_hacs version: v1.1.7
megad firmware version: MegaD-2561 by ab-log.ru (fw: 4.60b6)
используется mqtt: false

Ожидаемое поведение
Корректная смена цвета/яркости ленты в зависимости от ввода пользователем

@lesovoy-alim lesovoy-alim changed the title Не женяться цвет для RGBW ленты Не изменяться цвет для RGBW ленты Nov 14, 2023
@lesovoy-alim
Copy link
Author

lesovoy-alim commented Nov 15, 2023

Ошибка в методе set_color custom_components/mega/light.py
for item, value in kwargs.items(): setattr(self, f'_{item}', value)
Видимо раньше значения в kwargs.items приходило отдельно как rgb_color и white_value, и соответсвенно записывалось в
self._rgb_color: tuple[int, int, int] | None = None self._white_value = None

Сейчас же значения от фронта приходит в формате turn on light.led_1_test with kwargs {'rgbw_color': (156, 255, 111, 0)}

@lesovoy-alim
Copy link
Author

В итоге пришел к такому временному решению, закомментировал строки 328-329 mega.light
# if self.is_on: # self._brightness = v
Откровенно говоря непонятно зачем вообще приводить устанавливать в hsv значения v(яркость)значением из расчета
h, s, v = colorsys.rgb_to_hsv( *[x / self.max_values[i] for i, x in enumerate(rgb)]
При приведении rgb к hsv мы в принципе не можем получить яркость, так как ее нет в системе rgb.
Логичней ее получать из значения brightness которое приходит с фронта.

@andvikt
Copy link
Owner

andvikt commented Nov 27, 2023

В итоге пришел к такому временному решению, закомментировал строки 328-329 mega.light

` # if self.is_on:

    #     self._brightness = v

`

Откровенно говоря непонятно зачем вообще приводить устанавливать в hsv значения v(яркость)значением из расчета

` h, s, v = colorsys.rgb_to_hsv(

        *[x / self.max_values[i] for i, x in enumerate(rgb)]`

При приведении rgb к hsv мы в принципе не можем получить яркость, так как ее нет в системе rgb.

Логичней ее получать из значения brightness которое приходит с фронта.

Попробуйте последнюю бету. Там это все вроде исправлено. Насчет причины использования hsv - это гораздо более "правильный" формат для плавных переходов от одного цвета к другому, для "плавного" диммирования и тд.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants