[RELEASE] Onkyo Multi-Zone AVR Driver

[UPDATE v0.9.210324.0 OnkyoMultiZoneAVRChild.groovy]
Fix: Lower case or single digit volume level command values cause ZZZN/A response (where ZZZ represents the zone command prefix).

[UPDATE v0.9.210320.1]
Fix: text logging settings being ignored

I'm happy to announce the release of the Onkyo Multi-Zone AVR Driver. The driver supports up to 4 zones (Main and Zones 2-4) by creating a separate child device for each selected zone.

Each installed child/zone supports the following functions:

  • Zone Power: On/Off
  • Zone Volume Level
  • Zone Muting: Muted/Unmuted/Toggle
  • Input Source: selection by index number
  • Input Source Naming: allows attaching a name to the input index
  • Input Source: by raw 2 character hex value (see Onkyo eISCP Protocol document for model-specific input code values)
  • The ability to send a raw eISCP command which should allow you additional control above the core functions listed above (see the Onkyo eISCP Protocol Documents in the Docs folder for this driver for additional information regarding available commands)

Please refer to read me for installation instructions.

6 Likes

I'll take it for a spin and see how it goes. Thanks for this! I know Zone 2 has been asked for a lot.

Happen to have a link to the document for this setting?

image

Edit: I just played around with the setting until the volume matched.

Glad you were able to find the right setting. In case anyone else is looking, there are four ISCP protocol docs in my repo covering models released between 2011-2017. Each Excel doc includes a tab sheet for each zone that defines which codes and value ranges are applicable along with a matrix of the AVR models that were supported at the time the protocol doc was published.

I'll be trying this out, too. Thanks.

Worked like a charm. For whatever reason, Samsung TVs don't play well with Onkyo's so one of my AVR basically went unused. With this, I'll be able to automate everything just like HDMI-CEC should. Thanks so much for breathing some life into my living room.

1 Like

I just pushed out a release for the Child driver (OnkyoMultiZoneAVRChild .groovy) that fixes an issue that causes some volume settings via a dashboard tile to be ignored--see first post.

Hoping for some help getting this working. I tried out the native Onkyo AVR device from the Hubitat list and it worked fine; however, looking for Zone 2 controls I came here. I followed the instructions for install; however, the commands do not do anything. The status on the parent device doesnt refresh, the commands from the main don't work. I have an TX-NR656... not sure where to start to fix?

I think the native driver supports zone 2 now.

I'm sure you've already done most of this so I apologize for the basics but I want to make sure we're on the same page.

First, make sure you have the Hubitat log open on a separate browser tab.

Next, open the Onkyo AVR Parent driver page in another browser tab.

On the AVR parent settings page, enable debug logging, verify that the Onkyo IP and port settings are correct for your receiver, and select all of the zones you want to control.

Next, turn on "descriptive text logging" and "debug logging" and click the "Save Preferences" button, then click the "Initialize" button.

Look at the logs--if there any errors related to the the Onkyo parent or the child "Zone" devices grab a screen clip and post them here.

Assuming there aren't any errors continue below...

You should have a separate child "Zone" device for each zone you selected above. Open the main zone in a separate browser tab.

Next, turn on "descriptive text logging" and "debug logging" and click the "Save Preferences" button, then click the "Initialize" button.

Click the "On" and "Off" buttons on the child device page and check if the receiver responds.

Repeat this process for the remaining "Zone" devices.

Lastly, post the log output for the parent and child devices.

EDIT: For completeness, here's what my "Main Zone" device settings look like:

I have not done logging before, thank you for your patience and explanation. I can confirm the ip address and port appear to be correct, the same ip and port are used on the native hubitat driver and it does operate the receiver.
Parent logging is unremarkable to me - I can't tell / interpret if the receiver is responding. Images from that at the bottom.
The only thing I see to note is that, clicking the initialization button on either Main Zone or Zone-2 causes a simple single line in the log with "warn".


Clicking the On/Off buttons do not produce log entries, nor do they operate the receiver.

Log Screen Shot from clicking Initialize on the Parent.

Unfortunately native driver does not. It’s been requested since late 2018 :disappointed_relieved:

The log output isn't showing any errors but there's no response from the AVR. The "warn" log entry is fine--the "warn" logging level is to ensure a log entry is added if "descriptive text logging" and "debug logging" are both turned off.

A couple of things you can try:

Although the AVR shouldn't have an issue with multiple telnet connections, it's possible that the TX-NR656 only supports a single connection and the native Onkyo driver is preventing the multi-zone driver from connecting. Try temporarily setting the native driver's telnet IP address to a bogus unused IP address and repeating the steps in my first response. Note that you'll need to click the "Save Preferences" button on the native Onkyo device settings to save the new IP address. I'd also click the "Initialize" button on that page as well.

If that fails to produce any results you may want to try the other eISCP termination options:

onkyo parent 2

Remember that you'll need to click the "Save Preferences" and "Initialize" buttons with each change.

1 Like

FIXED.
Thank you for taking time out to walk me through logging and such. The problem was as you suspected, the second connection attempt was being ignored because the first device had not disconnected. While I had suspected this and tried to remove it early on, the Hubitat hub needed a reboot before it reset everything.
So, long story short, there can be only one device family setup, and if you've played around with two different drivers and devices, you'll should delete one and reboot and try then.

1 Like

Great--glad to hear you were able to get it working.

FYI if anyone has issues with this, mine wouldn’t connect until I rebooted the Hubitat. Works great since.

Thanks to all those involved with the coding!!

2 Likes

Very excited that I find this. My current denon AVR driver just stopped working all of a sudden . Good chance to upgrade to this one !

1 Like

I also noticed there is a HEOS driver someone put together . I wonder if there iare any overlaps in functionality . My end goal when I have time is setup up my denon/heos system so I can have the music follow me around the house . After I finish the other 20 projects I started of course .
Confused Always Sunny GIF by It's Always Sunny in Philadelphia
If anyone’s interested in working on thisidea with me in the future I’d love to turn it into a hubitat app. I’ve not done any hubitat development yet and this seems like a cool thing to share if it’s possible .

@SteveV
Thank you for creating this. I concur that I had to reboot after setting up (and also previously had the native driver and had removed that device and rebooted before installing this one).

One observation I've made is that after I return to the parent device, the preference for main and zones selected on installation show up unset. There are two children (I only used main and zone2), but the setting on the parent is empty. I was doing this to turn off debug logging, and it required me to put them back in order to submit.

Minor, to be sure, but wanted to let you know.

1 Like

I noticed this as well early on but I was never able to find a solution. It's a driver preferences setting that doesn't appear to update to UI when the page is refreshed.

The reboot requirement is also a bit of a puzzler. I can only assume that the telnet connection to the native driver isn't being closed when the native driver is removed. I'll have another look at the UI issue when I have some free time--not sure there's much I can do about the reboot requirement,

1 Like

I have this code installed on my Hubitat C7 and I am trying to figure out what I missed in the setup.
I have put my TX NR717 IP Address, port 60128.

I don't seem to be able to make a connection to the receiver from Hubitat.
When I run the Device if I hit initialize, I see an entry in the live log INFO initialize () called followed a couple of minutes later by
WARN failure message from web socket failure: No route to host (Host Unreachable).

The TX NR717 has a static IP address and the network is set to allow wake from sleep.

from my development machine I can access the Hubitat Hub and I can telnet to Port 60128 and establish a connection with the TX NR717 so the port is open and responding to telnet.

From pressing the device controls buttons I see this in Hubitat logs:
If I click initialize in the parent or the child
I see warnOnkyoTXNR717AVR - Main initialize.
If I hit Volume, Mute, unmute, Vol Up or Vol Down I see nothing in the logs.

I am unsure how to figure out where the issue is.
With Wireshark I see the following ports open 80, 8088, 60128 on 10.10.0.84 the TX NR717
I can attach to the TX with Telnet to port 60128 and establish a connection.
I have rebooted the C7 hubitat a few times

Is there a way to test telnet connectivity from the HUB?
Can anyone give me a shove in the right direction to track down the missing link?