I have openHAB 1.8.2 installed on my Pi3. The Pi is running the latest version of Jessie and has the video disabled to free up resources.
Would it possible or advisable to install Plex Media Player on the Pi? Reason I ask is because I have Plex Media Server running on my NAS and can connect via my Xbox One or my Chromecast/Android. I would like to set up a scene where I could trigger a Plex MP3 playlist based on a Google Calendar event, like a party or Christmas morning, and cast the media to my Chromecast to play on my stereo.
How much of a hit on resources would the openHAB server get when the media player kicks up and hands the playlist over?
If Plex has to do any transcoding of HD content it will probably be a problem. For just day to day streaming and audio it will probably work fine. I’m running OH and Plex on an old laptop together and I rarely if ever see Plex in even the top 10 when I run top.
File/Network IO might be a problem.
I would give it a try and report back here with your results.
As for the Chromecast part, I know someone was working on a Chromecast binding but have no idea what its status is. I also don’t see any way to cause Plex to kick off a Chromecast session (or DLNA or Miracast or any other casting). It looks like the binding is mainly focused on remote control type operations (up/down, power, etc).
You do not need to install Plex on the Pi in order to control it during a scene. With the Plex binding you can control an instance running on another server, even if authentication is required. I am not sure whether you can easily control which content is played though, but that is regardless of where it is installed.
Have a look here: https://github.com/openhab/openhab/wiki/Plex-Binding
I do have a scene that switches on mood lighting and starts playing a random eh… video by navigating through the menu of my Roku player. Example:
rule "Random Video"
Item Roku_random received command
sendHttpPostRequest("http://192.168.0.38:8060/launch/dev?contentID=1") /// Start Plex on Roku
Thread::sleep(10000) /// Wait until loaded. This can take a while and is variable.
sendHttpPostRequest("http://192.168.0.38:8060/keypress/select") /// The media I want is directly under the cursor when I start up
Thread::sleep(2000) /// Wait until loaded. Again, can take a while
sendHttpPostRequest("http://192.168.0.38:8060/keydown/left") /// Press and hold the button on the Roku
Thread::sleep(rand.nextInt(10000)) /// Select a random movie by pressing the button between 0-10 seconds
sendHttpPostRequest("http://192.168.0.38:8060/keyup/left") /// Release the button
Thread::sleep(1000) /// wait until loaded
sendHttpPostRequest("http://192.168.0.38:8060/keypress/play") /// play the movie
say("Playing Random Video")
The same can easily be achieved by the Plex requests.
I did some more research over the weekend and came to the conclusion that what I want to do I can’t do with my devices on hand. Neither the Chromecast API nor binding seem to have the capabilities that I would need.
Back to the drawing board.