Roon Extension: Roon Web Controller v1.0.0 (on GitHub)

Thanks @Mike_Plugge for your hard work :thumbsup:
Looking forward to your next commit. :slight_smile:

@Mike_Plugge Grateful for your effort and contribution. Look forward to volume control, so I can hook up IQaudiO DigiAMP+/ CT165-T2 in the ceiling of a wet room.

BTW, Node.JS version 6.x or higher needs to be installed ā€“ GitHub text needs updating. Otherwise, there is an error: TypeError: this is not a typed array (line 61.) Buffer.from was introduced in version 6.0.0.

@Martin_Webster thanks for the heads up. I will update the README

@Tech_Whisky_Lab no worries! If you are seeing the bug chances are pretty good that someone else will too!

1 Like

A couple of tweaks for Raspberry Pi install:

  1. Start Chromium in kiosk mode
sudo nano ~/.config/autostart/autoChromium.desktop

[Desktop Entry] Type=Application Exec=/usr/bin/chromium-browser --noerrdialogs --disable-session-crashed-bubble --disable-infobars --kiosk http://localh$ Hidden=false X-GNOME-Autostart-enabled=true Name[en_US]=AutoChromium Name=AutoChromium Comment=Start Chromium when GNOME starts

  1. Hide the cursor
sudo apt-get install unclutter
nano ~/.config/lxsession/LXDE-pi/autostart

Add the following to the file:

@unclutter -idle 0

Then reboot.

@Mike_Plugge I find that networking starts after Roon Web Controller which results in a ā€œNothing playing :-(ā€ message. It wonā€™t go away without restarting the service. Iā€™m looking for a fix.

It would seem that the service canā€™t find the stream:

-- Logs begin at Fri 2017-06-02 17:25:32 UTC, end at Fri 2017-06-02 17:27:52 UTC. -- Jun 02 17:25:35 pithecia-aequatorialis systemd[1]: Starting NodeJS app - Roon Web Controller... Jun 02 17:25:35 pithecia-aequatorialis systemd[1]: Started NodeJS app - Roon Web Controller. Jun 02 17:25:39 pithecia-aequatorialis node[537]: Listening on port 8080

sudo systemctl restart roon-web-controller.service

-- Logs begin at Fri 2017-06-02 17:25:32 UTC, end at Fri 2017-06-02 17:29:23 UTC. -- Jun 02 17:25:35 pithecia-aequatorialis systemd[1]: Starting NodeJS app - Roon Web Controller... Jun 02 17:25:35 pithecia-aequatorialis systemd[1]: Started NodeJS app - Roon Web Controller. Jun 02 17:25:39 pithecia-aequatorialis node[537]: Listening on port 8080 Jun 02 17:28:40 pithecia-aequatorialis systemd[1]: Stopping NodeJS app - Roon Web Controller... Jun 02 17:28:40 pithecia-aequatorialis systemd[1]: Starting NodeJS app - Roon Web Controller... Jun 02 17:28:40 pithecia-aequatorialis systemd[1]: Started NodeJS app - Roon Web Controller. Jun 02 17:28:41 pithecia-aequatorialis node[1944]: Listening on port 8080 Jun 02 17:28:42 pithecia-aequatorialis node[1944]: -> REQUEST 0 com.roonlabs.registry:1/info Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- COMPLETE 0 Success {"core_id":"f64746ba-ae67-4f3b-8498-dbd269d5337 Jun 02 17:28:42 pithecia-aequatorialis node[1944]: -> REQUEST 1 com.roonlabs.registry:1/register {"extension_id":"com.pl Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- CONTINUE 1 Registered {"core_id":"f64746ba-ae67-4f3b-8498-dbd269d5 Jun 02 17:28:42 pithecia-aequatorialis node[1944]: -> REQUEST 2 com.roonlabs.transport:1/subscribe_zones {"subscription_ Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- REQUEST 1 com.roonlabs.status:1/subscribe_status {"subscription_ke Jun 02 17:28:42 pithecia-aequatorialis node[1944]: -> CONTINUE 1 Subscribed {"message":"Extenstion enabled","is_error":f Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- REQUEST 2 com.roonlabs.pairing:1/subscribe_pairing {"subscription_ Jun 02 17:28:42 pithecia-aequatorialis node[1944]: -> CONTINUE 2 Subscribed {"paired_core_id":"f64746ba-ae67-4f3b-8498-d Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- CONTINUE 2 Subscribed {"zones":[{"zone_id":"16014110a00127b885eb45 Jun 02 17:28:42 pithecia-aequatorialis node[1944]: <- CONTINUE 2 Changed {"zones_changed":[{"zone_id":"16014110a00127b88 Jun 02 17:28:43 pithecia-aequatorialis node[1944]: <- CONTINUE 2 Changed {"zones_changed":[{"zone_id":"16014110a00127b88 Jun 02 17:28:44 pithecia-aequatorialis node[1944]: <- REQUEST 3 com.roonlabs.ping:1/ping Jun 02 17:28:44 pithecia-aequatorialis node[1944]: -> COMPLETE 3 Success

The systemctl has a directive to start after network. Did you use the systemctl example he posted on his github?

https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/

@Tech_Whisky_Lab Thanks. Just worked that out ā€¦

sudo raspi-config

Then select option 3, B2.

Yes, I used the systemd settings from GitHub.

1 Like

@Martin_Webster
Glad the network issue got resolved for you.

As for launching Chromium automatically, I use a slightly different method since none of my Raspberry Pis have a full desktop environment - they are very minimal builds. I am using Arch Linux Arm though, not Raspbianā€¦

I just install Xorg and the matchbox window manager package (matchbox-window-manager package on Arch Linux Arm, not sure on Raspbian). I then have a systemctl service file that runs a script. This works for Xorg, but since the matchbox-window-manager is not compatible with Wayland, I will have to look for a new approach then.

systemd service file:

[Unit]
Description = Starts Xorg as defined in /home/USERNAME/bin/gui.sh
After = systemd-user-sessions.service network.target
Conflicts=getty@tty7.service

[Service]
User = USERNAME
Group = USERNAME
PAMName=login
Type = simple
TTYPath=/dev/tty7
ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /home/USERNAME/bin/gui.sh -- :0 -nolisten tcp vt7
Restart = always
StandardInput = tty
[Install]
WantedBy = multi-user.target

gui.sh script:

#!/bin/bash
export DISPLAY=":0"
xset dpms 60 60 60 &
matchbox-window-manager -use_titlebar no -use_cursor no &
/usr/bin/chromium --kiosk <URL TO EXTENSION>

@Tech_Whisky_Lab - I have successfully simulated the problem you reported. It is definitely a problem with my parser. I am working on it and hope to have something tonight or tomorrow to resolve itā€¦

1 Like

Maybe a dumb question but does this also the possibility to use an IOS device as an end-point?

@Richard_van_Enteren not as an endpoint. But you could use it as a remote.

@Mike_Plugge Awesome! Looking forward to your fix! :slight_smile:

@Richard_van_Enteren

For the web page, yes. In fact, the html header for this app already contains all of the metadata needed to create at full screen web app on IOS.

Open the site in IOS Safari, click the share icon, then click ā€œAdd to Home Screenā€. This app has all the header information to have a nice icon and to allow it to run full screen.

For the server part, no. The server part needs to run in Node JS

Thanks for your super quick reply!

Thanks for your reply and Iā€™m going to play around with it. Love Roon already and now even more fun to play around with it.

@Richard_van_Enteren - please keep in mind that right now the app is designed for a landscape view. The primary target for this app is a Raspberry Pi Touch screen in landscape view.

So it will look good on an iPad in landscape mode, but right now it will probably not look good on an iPhone or on an iPad in portrait mode.

2 Likes

Thanks for that @Mike_Plugge. I though the full Raspbian was a bit OTT, but I wanted to see your controller working. When I have a little more time Iā€™ll build another image and see how that goes.

One thin Iā€™ve noticed is the screen looks ever so slightly stretched. Just wondering if the display properties arenā€™t quite right.

Looks fine over here. It actually adjusts pretty well for me.
Can you post a screenshot?

Thanks!

The app is designed to scale to the screen, so it is possible that Raspbian is not recognizing your screen size correctlyā€¦

But that is just a stab in the darkā€¦

@Tech_Whisky_Lab - I think I fixed the bug you reportedā€¦

I just pushed a new commit to the ā€œdevā€ branch which has some de-duplication logic in it. It should fix the issue you reported.

The debugging code is still in there, so if you do see something, can you post an updated screenshot of http://localhost:8080/debug.html and the debug.log?

The google drive method for the debug.log was perfect!

1 Like

@Mike_Plugge Awesome! Thank you so much! I wasnā€™t expected you to commit it so quick! Thanks again!

Will pull your commit tonight when I get home.