Control Naim Uniti or Naim Mu-so via IP command flows

Naim is a British manufacturer of HiFi equipment that has released mid-end and high-end all-in-one streamers in their Mu-so and Uniti (Atom, Star and Nova) lines.

As far as I know, there is no public release of the API for IP/http control of the Naim units.

Since there is a Naim iOS/Android app available, I figured that it should be possible to reverse engineer the IP commands to control Naim all-in-ones with Homey. With some trial and error, I managed to extract some basic commands to control the Naim units via Homey flows.

First, get your local IP address of your Naim device. The port used by Naim for http-requests is: 15081.

You can make flows using logic:

The following specific IP commands can be used:

Power on send a PUT request to:
http://[Naim IP]:15081/power?system=on

Power standby send a PUT request to:
http://[Naim IP]:15081/power?system=lona

Set source/input send a GET request to:
http://[Naim IP]:15081/inputs/ana1?cmd=select

ana1 = analog source #1
ana2 = analog source #2
dig1 = digital source #1
dig2 = digital source #2
Etc.

Play send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=play

Pause send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=pause

Stop send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=stop

Mute volume send a PUT request to:
http://[Naim IP]:15081/levels/room?mute=1

Unmute volume send a PUT request to:
http://[Naim IP]:15081/levels/room?mute=0

Set volume to a specific value (“25” in this example) send a PUT request to:
http://[Naim IP]:15081/levels/room?volume=25

There is a volumeIncrease command, but so far I could not get this to work. Any help/suggestions to get this to work would be appreciated.

2 Likes

A few extra commands:

Toggle Play/Pause send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=playpause

Next Track send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=next

Previous Track send a GET request to:
http://[Naim IP]:15081/nowplaying?cmd=prev

As a temporary workaround for volume control, the following strategy can be used:

  • install the Naim Uniti / Mu-So unit as a Chromecast device in Homey.
  • use the Chromecast flow chart ‘Set relative volume to [%]’. 1% increases the current volume by 1.
1 Like

Hi @zigvespa , dont know maybe this helps? The author makes this for my Neeo Remote. meta-naim/naim.json at main · jac459/meta-naim · GitHub

Thanks, I’ve searched quite some Github codes to discover commands to control Naim units (in case anyone is wondering, Uniti units use Zigbee on the remotes, not IR).

Hadn’t seen this particular one yet. The direct IP commands I had already discovered.

Not really sure how to translate these volume up/down command lines to code that I can feed Homey through logic or any other type of flow. Anyone able to help?

"VOLUME UP": {
                "label": "",
                "type": "static",
                "command": "",
                "evalwrite": [
                    {
                        "variable": "VolumePlayed",
                        "value": "DYNAMIK (Number($VolumePlayed)<100)?Number($VolumePlayed)+1:100"
                    }
                ],
                "evaldo": [
                    {
                        "test": true,
                        "then": "__VOLUMESET",
                        "or": ""
                    }
                ]
            },
            "VOLUME DOWN": {
                "label": "",
                "type": "static",
                "command": "",
                "evalwrite": [
                    {
                        "variable": "VolumePlayed",
                        "value": "DYNAMIK (Number($VolumePlayed)>0)?Number($VolumePlayed)-1:0"
                    }
                ],
                "evaldo": [
                    {
                        "test": true,
                        "then": "__VOLUMESET",
                        "or": ""
                    }
                ]
            },