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

You are right, this isn’t a latency issue with Roon, but instead a combination of a bunch of things spread all over the place :slight_smile:

  1. The command timeout I used was a bit too conservatively short, hence the tiny movements.

  2. The commands from Roon are volume increment/decrement rather than volume key down/volume key release - as is to be expected.

  3. Command appear to come from Roon in response to Command/Ctrl Up/Down according to the keyboard repeat settings - is often faster than harmony can accept them - hence the excessive queued commands. Again - no surprise here.

  4. I didn’t do anything to prevent excessive command by queue up in Harmony… and

  5. While Harmony does have the concept of command press/command release, it will auto release fairly quickly making the resulting movement jumpy when Harmony is controlled via it API - understandable for safety but annoying.

I can fix the lack of throttle and ensure that the volume will settle within about 1/4 second of releasing the up/down keys and have done so on the new branch against the new Harmony API. I have also extended the command timeout a bit resulting is bigger movements. Overall however it will remain a little bit bumpy.

The result works a lot better on my Yamaha A-S2100 which also has a motorized volume control. Not quite as I would like, but certainly a big improvement and user wont need to scared of holding volume up/down keys (unless there is network lag in Harmony which is beyond knowledge and control of the extension).

Welcome back. In your absence, I installed a NUC/ROCK and am using it as an endpoint. I think I know the answer, but is DH capable of controlling this?

It does not care what Roon is running on so long as Roon and the extension can talk to each other on the same LAN/Wifi subnet.

ROCK however cannot currently host extensions as far as I am aware (unless that has changed in the last 6 months?).

I have deep harmony hosted on my QNAP NAS (x64 linux) under docker. Like you, I have Roon running on a NUC. You can also run it under and x64 Linux docker or Arm7-32 Linux docker, or it can be run as an console executable on any of Arm7 32 Linux (Raspbery PI, Rasbian etc), x64 Linux, x64 windows or OSX. Probably best to host it via docker.

Deep Harmony 2.5.0 Released

Changes

  • Harmony xmpp protocol stack replaced with new websocket stack to support Harmony firmware 4.15.206 onwards
  • Re-wrote harmony hub discovery
  • Added Harmony command throttling that should considerably improve CTRL+UP/DOWN volume control in Roon making it more responsive and preventing queuing of excess commands under reasonable networking conditions.
  • Update node.js to 12.7
  • Update docker images to debian-slim 10.0

While I have been running this version for the past week here without issue, it is the first public release with the Harmony websocket protocol implementation and thus there may be issues I have yet to discover.

GitHub Binary Release Linux (Arm32v7, Linux x64, Windows x64, Mac OSX x64)
https://github.com/Khazul/roon-extension-deep-harmony-release

Docker Repository (Linux Arm32v7, Linux x64)
https://hub.docker.com/r/khazul/roon-extension-deep-harmony

Please see https://github.com/Khazul/roon-extension-deep-harmony-release/blob/master/README.md for full setup instructions.

As usual, existing users should get a notification when the update is available within the Extension view in Roon Settings which can take about an hour or so.

5 Likes

This is awesome, I’ll try it out this weekend! Thanks for all your hard work, Adam

@Larry_Post re alexa control of next track.

If your remote is setup as suggested, then in extension settings, options section see Seek/Skip track function and select reversed dual buttons.

Then you can use Alexa Fast Forward or Alexa ask Harmony to press fast forward depending on the Alexa harmony skill in use.

Variation of the obvious next, next track, skip next etc all seem to result in somewhat unhelpful responses and/or questions from Alexa :wink:

Alexa Pause, Alexa Play Alexa Mute, Alexa Volume Up, Alexa Volume Down all seem to work fine. I would expect ask harmony to Press 0…9 type command to work OK for playlist/radio selection as well.

I have tried dot get the Roku emulation to expose list/radio names to Harmony, but they were ignored.

Thanks, yes setting to reversed dual buttons allows Alexa to respond to FF but I lose ‘next track’ on the hard buttons and only have skip forward

I experimented doing this some time ago but decided I like the hard buttons more than Alexa

Hi,

as I don’t get the update via Roon I killed the older docker container and pulled the latest version to my Ubuntu Server. With:

sudo docker run --detach --restart unless-stopped –network host khazul/roon-extension-deep-harmony

or

sudo docker run --detach --restart unless-stopped –network=host khazul/roon-extension-deep-harmony

the extension doesn’t appear in Roon. If I use the command without network host or network=host the extension appears in Roon instantly. But now the screen of the discovered hubs is empty and a click on “Save” crashes Roon. What could be wrong here?

All setup and works perfectly except for shuffle playlist and asking harmony to press 0…9 type commands. Seems not supported anymore. Tried everything but can’t find the right command to ask Google Assistant to play another playlist. Anybody here on this forum who figured this out?

Hi Norwin,

The command work from the Harmony remote still when you press the buttons.

Interestingly Alexa seems to be doing something stupid with the number button presses:
Alexa ask harmony to press 1 results in ‘OK I’ll change the volume by one units going forward’. It seems that the Harmony skill is not getting a chance to process this.

I must admit I havnt used Alexa for these shortcuts much, so I have no idea when this may have started behaving this way.

Alexa ask harmony to press play works as does Alexa Play once Alexa understands the context is Harmony (for eg after saying Alexa Play Harmony). I am sure Alexa used to set the context following starting an activity from Alexa (For eg Alexa turn on music, but this doesn’t seem to happen any more).

I do not have a Google home, so I cannot try with that.

Hi Enno,
I am not sure what may be happening here. I do know that Roon UI for extensions that create a lot of controls can be a bit sensitive at times for reasons that I do not yet know.

However the docker command:
docker run --detach --restart unless-stopped --network host khazul/roon-extension-deep-harmony

does work as expected on my Raspberry PI docker with Roon seeing the extension immediately.

Running this command without the --network host will never work as Roon will not be able to communicate properly with the extension.

I also not that the command you copied into you post has the wrong dash type before network. Its should be --network host not –network host, though perhaps this was just a result of copying it from elsewhere into your post.

Hi Adam, thanks. Yes the buttons do work but I’m n trying to use the voice commands and routines on Google Home so I can simply say turn on lounge (playlist 7) on living room speaker but no luck so far. Already very happy with what you did so far and as time passes by a solution might be found.

Hi Adam,

thanks for Your answer. Yes, I used the right dash for the command. Now I understand that without the network=host command there is no communication and therefore there are no hubs detected. But why doesn‘t appear the extension if I use the right pattern but appear without the network=host command? I tried a lot of things yesterday, deleting all containers and so on. But no luck.

Hi Adam,

Updated to the new version of the extension and it was originally picked up by Roon

However, while trying to config a 2nd harmony hub/ remote with the new extension the extension crashed on saving and no matter how many restarts of the dockers container, Roon is not seeing the extension in the extension list?

My Extension is hosted in Dockers container on Synology NAS with both Harmony Hubs running firmware 2.15.250 with XMPP Activated

Regards

Mark

Hi Enno,

Are you running Roon on the same server as docker, and/or have you created you own bridge network configuration for docker?

Could you type ifconfig at the Linux command prompt and email me the result (email address PMd to you).

Thanks

Adam

No, Running on Nucleus+ for ROON

Hi Mark,

I would ask you to send logs, however I have just discovered an issue with the updated run time I am using with the latest version that may prevent that. However, it is worth trying anyway.

Take a note of the ip address of you NAS, and enter the following URL into chrome or other convenient browser (not ms edge as it has issues with local network addresses).

http://<ip address of NAS>:9080/logs

If this yields a zip file, could you please email me the zip file. (I have PMd you my email address). It may just yield an error due to the run-time issue I discovered a few minutes ago.

Thanks

Adam

Hi Adam,

Overall a brilliant addition to Roon, so thank you for your ongoing development efforts

I will try and send over logs when I am home tonight

@ Future Development

I currently use the extension for Headless Roon control with Roon Radio + Roon Display which makes for a great user experience.

A key issue is remembering what playlists has been mapped/ associated to each button (0-9). This issue then grows exponentially the more hubs/remotes added (i.e 2 remotes – up to 20 playlist, etc)

Could there be a possibility of mapping the ‘stored playlist or radio links’ names assigned to button for each named hub to a dedicated page / log for review (example below) or another option?

http://ip address of NAS:9080/remote

regards

Mark

I have just discovered a run-time issue with node 12.7 that the latest release is using that could cause a crash under some circumstances involving significant memory use (exporting logs, editing settings being a couple of examples). Therefore, I will soon be issuing an update to revert back to an earlier version of the node run-time.

Adam

Hi Adam,

Sorry no logs. runtime error :9080/logs