Roon Extension Manager v0.8.1


(Jan Koudijs) #1

As a side step to the extension distribution discussion I would like to show off my implementation efforts for the Roon Extension Manager.

Short description:
Roon Extension for managing Roon Extensions

Description:
At startup the Roon Extension Manager accesses a repository containing the community developed extensions. Via Settings->Extensions within Roon the repository can be viewed and an extension can be selected to perform a certain action.

Possible actions are:

  • Install
  • Update
  • Uninstall
  • Start
  • Stop

Since a picture is worth a thousand words, I created a video that demonstrates some of the actions (the quality isn’t great but the idea should be clear).

Join the development:
Discussions about layering, OS specific optimizations and inclusion in endpoints and servers can be found in the earlier mentioned thread, feel free to join the discussion. If you are an extension developer and you want your extensions included in the repository you can give me a pull request on it or send me a PM with the GitHub link of your extension. Extensions should have a matching support thread on this forum.

Status:
Although development is still in the beta phase, this release is pretty feature complete. So if you are a developer or have used other extensions before, you maybe should give this a try. The repository can still do with more extensions, so developers please apply.

Availability:
The developer beta version of the extension is available on GitHub:

The GitHub page has instructions on how to install the extension.

Important notes!!

  • Use this extension at your own risk!
  • Make regular backups of your Roon database.
  • This extension is in beta status, as is the API it depends on. This means that there can be small or even bigger issues!
  • Using this extension requires some tinkering (as the forum category suggests), I tried to make the installation instructions as clear as possible but things can be slightly different depending on the OS you’re using.

Call for feedback
I wouldn’t have reached this point in development without the feedback I already got. By entering this next phase I hope to get feedback from others as well. So let me know your ideas about this!


Roon Extension: Logitech Harmony Source Control (GitHub)
Roon Extension: Roon Web Controller v1.2.0
Where does one begin?
Let's develop a platform for extension distribution [Repository open]
Can I load the Roon app on my Samsung (Android Pad)
Roon Web Controller Usage Survey - need your input!
Control Roon from the iOS Notification Center as a widget
Roon Extension: Random Radio v0.2.0 (do the album shuffle)
HowTo: Install extensions on Windows in three easy steps
Multi room set up for home
iPad 3rd gen with Roon Remote
Control Roon from the iOS Notification Center as a widget
(Rene Bouwmeester) #2

Hey @Jan_Koudijs – quick update: just installed without any hiccups. I’ll be following this with great interest.

Once again your efforts are much appreciated. I doze off with a slowly fading Alarm Clock setting every night. :slight_smile:


(Fernando Fuentes) #3

Second @RBM no issues here. Will keep a good eye out.


(Jan Koudijs) #4

An update of the Roon Extension Manager is now available!!

Changes

  • Implemented Auto Update. The installed extensions, the repository and the manager itself are updated at the configured time. Auto Update can be disabled by clearing the time field. It is always possible to update individual extensions via the ‘Actions’ pull down menu.
  • Implemented Auto Restart. When the extension manager restarts after an update the controlled extensions that were running previously are also restarted.
  • Implemented watchdog. In case the communication with the Roon Core gets lost after a core update or a network issue, the watchdog takes care that the extensions recover from this situation.

How to install
Read the first post for detailed information and installation instructions.

How to update
If you are updating from the previous release you have to take the following steps:

  • Terminate the Roon Extension Manager process
  • Update using the npm update -g roon-extension-manager command
  • Start the extension using the node <path to extension>/start.js command

As always, I welcome your feedback!


(Jan Koudijs) #5

The update of the Roon Web Controller provided by @Mike_Plugge gave me a good opportunity to test the update function of the extension manager in a real life situation.

I performed the update via the Actions pull down menu within the manager settings. The update went fine and when at completion the extension restarted, it identified itself as version 1.2.0. The only additional action I had to take is to re-authorize the web controller due to the additional Roon APIs that it now uses.

So I’m pretty happy, a nice and up to date web controller without the need to fall back to the command line :slight_smile:


(Mike Plugge) #6

That is great news @Jan_Koudijs!


(Jan Koudijs) #7

@hifi_swlon, Your shared observation deserves a proper reply…

The idea behind this is more than just the extension manager. The extension manager is the first step that bundles multiple extensions in a single entry point. This should make it easier to come up with installers for the different platforms that Roon supports. This step can then be followed by getting it preinstalled on different Roon servers and endpoints.

The current release of the extension manager already takes care that execution is moved to the background and that the console output with the pinging messages gets hidden. All to move complexity away from the user.

How successful this all will be has to be seen. It will depend on if I am able to attract other developers and what the Roon team has in mind for this.


(Pierre Isabelle) #8

Hello,

I have an installation issue and, unfortunately, my knowledge of the relevant packages is very rudimentary.

I followed the installation instructions on the GitHub page. I had to make a minor change wrt those instructions. The line:

cd ~/.RoonExtensions/lib/node_modules/roon-extension-manager

initially failed because the directory “node_modules” was placed directly under “.RoonExtensions.”

After removing “/lib” from that line everything appeared to be working OK: the installation finished with the comment:

  Roon Extension Manager started successfully!
 Select Settings->Extensions on your Roon Remote to manage your extensions.

However, no extensions are shown at this time under Settings->Extensions on my Roon interface. When you say “your Roon remote” do you mean the normal Roon Windows interface or something else?

Thanks in advance for your help.

Pierre


(Jan Koudijs) #9

Hi @Pierre_Isabelle,

Have you installed on Windows?
I noticed that on Windows the lib/ part is indeed missing.

I just released an update to solve a few Windows issues. You may have performed your installation while this work was in progress.
Can you repeat the installation and see if that makes a difference?

If it still does not work, you can start in debug mode by using the following command:

node start.js inherit

The output of this should give us more info.

That’s what I mean.


Ps. I’m working on a Windows installer that installs the extension as a service, this may be of interest to you (probably requires some bug hunting as well).


(Pierre Isabelle) #10

Hello Jan,

Many thanks for looking into this.

Yes, my Roon server is running under Windows 10.

I tried installing a fresh copy of yourcode from github and then running “node start.js”. The result was the same as before: no extensions visible from within the Roon interface.

Then I tried to run “node start.js inherit” but the output from this program did not provide any more debugging info. As you can see at the bottom of this message, the two node commands produced the same info.

Thanks again,

Pierre


Pierre@PC-bureau MINGW32 ~/.RoonExtensions/node_modules/roon-extension-manager
$ node start.js
Inf: Extension Repository loaded

Roon Extension Manager started successfully!
Select Settings->Extensions on your Roon Remote to manage your extensions.

Pierre@PC-bureau MINGW32 ~/.RoonExtensions/node_modules/roon-extension-manager
$ node start.js inherit
Inf: Extension Repository loaded

Roon Extension Manager started successfully!
Select Settings->Extensions on your Roon Remote to manage your extensions.


(Jan Koudijs) #11

OK, looks like the start script doesn’t work on Windows.

This should work (don’t forget the dot):
node .

This way the auto update doesn’t work, so you have to disable that by clearing the update time field in the settings.


(Pierre Isabelle) #12

Yes: “node .” did the trick.

Roon can now see your extension manager, and I was able to install the alarm clock.

As you suggested, I cleared the update time field.

I noticed that the bash window remain active and I suppose this is normal.

Also, I suppose that whenever I restart my computer, I will need to restart your code manually until you can turn this into a Windows service.

Thanks a lot!

Pierre


(Jan Koudijs) #13

You are right about both.
Now that you are on it, maybe you can do me a favor…

I have a first test version of the Windows installer and the only way I can test this myself is in a VM running Windows XP (I’m a Linux guy). Are you willing to test the installer on Windows 10 and give me some feedback on the results?

Just let me know if you want the 32 or 64 bit version and I’ll sent you a PM.

Thanks for stepping in!


(Pierre Isabelle) #14

Hi Jan

Sure, I will b happy to test your 64-bit version (though I epect to be very busy over the next 2-3 days).

Thanks a lot,

Pierre


#15

No :grinning:


#16

This must be an interesting thing for SMG to implement into the SonicTransporter :grinning:

@agillis what you think ?
Just the piece of SW needed ?


#17

I second that motion! Adding this to ST would be great.

I’ve been looking on in envy as running a PC 24/7 for this is not practical for me, although I have tested the alarm and got it working ok.

Nick


#18

Thanks for this, I like the smoother and cleaner install experience in this version.

How do I get other extensions managed by this extension? Only the alarm clock is listed at the moment.


(simon arnold) #19

For some reason over the weekend my extension manager stopped running and thus all the extensions also stopped running. Had to manually kick start it back in to action and then get it to restart all the extensions.

I take it the extension manager wont auto run when Roon starts? Will I have to run it as a service to ensure this?


(Mr Fix It ) #20

Jan does the file you sent for the installation run it as a service? I recall that was maybe implied but just want to be sure