cryptk / haomnilogic-local

A Home Assistant integration for Hayward OmniLogic/OmniHub pool controllers using the local UDP api
Apache License 2.0
18 stars 4 forks source link

Support "version 1 lights" #98

Closed hildebrau closed 1 month ago

hildebrau commented 1 month ago

Greetings.

A quick background: I have an Omnilogic controller for my pool. I have two colorlogic v2 light arrays (pool & spa).. and then I have some color led bubblers that I was told are Brilliant Wonders® 4" LED Bubbler. The pool builder initially linked them on the same light controller as my pool & spa; but they wouldn't match the colors. The bubblers were always "doing their own thing". They then installed some other "controller" module to separate it out.

My apologies if this issue is posted in the wrong project. It's a blurry line in my mind distinguishing between this project and https://github.com/djtimca/haomnilogic. I want to control the Omnilogic locally, so I am hoping that's what I'm using for my lights that are working.

I have been able to get my pool & spa lights working w/ the service call omnilogic.set_v2_lights. However, that same call on my bubbler lights results in errors. The short version of the error is omnilogic.OmniLogicException: Cannot set effect speed or brightness on version 1 lights.. The long version is below in the code box below. I'm not sure where the "version 1" is coming from or if they are even version one; but I'm willing to believe it. For it to cycle the colors, it has to power cycle them, essentially, in a rotation.

2024-06-02 16:52:39.003 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Unexpected error for call_service at pos 1: Cannot set effect speed or brightness on version 1 lights.
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 501, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 736, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 699, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2738, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2779, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 975, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1047, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/omnilogic/light.py", line 211, in async_set_v2effect
    raise OmniLogicException(
omnilogic.OmniLogicException: Cannot set effect speed or brightness on version 1 lights.
2024-06-02 16:52:39.005 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140314270020416] Error handling message: Unknown error (unknown_error) <my name>f from 172.18.0.1 (Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:126.0) Gecko/20100101 Firefox/126.0)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 27, in _handle_async_response
    await func(hass, connection, msg)
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 793, in handle_execute_script
    script_result = await script_obj.async_run(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1731, in async_run
    return await asyncio.shield(create_eager_task(run.async_run()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 451, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 503, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 533, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 501, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 736, in _async_call_service_step
    response_data = await self._async_run_long_action(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 699, in _async_run_long_action
    return await long_task
           ^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2738, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2779, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 975, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1047, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/config/custom_components/omnilogic/light.py", line 211, in async_set_v2effect
    raise OmniLogicException(
omnilogic.OmniLogicException: Cannot set effect speed or brightness on version 1 lights.

I did some Wireshark captures on my edge firewall while I used the Omnilogic App to turn on those bubbler lights and change colors on them and then turn them off. I tried to clean up the UDP stream with relevant information below. LMK if you need something more from that file.

<Request><Name>SetStandAloneLightShow</Name><Parameters>
<Parameter name="PoolID" dataType="int">1</Parameter>
<Parameter name="LightID" dataType="int" alias="EquipmentID">34</Parameter>
<Parameter name="Show" dataType="byte">15</Parameter>
<Parameter name="Speed" dataType="byte">4</Parameter>
<Parameter name="Brightness" dataType="byte">4</Parameter>
<Parameter name="Reserved" dataType="byte">0</Parameter>
<Parameter name="IsCountDownTimer" dataType="bool">0</Parameter>
<Parameter name="StartTimeHours" dataType="int">0</Parameter>
<Parameter name="StartTimeMinutes" dataType="int">0</Parameter>
<Parameter name="EndTimeHours" dataType="int">0</Parameter>
<Parameter name="EndTimeMinutes" dataType="int">0</Parameter>
<Parameter name="DaysActive" dataType="int">0</Parameter>
<Parameter name="Recurring" dataType="bool">0</Parameter></Parameters></Request>

<Request><Name>Ack</Name><Parameters /></Request>

<Request><Name>SetStandAloneLightShow</Name><Parameters>
<Parameter name="PoolID" dataType="int">1</Parameter>
<Parameter name="LightID" dataType="int" alias="EquipmentID">34</Parameter>
<Parameter name="Show" dataType="byte">1</Parameter>
<Parameter name="Speed" dataType="byte">4</Parameter>
<Parameter name="Brightness" dataType="byte">4</Parameter>
<Parameter name="Reserved" dataType="byte">0</Parameter>
<Parameter name="IsCountDownTimer" dataType="bool">0</Parameter>
<Parameter name="StartTimeHours" dataType="int">0</Parameter>
<Parameter name="StartTimeMinutes" dataType="int">0</Parameter>
<Parameter name="EndTimeHours" dataType="int">0</Parameter>
<Parameter name="EndTimeMinutes" dataType="int">0</Parameter>
<Parameter name="DaysActive" dataType="int">0</Parameter>
<Parameter name="Recurring" dataType="bool">0</Parameter></Parameters></Request>

<Request><Name>SetStandAloneLightShow</Name><Parameters>
<Parameter name="PoolID" dataType="int">1</Parameter>
<Parameter name="LightID" dataType="int" alias="EquipmentID">34</Parameter>
<Parameter name="Show" dataType="byte">16</Parameter>
<Parameter name="Speed" dataType="byte">4</Parameter>
<Parameter name="Brightness" dataType="byte">4</Parameter>
<Parameter name="Reserved" dataType="byte">0</Parameter>
<Parameter name="IsCountDownTimer" dataType="bool">0</Parameter>
<Parameter name="StartTimeHours" dataType="int">0</Parameter>
<Parameter name="StartTimeMinutes" dataType="int">0</Parameter>
<Parameter name="EndTimeHours" dataType="int">0</Parameter>
<Parameter name="EndTimeMinutes" dataType="int">0</Parameter>
<Parameter name="DaysActive" dataType="int">0</Parameter>
<Parameter name="Recurring" dataType="bool">0</Parameter></Parameters></Request>

<Request><Name>Ack</Name><Parameters /></Request>

<Request><Name>Ack</Name><Parameters /></Request>

<Request><Name>Ack</Name><Parameters /></Request>

<Request><Name>Ack</Name><Parameters /></Request>
hildebrau commented 1 month ago

My apologies. I was trying to use the non-local omnilogic HACS integration. I setup an "issue" over there instead. As it turns out, this -local project (once I figured out how to finish out the install steps) worked out of the box w/ my color bubblers. I'm closing this ticket. Sorry for any confusion.