Roon Extension: Deep Harmony - rich feature set for Logitech Harmony


(Adam Goodfellow) #1

This is now updated to V2.

Please see posts at


and


[Obsolete]

Hi all, this is the first (beta) of an extension I have been working on for a while for Logitech Harmony.

It is currently provided as docker image for Linux that has been tested on a QNAP TS-251+ NAS under container station.

Current main Features:

  • Volume step up/down from within Roon controller UI
  • Select/standby activity from within Roon controller UI
  • Transport control of Roon from your Harmony Remote control:
    • Play
    • Pause
    • Stop
    • Skip forward
    • Skip backward
    • Previous
    • Next
    • Shuffle toggle
    • Loop mode cycle
    • Auto-Radio toggle

I would welcome any comments and feedback from anyone willing to give it a go.

While I am a long time commercial developer, I am however new to node, docker, home automation devices etc, but I have been using this in earlier forms for a couple of weeks without notable issue.

To locate from within container station on a QNAP NAS: search for ‘Khazul’. You should find khazul/roon-extension-deep-harmony. Make sure that when creating the container, you go into advanced settings, networking and select host or bridge mode otherwise neither Roon nor Harmony will be able to discover it.

Readme with install and setup guidance can be found at
https://store.docker.com/community/images/khazul/roon-extension-deep-harmony

Enjoy :slight_smile:

Note: This is not for Docker for Windows or Docker for Mac as Linux docker images can not discover Harmony and Roon due to running in a virtual machine on a virtual network on these platforms.

It is built and tested on a QNAP 251+ and should work on x86 based 64 bit Linux-like OS with docker (including Synology NAS, intel NUCs with Linux etc). A 32bit ARM image for R-PI docker will soon be available.

Windows and OSX support is being investigated, but most likely this will not be via docker.


Controlling Roon with Harmony Remote?
(Rene Bouwmeester) #2

Hey Adam,

Nice job – and thanks for sharing!

Anecdotally:

I put the container on a Synology NAS without problems. Extension was seen by Roon immediately and it found the Hub instantly. Saving took two tries (first time got stuck in an endless saving loop). While changing device settings, Roon crashed once. Second time changing Volume Control and adding External Source Control was fine.

Everything from the Roon side appears to be working nicely – I’ll get around to doing the phantom-Roku bit once my daughter is put to bed. :smiley:


(Adam Goodfellow) #3

Thanks for the feedback :slight_smile:

Good to know it runs on a Synology :+1:

There is a known occasional UI controller crash that I have had happen when saving settings. I am still no closer to isolating a specific cause however. A crash when changing volume controls however is new - thanks for raising that.

Have you had other volume control extensions active in the past? I shouldn’t matter, but it may be related.

Due to the amount of device churn I go through when developing and testing I must admit, I have got into the habit of resetting device settings via the ‘Load Defaults’ button and have not had any setup related issues for a while as a result.


(Jan Koudijs) #4

Sounds similar to this:


(Rene Bouwmeester) #5

Not recently. Ans no problems since.

I couldn’t help myself and added the Roku + button remapping to my Harmony setup already. No problems whatsoever.

My main setup is a Meridian endpoint (MS200) connected to a pair of Meridan DSP speakers, so I already had most of the sexiness in my system (volume controls & play/pause/forward/next from the remote and app).

I added your extension to a different, ‘dumb’ zone that’s also connected to the Meridian speakers (Allo DigiOne). It now has all the features of the Meridian zone (including auto-system-on-by-pressing-play-in-Roon and system-off-from-Roon) – with a few extras to boot.

This also means that basically any Roon system / setup can be fully remote controlled with a simple Harmony Hub/Companion setup for less than $150. That’s pretty big.

Oh… And there a handy quick access iOS widget to top it off:

Once again thanks, Adam. This is impressive stuff.


(Adam Goodfellow) #6

Thanks for the heads up - ill have a close look at that. :+1:


(Adam Goodfellow) #7

Your most welcome :slight_smile:

There are some oddities with the way harmony handles Roku devices as play and pause both map to play which is the reason why I use play and ok (for pause).

However, looking at this widget, an option to enable them both as play pause might be a good idea as the widget uses underlying harmony device command instead of your remote button layout, so the pause button wont work. I plan to add editable mappings eventually once I get some time to research the Harmony control sets for Roku devices some more or maybe find an alternative with far more buttons (I planned to added button support for short cuts for chosen internet radios and play lists - it in there already, just not enabled yet).


(Rene Bouwmeester) #8

Radio’s and playlists sounds great. I may be running out of buttons… :slight_smile:

One last oddity: I changed activities to have your extension control the DigiOne zone. The new activity is selected in the extension settings:

But in device setup, only the previous choice is available:

In power options the new one is shown:

It all worked fine though. Restarting the container did not help, but a reboot of Roon Core fixed things right up:


(Adam Goodfellow) #9

Thanks for the details. I’ll look into it.

Currently this is implemented to only handle a single hub + zone per instance (I plan to do multi hub and multi-zone when I resolve the settings issue just because the settings UI gets complex). For multiple hubs and zones, then multiple docker containers is probably the best way in the short term.

In theory, it should update the device names in the core as activity and/or hub names change (ie when you change them in harmony) and when activity is changed/reassigned in settings, though evidently not when an activity is reassigned, so thanks for raising that :slight_smile:


#10

Awesome work @Adam_Goodfellow thanks :+1:
Would it be possible to add mute/unmute functionality?


(Adam Goodfellow) #11

Thanks for the comments :slight_smile:

Mute/Unmute should be working from within Roon (or at least it is for me via Harmony to my Yamaha A-S2100 amp via IR remote), I am puzzled if it isn’t. It does depend on the device associated with volume control in harmony having a mute function assigned in Harmony.

Please check that you have a mute function assigned in the harmony activity and the device used to control volume in Harmony if you don’t mind. It may be worth looking at the activity control panel in the Harmony phone app and checking if it present and works as well. Does it work from your harmony remote?

Thanks


#12

Yes it is working when clicking the speaker icon and from the Harmony remote but not when using the CTRL+M mute/unmute shortcut from Roon.
Volume up/down shortcuts CTRL+UP and CTRL+DOWN works like a charm :+1:

Thanks once again :smiley:


(Adam Goodfellow) #13

OK thanks for the detail - I can reproduce as per your description.
Puzzling as it does seem to work correctly via the mute toggle icon however :slight_smile:

The behaviour as currently implemented by this extension is intended as follows:

Mute is a blind toggle (ie does not know the real state of an amp due to IR control via harmony having no feedback)
When volume is adjusted up or down, then I assume that the amp being controlled will release its mute and thus I tell Roon that the device is unmuted when volume up/down is used. There may be value in making this tied behaviour between volume and mute a user option perhaps.

It seems that when I use the mute icon to toggle that always works, however, while Ctrl+M does indicate the correct state, it seems unable to make it toggle.

I am actually wondering if this may be a Roon controller UI issue but will look into myself before raising it.


#14

Thanks :+1:


(Adam Goodfellow) #15

Hi, found the issue with mute from keyboard, so fix will be upcoming for that soon.


#16

Awesome… Looking forward to your fix :smiley:


(Phil Kemp) #17

any hints on how to install on a stock ubuntu 18.04 instance. i have docker installed and tried to run the pull. it gave me an error that version ‘latest’ was not available. i’m a docker newbie so it might be driver error. any help would be most appreciated. i seem to be able to use a command line interface for docker. is there a gui interface that can be used for docker on ubuntu?

Cheers
PK


(Jan Koudijs) #18

You have to append the version tag

docker pull khazul/roon-extension-deep-harmony:version1.0.0.37-beta

(Phil Kemp) #19

thank jan…


(Adam Goodfellow) #20

May bad - I probably should have pushed an image tagged as latest. Have done so now.
For anyone running this, that image tagged as latest is the same as build 37.

There is probably a better way to manage this, but I’m new to docker as well.

In other news…

I have a fix for the keyboard mute pending, however I am holding off while I look into ways of getting either some kind of self-update mechanism in place and/or some means of automated settings transfer between docker images working. I have the latter working, but would prefer to get a reliable self update working.

Once that is done and updates can be made as simple as Roon’s own updates, then I plan to release that (might be later this week depending on day job work load) as it paves the way for a bunch of other features that are in progress to bring some more basic stereo receiver / AVR like remote convenience to Roon zones.