I’m creating a custom device for Storm Audio receivers. They have a well documented API that is telnet + LF based. I’ve got the basics working (so it is definitely connecting), however I can’t get volume set to work. The code is here on github.
The receiver users pure decibals, negatively signed. So I’ve set the .VOLUME FORMAT to 1. It then expects the command “ssp.vol.[-XX.X]” to set the volume, for example “ssp.vol.[-30.5]”. So I’ve set .VOLUME SET to ssp.vol.[##] and have also set .VOLUME STATUS to ssp.vol. It doesn’t work.
Anyone know where I’ve gone wrong?
I reviewed your code, compared to both sets of documentation, and things look right.
I have two possible suggestions:
- ssp.vol.[xx] format as documented in Storm API, are the brackets literal or documentation only? In other words, have you tried ssp.vol.xx? I doubt this is it, but throwing it out there.
- As you indicated, the documentation says it is +LF. Roomie says it can send CR (lineio) or CRLF (lineio-crlf), but not LF. Could this be it? I am not sure how to get Roomie to send just LF other than possibly switching to binary or binary-ack mode where you would then encode each command and then end with a \x10.
Other troubleshooting steps:
- Have you tried connecting directly with telnet command just to validate how the syntax is working?
- Could you put nginx in front of the receiver to proxy on behalf of Roomie? This could A) let you see the traffic flows and / or B) strip the CR if that is indeed the problem. Another option for A is to configure your switch for port mirroring and then attach to that port with WireShark to see the traffic.
HTH. Good lucks. If you solve it please post back so we can all learn.
Pretty much in line with what bjs says, I would connect via telnet and then start by doing ssp.vol to see what you get back. Then you know that it is accepting commands and hopefully also if the brackets should be there or not.
Then you could also try a ssp.vol.up and see what that does. If all that is good try ssp.vol.[-30] or ssp.vol.-30 depending on what you get from above.
(all this followed by a linefeed of course)
If all that works try the same in Roomie, then at least you know where to look for the problem.
I figured it out. Roomie was unable to parse the return value for .VOLUME STATUS, and that caused the volume setting to fail. Once I deleted this command it worked fine.
Thanks for checking my work. I don’t believe it is an issue with the LF format, because simple commands like on and off work fine. It is the parameterized commands which are not working.
I have connected directly via telnet. The brackets are literal syntax and setting and reading the volume works fine. here is real telnet session, with input lines shows with a preceeding ‘$’
Hi there, I’m trying to work out volume feedback I have no idea what I’m doing wrong.
Custom devices only work one way - you can a command but there is no way to receive a response unless the RR team program it for you. I suggest you submit a ticket via the Roomie interface and if they have enough other Storm customers requesting volume feedback, they will add it.
Thanks for that will submit ticket