get_prop method max input size ?

Hi !

According to the specifications, a new property called “active_mode” was added recently. I try to get the values of all the properties defined in Table 4-2 of the spec by a single call, but when I add this property I get the following error : “{“id”:(null), “error”:{“code”:-1, “message”:“invalid command”}}”.

I’ve done many tests, and it seems the error is not caused by the property itself, but when the message’s size reaches 256 characters.

Can you confirm this ?

Also, is it the same for the other methods (like “start_cf” etc.) ?

Regards,

Romain.

The internal buffer for get_prop response should be 512. How about get prop for this property alone?

Getting the property alone works well.

Here is the data that is sent when I try to get all the properties :

{“id”:1,“method”:“get_prop”,“params”:[“power”,“bright”,“ct”,“rgb”,“hue”,“sat”,“color_mode”,“flowing”,“delayoff”,“flow_params”,“music_on”,“name”,“bg_power”,“bg_flowing”,“bg_flow_params”,“bg_ct”,“bg_lmode”,“bg_bright”,“bg_rgb”,“bg_hue”,“bg_sat”,“nl_br”,“active_mode”]}

As you can see the the request size is greater than 256 characters. when you remove any property to reduce the size of the request (for example “bg_flow_params” whom is big enough to reduce the size of the request below 256 characters) it works well.
Here is a working example :

{“id”:1,“method”:“get_prop”,“params”:[“power”,“bright”,“ct”,“rgb”,“hue”,“sat”,“color_mode”,“flowing”,“delayoff”,“flow_params”,“music_on”,“name”,“bg_power”,“bg_flowing”,“bg_ct”,“bg_lmode”,“bg_bright”,“bg_rgb”,“bg_hue”,“bg_sat”,“nl_br”,“active_mode”]}

The receiving buffer granted to each LAN client is of size 256. Requests with size over that will not pass the format checking and got the response mentioned. Please break down the request for now. We can’t promise to enlarge the buffer size because some chips have very limited RAM resource. Every byte counts :slight_smile:

Great, that was the answer I was looking for ! I totally understand there are limitations like this one.

From now, I will do multiple calls when the request size is too big.

Thank you for your help.

Romain.