Using the IP/Serial programming interface

Hi,

I’m trying to control my SA30 via IP but am struggling with how to use the published API document. https://www.arcam.co.uk/ugc/tor/SA30/Custom%20Installation%20Notes/SH306E_RS232_SA30_4.pdf

I’ve tried telnet onto 50000 and issue the commands strings but nothing. I’m assuming the string needs to be wrapped with some sort of command but I just guessing.

Can anyone point me to some documentation or offer some guidance?

Thanks in advance.

The guide explains the byte value stream/array necessary to send a command, with telnet you are typing characters so I guess that will be difficult to work out the byte values of those characters to match what represents a valid command…. And there may be some code page conversion going on

Depending on your dev platform I’d look to script this to test…. Open a TCP socket and send the byte stream/array …not tried myself, but something along these lines from a Windows PC I guess powershell - Send/receive byte arrays via TCP - Stack Overflow

1 Like

Hi Johnny, one of the forum members programmed a tool to communicate the SA30 a while ago. It is C#, so it is easy to reverse engineer it. Maybe you should have a look at it? Or ask the author for more information?

1 Like

You can use Docklight (https://docklight.de/) and send commands as hex strings, e.g. power off:

21 01 00 01 00 0D

2 Likes

That was what I needed! I was able to use this product to verify the codes were actually working and that the amp was responding as expected. I then turned my attention to Home Assistant / Node Red which is what I use for my home automation.

I dragged a TCP request node onto my flow, configuring it with the IP and port number the SA30 was listening on. Then added two injector nodes renaming them “SA30-power_on” and “SA30-power_off” I set the payload type pf each to “buffer” and added the following payloads:

[“0x21”,“0x01”,“0x00”,“0x01”,“0x00”,“0x0D”] for the SA30-power_off node
[“0x21”,“0x01”,“0x00”,“0x01”,“0x01”,“0x0D”] for the SA30-power_on node

Manually triggering the injector nodes turns on or off the amps as expected. I’m not seeing the response I’m expecting, but I’m at least now on the right track.

Thanks all that made suggestions and hopefully the above may help someone else.

1 Like

@JohnnyPanda do you happen to have a NodeRed (or Home Assistant) integration that is working for you? This is precisely what I’m looking for myself.

Hi @yankeeinlondon ,

I ended up using a NR change node to set the msg.payload to the hex value I wanted to send to the SA30. Then I pump that message into a NR TCP request node configured with the SA30’s IP address and a port setting of 50000. (Leave the “Enable secure…” unchecked).

Trigger it with a injection node, or whatever and you should be good to go. :+1: