Custom IP controlled device

What are the chances that something like the AV receiver at this link can be controlled using HA, preferably using IP since the device supports the same? Would it be possible for me to create a custom integration for the same? Any pointers for the same?

? Not possible? Generic IP media device?

That’s an API. Code has to be written to use it. Nothing generic will work.

Is it possible that these codes can be replaced with the corresponding codes found in a similar device like a Denon AV receiver? Or is it not as simple as I’m thinking it to be?

And if not, would it be possible to create a simple device that sends codes akin to a custom IR device but instead sends the IP commands and even if there is no feedback from the receiver its fine as long as the commands get to it. Still too diffficult?

I have managed to successfully control some functions of the receiver. The storm audio controller powers multiple high end brands: Focal, StormAudio and Bryston. They accept commands via telnet (see https://www.stormaudio.com/wp-content/uploads/2021/12/Stormaudio_isp_tcpip_api_protocol_fw4.3r0_v20.pdf) for full documentation.

I used the telnet integration to create binary switches to issue commands to the receiver (see the code below). However, I cannot figure out a way to read the status — the telnet integration doesn’t seem to be pulling the status (any help would be appreciated!!)

The following (in configuration.yaml) adds the basic remote commands.


switch:
  - platform: telnet
    switches:
      focal_power:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.power.on\n"
        command_off: "ssp.power.off\n"
        command_state: "ssp.power\n"
        value_template: '{{ value == "on" }}'
        timeout: 0.3
      focal_volume:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.vol.up\n"
        command_off: "ssp.vol.down\n"
        command_state: "ssp.power\n"
        timeout: 0.3
      focal_mute:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.mute.on\n"
        command_off: "ssp.mute.off\n"
        command_state: "ssp.mute\n"
        timeout: 0.3
      focal_bass:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.bass.up\n"
        command_off: "ssp.bass.down\n"
        command_state: "ssp.power\n"
        timeout: 0.3
      focal_treble:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.treb.up\n"
        command_off: "ssp.treb.down\n"
        command_state: "ssp.power\n"
        timeout: 0.3
      focal_hdmi1:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.input.hdmi1\n"
        command_off: "ssp.input.[1]\n"
        command_state: "ssp.input\n"
        timeout: 0.3
        name: "Apple TV"
      focal_hdmi2:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.input.hdmi2\n"
        command_off: "ssp.input.[2]\n"
        command_state: "ssp.input\n"
        timeout: 0.3
        name: "Video Game"
      focal_hdmi3:
        resource: 192.168.1.234
        port: 23
        command_on: "ssp.input.[3]\n"
        command_off: "ssp.input.[3]\n"
        command_state: "ssp.input\n"
        timeout: 0.3
        name: "HDMI 3"
      sony_hdmi2:
        resource: 192.168.1.222
        port: 5384
        command_on: "input \"hdmi2\""
        command_off: "input \"hdmi2\""
        command_state: "input ?"

2 Likes

I really like this but I tried using telnet from the command line and the entering ssp.power.on/n but it doesn’t turn the Storm ISP on? What am I doing wrong?

Did you try \n not /n?

the \n is a representation for LF(Line Feed), Sometime telnet clients don’t translate the \n for you. If you are in the client, try it without the \n; return will send a LF or CRLF — there may be a settings to switch from CRLF to LF. ()