Sorry for the delay.
I used the Harmony Android app for the Harmony setup, as you can’t do some things like BT pairing with the MyHarmony Windows desktop app.
Get your TV and A/V receiver devices setup.
Now, add a new device as an Entertainment Device, Manufacturer=Microsoft, Model=PLEX
It defaults to name “Microsoft Media Player” and warns an IR receiver will be needed (not true). Just lie to the wizard and tell it that the device powered on when it told it to.
Create a new activity with the device for using RasPlex and configure your other devices appropriately.
Perform the BT pairing with the device and RasPlex. On the Harmony side, I believe the Android app prompts you to do this in the activity setup wizard. If not, you can get to it in settings somewhere after the device and activity are setup. On the RasPlex side, the UI is somewhere in the RasPlex settings. I’m using a Raspberry Pi 2 with some generic Bluetooth 2.0 USB adapter. It just worked automagically. I don’t know if RasPlex supports the builtin BT adapter in the RPI3 out of the box.
So, some of the commands for that Microsoft/PLEX device transmit HID keyboard keypresses over the BT connection. However, many of them send IR commands (which don’t help us). This makes it challenging to do customizations to get the buttons to do what you want. Many remote buttons already work fine with the default mapping (like arrow keys), but others are mapped oddly or are mapped to send IR signals. I had to experiment to find unused commands on the device that send other BT keypresses so I could map them on the OpenPHT side how I wanted them.
In Harmony setup, in the activity, “Customize Remote”, I setup these mappings from the physical remote button to the “command” for the Microsoft/PLEX device:
Guide: CloseProgram
Menu: Context Menu
Pg Up: ZoomIn
Pg Dn: ZoomOut
Red: Subtitle Tracks
Green: Audio Tracks
Yellow: 1st pinned to taskbar
Blue: Desktop
Some of these commands were just random commands I found that happened to send BT keypresses instead of IR signals.
Now, over on rasplex, I made this custom keymap. Here is my /storage/.plexht/userdata/keymaps/remote.xml:
<?xml version="1.0" encoding="UTF-8"?> <keymap> <global> <keyboard> <equals mod="ctrl">PageUp</equals><!--ZoomIn--> <minus mod="ctrl">PageDown</minus><!--ZoomOut--> <escape>Back</escape> <f4 mod="alt">ToggleWatched</f4> <one>ActivateWindow(10024,plexserver://8c010ab6ec2116901f5cfdbe68016f782d9d9cee/library/sections/2,return)</one> <d>ActivateWindow(10024,plexserver://8c010ab6ec2116901f5cfdbe68016f782d9d9cee/library/sections/1,return)</d> </keyboard> </global> <FullscreenVideo> <keyboard> <escape>SmallStepBack</escape> <o>Info</o> <f4 mod="alt">OSD</f4> </keyboard> </FullscreenVideo> <VideoOSD> <keyboard> <escape>SmallStepBack</escape> <f4 mod="alt">OSD</f4> </keyboard> </VideoOSD> </keymap>
To help explain that a little:
This is overriding the mappings between keyboard keypresses (which in our case are coming over BT) to OpenPHT behaviors.
ZoomIn sends keypress ctrl-equals, which I mapped to Plex command PageUp so the PageUp button works as expected
ZoomOut sends ctrl-minus, which I mapped to Plex command PageDown
“1st pinned to taskbar” seems to send keypress “one” (it may actually be winkey-1) which I mapped to the TV Show list
Desktop sends “d” (it is probably really winkey-d) which I mapped to the Movie list.
CloseProgram sends alt-f4, which I mapped to ToggleWatched in the global state. This lets me use the Guide button on the remote to easily toggle a media item between watched and unwatched state. However, in FullscreenVideo or VideoOSD mode, I mapped it to OSD so it toggles the OSD overlay while watching video.
Back sends escape, which I remapped in the global scope to Back, which I like better than the default mapping to ParentDir. Then, in FullscreenVideo and VideoOSD modes, I mapped it to SmallStepBack which jumps the video back a few seconds.
I don’t recall exactly, but I believe the Info button defaults to mapped to the Info command, which must send an “o” keypress which I apparently mapped to Info in FullscreenVideo mode, which pops up an info overlay similar to the OSD overlay.
Some of those things you’ll surely want to customize (like Pgup/PgDn). Others are just things that make it work how I was used to my old PHT/macmini/Harmony One IR setup working.
Hope that helps you or others get started. Let me know if you have success.
I really wish Harmony would let us create a custom Bluetooth device or at least let us edit the Microsoft/PLEX device commands and change which BT keypresses they send. Or maybe you can already do that I just haven’t found it…