回答:
@lenikの答えが示すように、テレビはCECをサポートする必要があります。私は、コマンドラインユーティリティが含まれてlibcecのコンパイル済みのバージョンがインストールcec-client
からSourceForgeの次のコマンドを使用して:
wget http://sourceforge.net/projects/selfprogramming/files/libCEC.deb/libcec_2.1.0-1_armhf.deb/download -O libcec_2.1.0-1_armhf.deb
sudo dpkg -i libcec_2.1.0-1_armhf.deb
更新日:2017-02-27
上記のSourceForgeへのリンクは存在しません。この記事によるとcec-client
、次のコマンドを使用してインストールできます。
sudo apt-get install cec-utils
この回答の残りの部分は引き続き有効です。
以下は、コマンドを発行するためのの使用を説明するraspberrypi.orgのスレッドcec-client
です。
echo "on 0" | cec-client -s
echo "as" | cec-client -s
または
echo "tx 1f 82 30 00" | cec-client -s
echo "tx 10 36" | cec-client -s
または
echo "standby 0" | cec-client -s
standby 0
DEBUG: [ 56474] << putting 'TV' (0) in standby mode
TRAFFIC: [ 56476] << 10:36
DEBUG: [ 56477] sending data: len = 1, payload = 10:36
DEBUG: [ 56538] received data: header:00020001 p0:00003610 p1:00000000 p2:00000000 p3:00000000 reason:1
DEBUG: [ 56539] command transmitted
DEBUG: [ 56660] received data: header:00040002 p0:04360001 p1:00000000 p2:00000000 p3:00000000 reason:2
TRAFFIC: [ 56661] >> 01:00:36:04
NOTICE: [ 56661] >> TV (0) -> Recorder 1 (1): feature abort ( 0)
DEBUG: [ 56661] marking opcode 'standby' as unsupported feature for device 'TV'
cec-client
HDMIを介したCEC(Consumer Electronics Control)プロトコルをサポートするテレビが必要です。TVマニュアルまたは会社のWebサイトを参照して特定のケースに関する詳細を確認することをお勧めします。「TV_model + CEC」をすばやく検索すると、いくつかのヒントが得られる場合があります。
基本的に、テレビセットが数年前に作られた場合、CECをセットアップして有効にする方法を見つける可能性は十分にありますが、古いモデルの場合はあまり良くありません。
Samsung CECの実装はと呼ばれAnynet+
ますが、それも検索してみてください。
IR LEDを備えたテレビのリモコンのようなものを作ることができます。あなたがしたいことに関するAdafruitのチュートリアルがあります。同じテーマに関する別のブログ投稿があります。
注: GPIOピンを使用する必要があります。それらを使用したソリューションを探していたかどうかはわかりません。
HeatfanJohnによる上記の回答に従ってcec-clientをインストールした後、Vizio E390i-A1 LED HDTVの電源を正常にオン/オフすることができます。コミュニティ用のスクリプトを作成しました。
以下を介して新しいファイルを作成します。
mkdir /opt/scripts; vi /opt/scripts/turntv.sh
以下に貼り付けます。
#!/bin/bash
#Written by CaptainRewind for the RaspberryPi community
#Modify as needed
#Updated 2014-01-22:
#Now includes full path to cec-client (for cron purposes)
#Also includes "input" command to switch TV Input to RaspberryPi
action=${1}
cecBin="/usr/local/bin/cec-client"
onCommand='echo "on 0" | ${cecBin} -s'
offCommand='echo "standby 0" | ${cecBin} -s'
inputCommand='echo "as" | ${cecBin} -s'
do_on()
{
eval ${onCommand} > /dev/null 2>&1
}
do_off()
{
eval ${offCommand} > /dev/null 2>&1
}
do_input()
{
eval ${inputCommand} > /dev/null 2>&1
}
case ${action} in
on)
do_on
exit 0
;;
off)
do_off
exit 0
;;
input)
do_input
exit 0
;;
*)
echo $"Usage: $0 {on|off|input}"
exit 1
;;
esac
実行可能にする:
sudo chmod +x /opt/scripts/turntv.sh
次に、エイリアスを作成します。
vi /home/pi/.bashrc
以下を追加します。
alias tvon="/opt/scripts/turntv.sh on"
alias tvoff="/opt/scripts/turntv.sh off"
alias input="/opt/scripts/turntv.sh input"
保存、終了、ログオフ/ログオン(または.bashrcのソースのみ)。これで、「tvon」と「tvoff」を使用してテレビをオンまたはオフにできます。
これで、眠りに落ちた場合に備えてテレビをオフにする夜間ジョブをスケジュールできます。
crontab -e
以下を追加します。
00 03 * * * /opt/scripts/turntv.sh off
また、これを支援するスクリプトをいくつか作成しました。私はCaptainRewindより少し進んだが、彼は良い仕事をした。これはテレビを制御するために書かれた単なるシェルスクリプトなので、サポートしていないもの(ボリュームコントロールやチャンネルコントロールなど)は含めませんでした。ハードウェア)、「tv input raspi」などのセットアップ固有の詳細が含まれていますが、「tv input 3」と同義ですが、そのようなカスタマイズを自分で行う方法を確認できるようにそれらを残しました。
「tv on」、「tv off」、「tv input 1」などのコマンドを発行して/ usr / local / bin / tvに配置するか、ホームディレクトリにtvとして配置するだけで簡単に使用できます。 shから直接使用します。
これが一部の人々に役立つことを願っています。
#!/bin/bash
# must be called with a parameter
# tv.sh [command]
# will send the associated command to the TV over CEC.
if [ $# -lt 1 ] #Check to see if at least one parameter was supplied
then
echo "Must be called with the command to send to the television"
echo "Examples include on, off, and input."
echo "example: " $0 "input PC" # $0 is the name of the program
echo "For help, use: " $0 " -? "
exit 1
fi
case $1 in
"-?") echo "Supported commands include: on, off, status, as,"
echo "input [source]" ;;
## begin list of commands.
## most of these came from http://www.cec-o-matic.com/
## more can be added, including proprietary commands.
"on") echo "on 0" | cec-client -s ;;
"off") echo "standby 0" | cec-client -s ;;
"status") echo "pow 0" | cec-client -s |grep "power status:" ;;
"as") echo "as" | cec-client -s ;;
"input")
if [ $# -ge 2 ] # if there were 2 or more parameters
then
case $2 in # check the second one
# NOTE: These must all be broadcast to work. (2nd nibble must be F)
"1") echo "tx 1F 82 10 00" | cec-client -s ;;
"bluray") echo "tx 1F 82 10 00" | cec-client -s ;; # same as 1
"2") echo "tx 1F 82 20 00" | cec-client -s ;;
"3") echo "tx 1F 82 30 00" | cec-client -s ;;
"pc") echo "tx 1F 82 30 00" | cec-client -s ;; # same as 3
"raspi") echo "tx 1F 82 30 00" | cec-client -s ;; # same as 3
"4") echo "tx 1F 82 40 00" | cec-client -s ;;
esac
else
echo "input needs a second parameter"
echo "usage: " $0 " input [input name]"
echo "input name is 1-4, bluray, pc, or raspi"
fi
;; # end of the input case
*) echo $1 "is not a recognized parameter. " $0 " -? for a list." ;;
esac
exit 0
XBMCの最近のバージョン(現在はKodi 'と呼ばれます)で再試行したい場合がありますスタンバイ状態にするか、テレビを再びオンにします。
待機する:
echo "standby 0" | cec-client -s
オン:
echo "on 0" | cec-client -s
ソースを変更:
echo "as" | cec-client -s
ただし、これらの機能はKodiからCECインターフェイスの排他的制御を取得するため、これらのコマンドのいずれかとリモートの動作が停止すると、KodiはCEC制御を失います。Kodiを再び動作させるには、Kodiを再起動する必要があります。
systemctl restart kodi
Kodi(> = 13)には組み込み関数CECToggleState、CECActivateSource、CECStandbyがあります。これらの組み込み関数を使用してPythonを介してこれらのcecコマンドを渡すか、cecハードウェアを共有モードで開く可能性を探しています。http://forum.kodi.tv/showthread.php?tid=207524およびhttps://discourse.osmc.tv/t/control-tv-on-standby-toggle-using-cec-kodi-built-in-機能/ 3638/4
echo "standby 0" | cec-client -s
は、パナソニックテレビではうまく機能しますが、プロセスは停止しますが、私はkill -9
それをしなければなりませんでした。