Hyperion NG help please to setup 2 AtmoORB

  • I have been using a single AtmoOrb with great success on Hyperion NG


    But I would like to consider a "stereo" AtmoOrb setup with Orbs mounted left and right.


    I'd like to know how I set up two devices with two different scan areas within the web UI.


    Specifically, if I have two Orbs with 24 LEDS, I can use the LED page to setup "Left" 24 LEDS, and "right" 24 LEDS, but how do I tell NG to send the signals to the correct Orbs ID?


    Edit:
    I'm using WS2812 rings each containing 24 LEDs - I connect these to an 8266, and I don't care what typer of UDP is used. I chose the AtmoOrb because they can use multiple ID's to hopefully get the Left / Right assignment.


    Thank you!


    Edit - Figured it out:
    Simply configure another instance - Configuration > General >LED Hardware Instance Management. Run them both at the same time.

  • Hey RKF! How did you get your AtmoOrbs setup? I have used them in the past, but for some reason when I tried to set them up today with alpha 7, they don't respond. They do respond to the AtmoOrb Android app and the windows executable with the same IP and port settings. Probably I have done something stupid with the configuration.


    The grabber works, as the primary LED strip around my TV does light up through the forwarder.


    Config down below:


  • @Blokmeister
    As per my edit, what worked for me was setting up multiple instances. No more forwarders necessary. This is one of the greatest assets of Hyperion NG. I now have 3 "Orbs" however I am not using the AtmoOrb software per-se.
    Personally I recommend using either ESPixelStick or WLED firmware in your ORBs. Add each device (ORB, Strip, whatever) as an instance in Hyperion - Setup your LED range for each individually in each instance, as well as your capture source and you are good to go.
    Let me know how that goes.

  • Hey @RKF! Thanks so much for the fast response!


    As a bit of context: I have an Odroid C2 board connected to my TV that I use as my media player with the internal grabber. However, I have an RPI2 hooked up to my APA102 strip around my TV that also runs hyperion.ng, and my Odroid forwards to the RPI instance. On the Odroid I had no LED device configured. Now I changed that to the AtmoOrb device, which I also had in the past.


    Do you have a guide on how to do your suggestion? I have two Particle Photons with an Adafruit LED ring and use this code as a particle app: https://github.com/ambilight-4…le/Photon/AtmoOrb_UDP.ino. Do I use a different app for that, or just change my hyperion config?


    Edit: I checked the logs and found the entries below. Maybe there is something wrong with the atmoorb device in hyperion.ng?

    Code
    Aug 23 10:13:07 CoreELEC sh[30730]: [hyperiond LedDeviceWrapper] <INFO> LedDevice 'atmoorb' closed
    Aug 23 10:13:11 CoreELEC sh[30730]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 23 10:13:11 CoreELEC sh[30730]: 2020-08-23T10:13:11.954 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup:
    Aug 23 10:13:11 CoreELEC hyperiond[30748]: Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
  • You don't need forwarders anymore. My suggestion is to install the NG alpha 7 into your Odroid only. Once that is running and you are capturing for your TV leds, simply configure another instance (as I wrote in my edit of my OP).
    Install ESPixelstick into your photon and fire it up. (If you are using WS2812 led's - otherwise use WLED firmware)
    Configure it as follows
    Device ID - (whatever)
    Universe - 1
    Start Channel - 1
    Boundary - 512
    Pixel Count - your number of LEDS in the orb
    LED type - whatever you are using.


    Start the instance - there will now be your TV leds running in one instance, and your ORB running at the same time under a different instance)
    You'll notice on Hyperion that you now have a left/right arrow at the top right corner of the screen. Switch between instances to edit each instance if necessary. Start and stop each instance in the same place as you created the instance (see the edit of my OP)
    Configure the new instance the same way as you would when setting up your TV LEDS. (The ORB LED number count and colour, as well as the capture source etc.).
    For the LED controller type - choose UDPE131
    Point the target IP to the IP address of your photon - leave everything else the same (perhaps choose the latch time to 2ms if you have any issues)


    Good luck

  • Thanks for the response.


    My issue is not that I'm running multiple devices. I just used that to prove that the grabber works, and that hyperion can correctly forward the data from one instance to the other. The AtmoOrb is also setup correctly, as I can control it using the android app. Therefore the issue must be that hyperion cannot send the data to the AtmoOrb correctly.


    I tried to look in to the ESPixelstick like you suggested, however, I could not find any code that I could write to my Particle Photon. I think that type of device is simply not supported.


    I have tried many different settings trying to get the device to work. I tried using only one orb, or the other. I tried different numbers of lights, but all to no avail.


    Could you maybe share the configuration that you used when the AtmoOrb was working at your end?

  • @Blokmeister Let me have a look at the issue. According to the log the device ran into an error and was disabled.


    That's great! Thanks a bunch! :)


    Perhaps this error originated from stopping and starting the LED device. This is my log from a hyperion.ng restart command:



    I then reconfigured my LED device and saw it was turned off in the remote control section. This is the log until then:



    I then turned on the LED device through the web UI:


    Code
    Aug 27 18:54:06 CoreELEC sh[3474]: [hyperiond LedDeviceWrapper] <INFO> LedDevice 'atmoorb' closed
    Aug 27 18:54:06 CoreELEC sh[3474]: 2020-08-27T18:54:06.644 hyperiond LEDDEVICE    : <INFO> Start LedDevice 'atmoorb'.
    Aug 27 18:54:06 CoreELEC sh[3474]: 2020-08-27T18:54:06.644 hyperiond LEDDEVICE    : <DEBUG> LedDevice.cpp:133:init() | deviceConfig: [{"colorOrder":"rgb","currentLedCount":2,"hardwareLedCount":2,"latchTime":1,"numLeds":24,"orbIds":"1,2","output":"239.15.18.2","port":49692,"type":"atmoorb","useOrbSmoothing":true}]
    Aug 27 18:54:06 CoreELEC sh[3474]: 2020-08-27T18:54:06.647 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: disabled
    Aug 27 18:54:06 CoreELEC sh[3474]: 2020-08-27T18:54:06.648 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: enabled
    Aug 27 18:54:06 CoreELEC sh[3474]: 2020-08-27T18:54:06.652 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: disabled
    Aug 27 18:56:20 CoreELEC sh[3474]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 27 18:56:20 CoreELEC sh[3474]: 2020-08-27T18:56:20.128 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
    Aug 27 18:56:20 CoreELEC hyperiond[3495]: [116B blob data]


    When I switched to a different page on the web UI and switched back to the remote control section, and saw it was off again. So likely there is an error that turns off the device.


    Please ask me stupid questions to make sure I have setup the component correctly.


    Things I have checked:

    • UDP multicast IP is set correctly
    • Port is set correctly
    • Multicast forwarding is turn on on my switch
    • Connect Odroid C2 (which runs hyperion.ng) directly to my router, doesn't work
  • @Blokmeister Given the error, let me have another look at the code.


    Code
    Aug 27 18:56:20 CoreELEC sh[3474]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 27 18:56:20 CoreELEC sh[3474]: 2020-08-27T18:56:20.128 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'


    Additional questions upfront:


    1. Could you please share on which hyperion.ng version you are running.
    WebUI - > System -> about Hyperion
    2. Seems you are running CoreElec. Did you try running the lights under a different OS (Raspbian, Ubuntu, Windows). Would you be able to?
    3. Would you be able to run an alternative hyperion.ng, if I would provide you one. Would you be able to build it yourself?
    4. Why did you mark the topic as "solved"


    Thank you!

    • Alpha.7 (see complete description below)
    • I have tried it on LibreELEC but gives the same error. I could give it a try and install Hyperion on Ubuntu if that is useful. Let me know.


    • Not familiar enough to do that on the fly, but willing to give a try if pointed to a right guide
    • I did not mark the topic as solved. I hooked in on the topic created by RKF since it seemed very similar and thought he might have a solution. His issue was solved. I did not mean to hijack this thread and am willing to start a new thread or github issue if preferred.


    @Lord-Grey I'd like to mention I'm very grateful that you're willing to help me out with this!


    System info:


    Error on LibreELEC on a raspberry pi 2B:

    Code
    Aug 27 21:40:27 LibreELEC hyperiond[21267]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 27 21:40:27 LibreELEC hyperiond[21267]: 2020-08-27T21:40:27.463 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
    Aug 27 21:40:27 LibreELEC [21267]: Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'


    System info of LibreELEC:

  • This morning I installed Hyperion.ng on my Intel NUC and ran into exactly the same problem. So likely it's an issue with my configuration or with Hyperion. Below is a log of what I did. Maybe it's a good idea to rule out user error, because I still have the nagging feeling that I'm doing something wrong.


    The code flashed to my Particle Photon AtmoOrb is located here: https://pastebin.ubuntu.com/p/pRRSSX8JdT/.
    My current configuration in hyperion is this:

    LED layout:

    Resulting in the following configuration:


    I have also tried using one orb. I did this by setting Hardware LED count to 1 and Orb ID(s) to 1 or 2 only, and in LED Layout set Left or Right to 0, so I have only 1 LED. This also didn't work.



    Reproduce the error on my Intel NUC running Ubuntu 18
    Download and untar hyperion:

    Code
    root@BlokmeisterNUC:/home/blokmeister/Downloads# wget https://github.com/hyperion-project/hyperion.ng/releases/download/2.0.0-alpha.7/Hyperion-                                                           2.0.0-alpha.7-Linux-x86_64.tar.gz
    root@BlokmeisterNUC:/home/blokmeister/Downloads# mkdir Hyperion
    root@BlokmeisterNUC:/home/blokmeister/Downloads# mv Hyperion-2.0.0-alpha.7-Linux-x86_64.tar.gz Hyperion/
    root@BlokmeisterNUC:/home/blokmeister/Downloads/Hyperion# tar -zxvf Hyperion-2.0.0-alpha.7-Linux-x86_64.tar.gz
    root@BlokmeisterNUC:/home/blokmeister/Downloads/Hyperion# cd bin


    I then ran hyperiond and configured my AtmoOrb device. This resulted in a crash (which I think is unrelated):


    Restarted hyperiond and configured my AtmoOrb device. I went to the Remote Control section and saw that the device was enabled. I disabled the device and re-enabled it, moved to another section (I think Capturing Hardware) and moved back, and saw that the device was disabled again. In the logs I found the same error as on CoreELEC:

  • While @Lord-Grey looks into the code for you I can only share my successful experience using instances.


    I also looked at the particle photon and it seems that they are somewhat different to the $2 ESP8266 (D1 mini, for instance). My setup is based on the D1 mini. I use them for my "ORB's". But really they are not "ORB's". they are just a circle of LEDs mounted inside a stripped out IKEA FADO. I don't use the ORB controller for the LED's (I use UDPE131)


    If you have some D1 Mini, load up the ESPixelStick firmware as per my above instructions. Create an instance for the left side, and then another instance for the right side (or the bottom, or the whole TV) an instance for each, and a D1 Mini for each. In my case, each FADO lamp will run both the LEDs and the D1 Mini from an iPhone charger, or any 2A charger, quite comfortably. I desoldered the blue LED inside the D1 mini, and it sits inside the FADO as well.


    Sharing my setup config is kind of pointless, because each "instance" is its own config.


    Please try a D1 mini (or any NodeMCU) you might have lying around.


    Here is a screenshot of my setup with multiple instances running multiple D1 mini's with an undetectable latency. I have 2 TV's (Sony and Rumpus), 2 FADO lamps (UDP left and right), and a display case light strip all running at once.


    As an aside, I control the power-up and power-down of the devices through MQTT in Node Red, the power up signal is mapped to a simple Ikea Zigbee light switch that runs through zigbee2mqtt. If you use the WLED firmware you can power up the device in even smarter ways. The FADO lamps double as Lounge Lights with their own colour when not being used by Hyperion.


    If you wish to go down the D1 mini / FADO path and get stuck, I can help further, but I want to reinforce that I don't use forwarders, OR the ORB controller for any of my setup.


  • @Blokmeister I did a fix on the "Bind" issue already as part of PR #961.


    On your LibreElec you could test that PR as per the instructions in the following article:


    https://forum.hyperion-project…ziell-unofficially.10463/


    Post #64 outlines how to install a specific PR.


    Alternatively, you could download an image (Artifact) on your NUC from the GitHub PR build site:


    https://github.com/hyperion-pr…s?check_run_id=1045595598


    Select the "Artifact" that fits your test system.

  • Great! I'll give that a try.


    Code
    LibreELEC:~/downloads # wget -qO- https://git.io/JJr6Y | bash -s 961
    *******************************************************************************
    This script will download a specific Pull Request Artifact from Hyperion.NG on LibreELEC
    Created by Paulchen-Panther - hyperion-project.org - the official Hyperion source.
    *******************************************************************************
    ---> The specified PR #961 has no longer any artifacts.
    ---> It may be older than 14 days. Ask the PR creator to recreate the artifacts at the following URL:
    ---> https://github.com/hyperion-project/hyperion.ng/pull/961


    Could I also just manually download the artifact I needed, untar it and copy it over my install files? Which one would I need for the RPI2?


    Edit:
    Okay, I downloaded the artifact on my Raspberry Pi 2 and copied it over the old service. Didn't fix the issue:

    Code
    Aug 30 09:56:25 LibreELEC hyperiond[31074]: 2020-08-30T09:56:25.838 hyperiond LEDDEVICE    : <INFO> Start LedDevice 'atmoorb'.
    Aug 30 09:56:25 LibreELEC hyperiond[31074]: 2020-08-30T09:56:25.839 hyperiond LEDDEVICE    : <DEBUG> LedDevice.cpp:133:init() | deviceConfig: [{"colorOrder":"rgb","currentLedCount":2,"hardwareLedCount":2,"latchTime":1,"numLeds":24,"orbIds":"1,2","output":"239.15.18.2","port":49692,"type":"atmoorb","useOrbSmoothing":
    Aug 30 09:56:25 LibreELEC hyperiond[31074]: 2020-08-30T09:56:25.850 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: enabled
    Aug 30 09:56:37 LibreELEC hyperiond[31074]: 2020-08-30T09:56:37.037 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: disabled
    Aug 30 09:56:38 LibreELEC hyperiond[31074]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 30 09:56:38 LibreELEC hyperiond[31074]: 2020-08-30T09:56:38.509 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
    Aug 30 09:56:38 LibreELEC [31074]: Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
  • Same issue.



    I disabled then enabled the device. After switching pages, the device was disabled.


    Code
    Aug 31 13:17:40 LibreELEC hyperiond[32436]: 2020-08-31T13:17:40.822 hyperiond COMPONENTREG : <DEBUG> ComponentRegister.cpp:36:setNewComponentState() | LED device: disabled
    Aug 31 13:17:41 LibreELEC hyperiond[32436]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState
    Aug 31 13:17:41 LibreELEC hyperiond[32436]: 2020-08-31T13:17:41.348 hyperiond LEDDEVICE    : <ERROR> Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
    Aug 31 13:17:41 LibreELEC [32436]: Device disabled, device 'atmoorb' signals error: '(-1) Unknown error, MulticastGroup: (239.15.18.2)'
    Aug 31 13:17:44 LibreELEC hyperiond[32436]: QNativeSocketEngine::bind() was not called in QAbstractSocket::UnconnectedState

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!