homebridge-naim-unitiqute2
v0.0.1
Published
Homebridge accessory plugin for Naim UnitiQute 2
Maintainers
Readme
Homebridge Naim UnitiQute 2 (UPnP)
Homebridge accessory plugin to control a Naim UnitiQute 2 (or similar Naim renderers) via UPnP/DLNA services exposed at description.xml.
It implements SOAP calls to:
RenderingControl:1at/RenderingControl/ctrl(volume, mute)AVTransport:1at/AVTransport/ctrl(play, pause, stop, next, previous)
Discovered endpoints should look like your device's description.xml serviceList.
Install
Ensure your Naim is on the same network and exposes the UPnP endpoints (e.g., http://IP:8080/description.xml).
Here is a curl command to test. You should see a list of services.
curl http://IP:8080/description.xmlInstall the plugin:
npm install -g homebridge-naim-unitiqute2Configure (UI or JSON)
Using Homebridge UI, set:
ipAddress(required): e.g.192.168.1.XXXport(optional): default8080name(optional): defaultNaim UnitiQute 2
JSON example (config.json):
{
"accessories": [
{
"accessory": "NaimUnitiqute2",
"name": "Naim UnitiQute 2",
"ipAddress": "192.168.1.234",
"port": 8080
}
]
}Supported Controls (mapped)
- Play:
AVTransport#Play - Pause:
AVTransport#Pause - Next/Previous:
AVTransport#Next,AVTransport#Previous - Volume:
RenderingControl#SetVolume(Master) - Mute:
RenderingControl#SetMute(Master)
The plugin exposes a Television + TelevisionSpeaker accessory in HomeKit:
- Active toggles Play/Pause
- Remote keys Right/Left or FF/REW map to Next/Previous
- Volume/Mute are absolute volume and mute
Manual SOAP Example
curl "http://192.168.1.234:8080/RenderingControl/ctrl" \
-H 'Content-Type: text/xml; charset="utf-8"' \
-H 'SOAPACTION: "urn:schemas-upnp-org:service:RenderingControl:1#SetVolume"' \
--data-binary @- <<'XML'
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:SetVolume xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">
<InstanceID>0</InstanceID>
<Channel>Master</Channel>
<DesiredVolume>25</DesiredVolume>
</u:SetVolume>
</s:Body>
</s:Envelope>
XMLCaveats
- Source switching is not supported: I could not find a way to set the source in UPnP/DLNA specifications. Help needed to implement this.
- Stopping: Stopping the device via this plugin actually pauses the stream instead of fully stopping, because turning the device on from the off state is done through setting the source, which is not available per above. All these can possibly be observed and implemented via sniffing the communication between iOS app and the device (since the communications is using HTTP). My home network setup didn't allow this, but if you can, please let me know in the issues section.
