hyperion.ng: Turning on LEEDEVICE, when it's already on, should not change output behavior

  • I confirm that this is an issue rather than a question.

Bug report

Turning on the component LEDDEVICE via the API, when the LEDDEVICE is already on, should not result in any noticeable output behavior. However, it appears to ‘reset’ the connection to WLED causing WLED to stop showing streamed UDP data. I don’t know if this is specific to WLED, or a more general issue.

Steps to reproduce

  • Turn LEDDEVICE on in the Hyperion UI.
  • Set a color with infinite duration.
  • Observe WLED output: Color shows up as expected.
  • Turn on LEDDEVICE via the API:
echo '{"command":"componentstate", "componentstate":{"component":"LEDDEVICE", "state": true} }' | nc  hyperion 19444

What is expected?

No change should be observed.

What is actually happening?

WLED appears to lose the “connection” to Hyperion, and resets to it’s state to that prior to streaming the data from Hyperion.

System

Fresh build from head yesterday.

Hyperion Server:

  • Build: master (GitHub-f719f0b/838092e-1597257777)
  • Build time: Aug 15 2020 04:03:20
  • Git Remote: https://github.com/hyperion-project/hyperion.ng.git
  • Version: 2.0.0-alpha.7
  • UI Lang: auto (BrowserLang: en-US)
  • UI Access: default
  • Avail Capt: dispmanx,v4l2,framebuffer,qt

Hyperion Server OS:

  • Distribution: Raspbian GNU/Linux 10 (buster)
  • Arch: arm
  • Kernel: linux (5.4.51+ (WS: 32))
  • Browser: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Comments: 19 (9 by maintainers)

Commits related to this issue

Most upvoted comments

@dermotduffy Would you mind redoing the test again, please?

I do see that you disabled and enabled the device

 2020-08-15T18:21:22.522Z [hyperiond JSONCLIENTCONNECTION] (DEBUG) (JsonAPI.cpp:107:handleInstanceSwitch()) Client '::ffff:10.100.0.20' switch to Hyperion instance 0
2020-08-15T18:21:22.533Z [hyperiond LEDDEVICE] (DEBUG) (LedDeviceWled.cpp:157:powerOff()) 
 2020-08-15T18:21:22.538Z [hyperiond LEDDEVICE] (DEBUG) (ProviderRestApi.cpp:153:put()) PUT: [http://wled-tv-lights/json/state] [{"on":false}]
 2020-08-15T18:21:22.543Z [hyperiond COMPONENTREG] (DEBUG) (ComponentRegister.cpp:36:setNewComponentState()) LED device: disabled
 2020-08-15T18:21:22.852Z [hyperiond LEDDEVICE] (DEBUG) (ProviderRestApi.cpp:182:getResponse()) Reply.httpStatusCode [200]

 2020-08-15T18:21:39.221Z [hyperiond LEDDEVICE] (DEBUG) (LedDeviceWled.cpp:139:powerOn()) 
 2020-08-15T18:21:39.222Z [hyperiond LEDDEVICE] (DEBUG) (ProviderRestApi.cpp:153:put()) PUT: [http://wled-tv-lights/json/state] [{"on":true}]
 2020-08-15T18:21:39.285Z [hyperiond LEDDEVICE] (DEBUG) (ProviderRestApi.cpp:182:getResponse()) Reply.httpStatusCode [200]
 2020-08-15T18:21:39.289Z [hyperiond COMPONENTREG] (DEBUG) (ComponentRegister.cpp:36:setNewComponentState()) LED device: enabled

But you did not provide anything after 18:41:13 that shows that an active device switch has happened. Or did you stopped WLED and expected that hyperion LED-Device after sending the API Command would have light WLED again?

If it is the latter, then nothing can be done about it, given that this device works via UDP and hyperion will not recognise the unavailability of WLED. To continue the stream you would need to disable the device (manually or via API) and enable it afterwards.