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

I just installed the extension successfully on my Synology (docker). It shows all the right set-up funtions in the Roon UI, but I’m unable to connect the Harmony hub to the system. Harmony hub does not find the TCL 4k Roku TV on my networrk. If I set it up manually, it seem to be working, but the IP scan fails and therefore, the hib never connects to the Roon system.

The extension runs in the host network – see below… Any ideas?

I don‘t exactly remember the process for setting up the Harmony sie of things but was able to get it to work.
Re-reading the setup instructions, the correct order in the Harmony app seems to be:

  1. Add the device
  2. Create the activity
  3. Run the IP scan

Hope this helps.

I finally got it working - but not on the docker on synology. I installed it on another Rpi 4 with docker.

Is there a way to toggle Roon’s DSP with a Harmony remote?

Unfortunately not as far as I am aware. I looked into this a while back and out of that came a feature request either from myself or another user (I cannot remember now) to add this functionality into the SDK.

Actually there are a whole bunch of thing I would like to see added to the SDK - basically enough to enable a full featured web client to be produced with the same functionality as found in the regular client apps. I had always intended to make a full featured web client as close as possible to the client apps, but as I got into it, I ended up abandoning it due to too many missing features and not much liking the navigation model provided by the API. Also at the time, lack of hardware acceleration in the base chomium browser on the R-PI 3B meant it wasn’t as responsive as I would like. However an R-PI 4 with hardware accelerated graphics in the browser (which last time I checked meant a custom build of the browser) would I think be up to the job.

I think that with the recent new features and improvements in Roon, the SDK is becoming long overdue for a major overhaul just from a new functionality perspective, never mind pushing to achieve a full client web app.

Hello @Adam_Goodfellow i’m trying to build a home assistant addon (https://github.com/posixx/hass_addons/tree/master/roondeepharmony) and it looks good; i see the extension within roon, and after enabling it i also see my harmony hubs. But, after i restart the addon within home assistant, all configurations and even the update to the latest version are lost. Do i need to add some additional configuration to my config file in order to store the configuration within the addon?

I have no idea what HA may be trying to do as it is not something I use. From your description it seem it is restoring the docker image back to original (or redeploying it) so of course all changes to its file system will be lost.

DH was only ever intended for simple single volume one time deployment.

I have set out the question on the HA dev forum. In the meantime; it would be a lot neater if the addon uses bridge mode instead of host network mode. I can see port 9080 is used for webui; are there any other ports used? Could you let me know so i can try to use bridge mode?

Some of its incoming ports are dynamic and published via discovery protocols that harmony uses to discover them.

What exactly is it you are trying to do?

As addons in HA are recommended to not use the host network (Add-on security | Home Assistant Developer Docs) i would like to set host_network: false. But if your extension needs incoming dynamic ports to be reachable i don’t think running without host_hetwork will work…

Forget my host-network thingie; it’s fine to run it on the host network. Just the security rating is somewhat low but that’s purely cosmetic. About the losing config: this is what a fellow developer writes on the HA forum:

I don’t know how HAS OS environment works but it does use Docker. You typically run a container with -rm which wipes and starts new each time. Therefore you must specify a volume to save volatile data. I don’t know exactly what HAS OS is doing but it seems clear that every addon I have used is storing volatile data somewhere in the config folder and does not rely on stuff continuing in the container itself. Maybe this can be changed but it doesn’t seem like best practice given that the container has to be rebuilt with every new release

So is there a config or storage mapping i can do to store the config? Otherwise it looks like a dead end…

No idea - it is not a scenario I have ever needed nor tested for…

Like I said, this was always intended for the simplest deployment for people who are unlikely to be familiar with docker.

If I knew what it is you are functionally trying to achieve, then maybe I could help.

As far as i know docker; i need to know the internal path to the configuration files you use. And maybe the path of the files which are replaced when updating the extension from within the extension itself, if that path is different from the configuration file(s).

For example; you use /var/config internally to store the configuration of DH; then i can map this path to a volume location outside the docker image; the configuration files will then be automatically stored outside the docker image and thus will be persistent

OK - it isnt that simple. There are a bunch of files, some of which have dynamic names.

Again - what exactly are you trying to achieve functionally?

I should also point out there is only one other person who has my approval for distribution related handling of this because his work very usefully supports the wider Roon community and I trust his work not to cause support issues.

Sorry my knowlegde of docker is limited. What i’m trying to achieve is to store the configuration changes between extension restarts. For me i don’t need access to these files. I have no idea why this isn’t the case by default. HA is not removing and recreating addons when they are restarted so i would expect configuration to stay as is…

If you want to access the config file - issue a get request to :9080/console/config.
You can also upload config via a post, however it expects a multipart formed in a manner that suits browser based simple file upload (suggest view source on the console page for details).

This extension should be treated as a black box which means I may choose to change the file system layout at any time. The URLs for the console are there for the support of the console web UI and as such are not a supported API, however I have no immediate plan to change them, so they may serve as a means of accessing the configuration at your own risk.

Restarts occur internally with no intervention by docker. Sure, you can restart from docker, but that is like yanking the power lead.

The extension does already provide a means for users to download and upload configuration (via its console UI) if they need to around significant changes to their infrastructure and also as an emergency means of override should their home network setup be getting in the way of normal discovery mechanisms (at least until such are resolved).

Thanks for the explaination adam. It is wat it is. As far as i can tell homeassistant supervisor cleans the image when restarting. Your docker image cannot survive restarts. I’m annoyed that i need to run another device just because of such a minor issue. With my knowledge of hassio addons / docker images i’m unable to determine why these addons all survive restarts configuration-wise and yours doesn’t. Also on these addons configuration information is not accessible and “lives” within the addon, so i think the only way to solve is build a homeassistant-compatible version of your extension.

Then you may find the executable the easiest way in:

Not an option. I will build myself a ubuntu core system and run your docker image on that. As i mentioned before I would have liked to use my overdimensioned Intel nuc running HA for that but again: it is what it is.

Running Fedora CoreOS now witth the image, works perfectly. Tnx

1 Like