kirknorthrop / squeezelite

Automatically exported from code.google.com/p/squeezelite
Other
0 stars 0 forks source link

Feature Request: HDMI-CEC support #53

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
I would like to request HDMI-CEC control support as part of SqueezeLite or as a 
plugin for Logitech Media Server. 

I use SqueezeLite on a Raspberry PI as part of SqueezePlug 6.02. I use HDMI to 
connect my RPI to a HDMI-CEC capable receiver. LibCEC is a library available 
for Raspberry PIs and PC that allows communications/control with other devices 
on an HDMI network. Currently Raspbmc uses libCEC to allow seemless integration 
of the Raspberry PI with connected TVs and receivers.

HDMI-CEC support in SqueezeLite could allow SqueezeLite to turn on/off with the 
connected receiver/TV, the play/pause/arrow/enter/etc keys on the receiver/TV 
remote to be transmitted to Squeezelite. When squeezelite is turned on via an 
android app, it could turn the receiver and select the correct source. In short 
SqueezeLite/RPI would be an integral part of a hometheater system as if it was 
a factory feature.

I'm not much of a Linux programmer but have dabbled with controlling HDMI-CEC 
through bash scripts. If this feature is of interest I could offer my help 
mapping the HDMI-CEC command strings as well as testing the integration.

Thanks!

Original issue reported on code.google.com by Warpsh...@gmail.com on 6 Dec 2013 at 2:57

GoogleCodeExporter commented 8 years ago
I'd suggest to request such a feature at LMS. Squeezelite is beeing controlled 
by LMS (only). To skip a track you have to talk to LMS to skip the track, not 
to squeezelite.

Original comment by joky...@gmail.com on 19 Jan 2014 at 7:33

GoogleCodeExporter commented 8 years ago
I'd also love to have this feature in SqueezeLite, especially to be able to 
power on the receiver when squeezelite is turned on via a mobile app.
I think it's a squeezelite feature (client side) and not LMS feature (server 
side) since HDMI-CEC commands have to be sent to a device connected on client 
side (RaspberryPi hosting squeezelite).

Thanks 

Original comment by mammuu...@gmail.com on 15 Feb 2014 at 5:31

GoogleCodeExporter commented 8 years ago
I'm agree with mammuu. This feature could be implemented in client side and not 
in the the server side.Because we can have many squeezebox and not specially 
plugged on HDMI AV receiver 

Original comment by keveen.v...@gmail.com on 26 Feb 2014 at 8:05

GoogleCodeExporter commented 8 years ago
Maybe what makes the most sense to add the ability for squeezelite to call an 
external script everytime an even occurs. This was you can build you own script 
to send HDMI commands, IR commands or whatever other commands you want 
squeezelite to drive.

Original comment by Warpsh...@gmail.com on 5 May 2014 at 11:46

GoogleCodeExporter commented 8 years ago
Hi all, a hdmi cec support for squeezelite would be very much appreciated. I 
have installed squeezeelite and the LMS on a Raspberry PI, which is equipped 
with a hdmi cec adapter (pulse eight). The adapter is able to turn on my Denon 
AV receiver via hdmi and it also makes the receiver to choose the right input. 
At least it works every time when I reboot the PI. 

It would be great if there were a connection via hdmi between squeezelite on my 
PI and my HDMI cec enabled amplifier. Maybe a plugin for LMS could be helpful 
to configure the hdmi settings for each player. 

I' am just wondering if there is a way to turn on a hdmi amplifier every time 
when a squeezeelite player is switched on. I usually control the player with 
the Ipeng remote app and I would also like to synchronize the volume between 
squeezeelite and the amplifier via HDMI CEC.

At the moment I have installed the squeezeplug image on my PI, which doesn't 
make it easy to configure HDMI CEC settings. 

Are there any ideas how to get this working?

Original comment by Martin.S...@web.de on 12 Jan 2015 at 10:12

GoogleCodeExporter commented 8 years ago
Martin,

Raspberry PI has a library called LibCEC that can send and receive HDMI-CEC 
commands. Adding the ability to call external shell commands to call LibCEC 
should do the trick. 

Original comment by Warpsh...@gmail.com on 13 Jan 2015 at 6:15

GoogleCodeExporter commented 8 years ago
Thanks! LibCEC is installed on my PI and  seems to be working properly. At 
least the hdmi CEC device turns on my amplifier and TV while the PI is 
rebooting. How can I add the ability to call external shell commads to 
squeezeelite? Which shell commands must be sent to power on/off the amplifier 
and to control its volume? Many thanks for any advice in advance!

Original comment by Martin.S...@web.de on 18 Jan 2015 at 10:32

GoogleCodeExporter commented 8 years ago
I installed the python-cec libcecs bindings for Python on my PI (Squeezeplug 
Image):

https://github.com/trainman419/python-cec

It offers the possibility to control my hdmi-devices directly from a python 
script. I have tested it and it works pretty well.

Depending on the remote action codes in squeezelite the python script could 
send certain hdmi commands to the amplifier. Do you think it´s possible to 
make squeezelite call a python script on remote actions or is it a stupid idea 
to do this in python?

Original comment by Martin.S...@web.de on 2 Feb 2015 at 9:48

GoogleCodeExporter commented 8 years ago
It would be a nice feature.

Original comment by ravserap...@gmail.com on 2 Feb 2015 at 9:59

GoogleCodeExporter commented 8 years ago
This thread has some more info:
http://forums.slimdevices.com/archive/index.php/t-76220.html

In particular, you could telnet to the LMS server:
$ telnet lms.server.address 9090
then subscribe to the play command:
subscribe play

Then, when a player starts playing, the telnet session will get sent the MAC 
address of the player, e.g.:
00%3A84%3A67%3A56%3A3a%3A12 play

This could all be wrapped into a little daemon which runs on the Pi, which 
opens the socket to the server, subscribes, waits for a play command on a 
particular MAC, then issues the CEC command to power on the amp. The script 
could also wait for a CEC command and send the corresponding command to the LMS 
server.

I might have a play with getting something like this working shortly

Original comment by askvic...@gmail.com on 14 Feb 2015 at 1:53

GoogleCodeExporter commented 8 years ago
This would be an amazing feature. Especially if implementation could mimic 
behaviour of an actual Squeezebox player (turn on/off via app or LMS)

Original comment by Filip.St...@gmail.com on 17 Feb 2015 at 8:31

GoogleCodeExporter commented 8 years ago
OK; I've written a little script to do this; see it at 
https://gist.github.com/askvictor/5f7fecc3c5f7ca578bca

Edit the config, then start the script. It will listen for the play command 
issued to the selected squeezeplayer, then trigger a CEC command to switch on 
the configured recevier, and change the input to the selected one.

Ideally it would automatically start on bootup of the pi; you're on your own 
here. It also hasn't been tested much for stability over time, and doesn't do 
much error checking. 

I run XBMC on the same pi as squeezelite, and I haven't tested the 
interoperability of them yet.

You'll need to install python-cec first: 
https://github.com/trainman419/python-cec

Original comment by askvic...@gmail.com on 18 Feb 2015 at 9:38

GoogleCodeExporter commented 8 years ago
many thanks, looks perfect. I will install the script as soon as I will have 
some time....

Original comment by Martin.S...@web.de on 20 Feb 2015 at 8:40

GoogleCodeExporter commented 8 years ago
Hi askvic, your script doesn't work on my raspberry, the error i get is: 

osmc@osmc:~$ sudo /etc/init.d/hdmicec                                           
Traceback (most recent call last):
  File "/etc/init.d/hdmicec", line 3, in <module>
    from future.standard_library import install_aliases
ImportError: No module named future.standard_library

Any way to fix this? :)

Thanks

Original comment by igl...@gmail.com on 21 Apr 2015 at 11:07