OpenAPI: Control specific panel from a Layout

Started by seguelador


Hi everyone,

I'm working on an interesting project in my company with Nanoleafs Aurora Rhythm. So far I have set up 15 panels and made our Company's logo with it. Now, as my next step, I would like to control individual panels so that I can give them meanings (Like servers down, bugs, etc). I have looked the official documentation and the endpoints on postman but I couldn't find anything related to controlling individual panels.

Your help will be appreciated:). Thanks!



Do you want individual panels to react differently to the rhythm or do you want the panels to have a static color?

To update the static color of a single or multiple panels you have to create a static effect that defines which panels to update in the animation data property. Once you have created your effect, your can write to the aurora with the "display" command to display the effect on the aurora. For more information about animation data, see section 3.4.2 of the openapi documentation.

For example, lets say you wanted to update a panel with id 74 to red. Your effect json would look like this:

  "command": "display",
  "animType": "static",
  "animData": "1 74 1 255 0 0 0 1",
  "loop": false

You can then update the changes to the aurora using the following put request (remember to replace "YOUR_EFFECT_JSON" with the effect your created in the previous step):
PUT YOUR_AURORA_IP:16021/api/v1/YOUR_API_KEY/effects {"write": YOUR_EFFECT_JSON}

As a side note if you are using java, you can set the color of panels in a much easier way using the setPanelColor() method from the java api interface. You can find an example for setting the panels this way here.



Hey! Thank you so much for your reply. I will give it a try, at least now I know it is possible. Thanks!




Unfortunately, updating the panels does not work.
aurora.effects().setPanelColor(panel, r, g, b, 1);

I always get 400 Bad Request in response. The content of the request looks like this: {"write": {"loop": false, "animData": "1 5604 1 71 154 21 0 1", "version": "1.0", "command": "display" , "animType": "custom"}}

Modifying your code with my ID also only brings a bad request.
{"write": {"command": "display","animType": "static","animData": "1 5604 1 255 0 0 0 1","loop": false}}


Aliakbar Eski


You are missing the palette field. It's the set of colours used to make the animData so that the app can display it to the user for editing. But its not processed so you can leave it empty as well to get away with it.

See section

Hope this helps