Hello all,
I'm currently evaluating a NanoLeaf canvas just to see what we could do with it.
So far everything works fine except for the control of individual tiles. Nothing happens.
I can't see what is wrong with my command so maybe someone could help me here.
I have done all my test with curl for the time being.
@curl –location –request PUT "http://192.168.0.101:16021/api/v1/srBKyTaiJfLDRE72OLh1YwYjLSJ3JaxU/effects" –data "{"write" : {"command" : "display", "animType" : "static", "animData" : "1 918 1 255 0 0 0 20", "loop": false}}"
And yes, Panel Id 918 do exist. I also tried with other ids. No change in the canvas, whether it is playing an effect or in hs color mode.
That's due to a bug in the Canvas API. Until it's corrected, you'll need to add an empty pallette at the end of your effects data:
@curl –location –request PUT "http://192.168.0.101:16021/api/v1/srBKyTaiJfLDRE72OLh1YwYjLSJ3JaxU/effects" –data "{"write" : {"command" : "display", "animType" : "static", "animData" : "1 918 1 255 0 0 0 20", "loop": false, "palette":[]}}"
I'm trying to do the same thing. I'm getting 404 Not Found errors. My Canvas panel ids are 5 digits long. I've added the empty palette. Am I missing something?
@Mellit7
Can you post your request here. And what's the firmware version of your Canvas.
The panel Ids can be 5 digits long, that's not an issue.
Regards
Thanks for the quick response. I am away from the computer that I use for testing until next week. You got me to stop fixating on the panel id, and I looked at the API document again and believe I messed up the format, but can't confirm until I get back to the computer. Will update once I get there.
No problem. Keep me posted!
I finally got a chance to do some testing. I indeed had messed up my commands when I pasted some code. I now have a successfully executing command. The interesting thing I have learned is that on my 9 panel Canvas display, if I only send info for one panel, the other 8 essentially turn off. So, if I wanted to leave the other 8 panels in their previous state, I would need to query the current effects, and send info for all 9 panels back, changing only the panel(s) I'm interested in addressing? Would I would use requestALL for that and is it a part of the write PUT call since it is a command?
Great, glad we figured that out.
Static effects will not affect the state of other panels. So there is something else that's going on here.
Can I see the exact request that you are sending out to the panels?
This will turn one panel green, all others go black
{"write":{
"command": "display",
"animType": "static",
"animData": "1 15909 1 0 255 0 0 20",
"loop": false
}}
Okay, so if you have an effect playing, and then you send this command, yes it will turn all the panels off and one panel green. But if you send subsequent messages then it will leave that one panel as green and not touch it.
If you don't want the panels to go black, you can turn off the scene transition off from device settings in the app
Regards
Thanks. Turning off the scene transition made the difference. Never liked the white flash anyway, so good to know it can be turned off.
I appreciate your prompt and thorough help. Now that I understand the behavior and syntax of this, I'm thinking about incorporating it into the custom LAN Smartthings device handler that I help maintain. Someone had asked about using the lights as a notification system, so I decided to investigate. The official Cloud to Cloud integration, while eliminating the fetching of API keys doesn't have enough functional support for most of the current users. Setting scenes/effects via automations is what most folks are looking for and hopefully the official one will eventually improve so we can retire the custom version.
@Mellit7
glad to be of assistance!
Regards