I have found the existing remotes don't work brilliantly in my setup, specifically
- I use zoneswitch so content is automatically played in the right zone, all existing remotes make you choose a zone as an entry point which confuses users
- I use the WDM driver to allow external content (netflix, iplayer and other web based content, an hdmi capture card for my cable box) to be routed through jriver's audio engine & use a zoneswitch rule to route this content through a particular zone (the problem here being the active zone doesn't change when you do this so users can no longer use any existing solutions as a volume control)
i.e. I use my HTPC for the same role as you would typically use an AV processor, master volume control and source selection.
I wrote my own remote to fill this gap & thought I might as well mention it here in case anyone else finds it useful.
FeaturesSome pics are attached to show what it looks like and how it works, a brief recap
- the icons down the left are configured in the server and are effectively the "sources" you can choose between, clicking on any one will trigger the configured command to fire on the server
- all screens show the volume slider with +1/-1/mute buttons near the top, this controls the volume in the active zone
- commands can be configured to be driving jriver or triggering some external source
- if the command is talking to jriver
- the top menu bar gets an autocomplete search feature which is based on the MCWS/v1/Browse/Children endpoint, selecting an item from that list will instruct jriver to start playback of that item
- the main remote screen has 2 tabs; playing now (v similar to the jremote playing now screen) and remote control (much like the gizmo theatre view screen)
- if the command is talking to a tivo
- the top menu bar gets a channel select feature (NB: this is hardcoded at the moment to the UK Virgin channel list)
- the main remote screen is a tivo remote control which talks to a named tivo on the network using the web remote protocol (the backend for this is heavily inspired by
https://github.com/wmcbrine/tivoremote)
- if the command is talking to anything else
- you just get a volume control
The UI is designed to fit on a phone sized screen, I've tested this on an HTC One M8, a Pixel 2 XL and a Nexus 6. It does scale up somewhat gracefully as the screen gets bigger but I haven't sought to use that space for anything as I don't personally plan to run this on a bigger screen.
Selecting External SourcesI've used autohotkey for managing external sources. The scripts are in
https://github.com/3ll3d00d/cmdserver/tree/master/ahk and are quite simple, they basically make sure that one and only one of the apps is running
e.g.
if you choose netflix and a browser is open on the iplayer, the browser will be closed and the netflix app will be opened
if you choose some jriver view and netflix is open, netflix will be closed and jriver switched to the requested view
It's important that any command that selects an external source is configured with the IPC zone id so that the app knows to set the zone accordingly.
The app also keeps track of which external source is playing so it can show this in the command list. I have done this via another AHK script (
https://github.com/3ll3d00d/cmdserver/blob/master/ahk/getPlayingNow.ahk) which the app will call periodically if it sees the active zone is playing the Ipc library item.
Running itYou can grab the exe from
https://github.com/3ll3d00d/ezmote/releases/tag/0.1.0 but refer to
https://github.com/3ll3d00d/cmdserver/#configuration (or ask in this thread) on how to configure it. The exe fires up a webserver so simply runs in a command line window.
I was thinking of using
http://nssm.cc/ to run it as a service but haven't got to that bit yet.
Technical Notes- it's a webapp so it needs a webserver, the exe above is a python 3.6 app created by pyinstaller (
http://www.pyinstaller.org/) running a twisted webserver (
https://twistedmatrix.com/trac/), code for this can be found in
https://github.com/3ll3d00d/cmdserver- the webapp itself lives in the ezmote repo, it's a react-redux app which uses material-ui for the ui components