Raspberry PiでSamsung TVのオン/オフを切り替える方法


17

ラズベリーパイがHDMIケーブルを介してテレビに接続されているSamsung TVをオン(およびオフ)にすることができます。

私のいとこはすでに他のテレビでこれを行っており、うまくいきましたが、サムスンではうまくいかないようです。

  • これを行う最も簡単な方法は何ですか?

  • これはどのように可能ですか?

ご協力いただきありがとうございます!

回答:


12

@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です。


スレッドは、次のコマンドがSamsung TVを正常にオンにしたと言います。

echo "on 0" | cec-client -s



次のコマンドは、ソースをTVチューナーからRaspi HDMIに変更します。

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'

1
FWIW echo "standby 0" | cec-client -sは、パナソニックテレビではうまく機能しますが、プロセスは停止しますが、私はkill -9それをしなければなりませんでした。
スパラフーク14

リンクが壊れています。
jjmontes

@jjmontesおかげで、私はインストールする方法についての代替情報で答えを更新cec-client
HeatfanJohn

Samsung TVをスタンバイすることができました。テレビで次の設定を変更しました:Application / AnyNet +(HDMI-CEC)/ Setup / Auto Turn Off。これをtrueに設定した後、スタンバイ0を送信するとテレビがスタンバイになります。
filhit

7

HDMIを介したCEC(Consumer Electronics Control)プロトコルをサポートするテレビが必要です。TVマニュアルまたは会社のWebサイトを参照して特定のケースに関する詳細を確認することをお勧めします。「TV_model + CEC」をすばやく検索すると、いくつかのヒントが得られる場合があります。

基本的に、テレビセットが数年前に作られた場合、CECをセットアップして有効にする方法を見つける可能性は十分にありますが、古いモデルの場合はあまり良くありません。

Samsung CECの実装はと呼ばれAnynet+ますが、それも検索してみてください。


1
また、HDMI-CECが機能しテレビが続く前にXMBCを起動する必要があることもわかりました。
トールビョールンラヴンアンデルセン

4

IR LEDを備えたテレビのリモコンのようなものを作ることができます。あなたがしたいことに関するAdafruitのチュートリアルがあります。同じテーマに関する別のブログ投稿があります。

注: GPIOピンを使用する必要があります。それらを使用したソリューションを探していたかどうかはわかりません。


Piからテレビにコマンドを送信するには、センサーではなくIRが必要です。
ガーベン

1
@Gerben修正のために編集。今すぐ下票を削除してもらえますか?
syb0rg

1
-(-1)=> +1 :-)
ガーベン

これは良いハックになりますが、あなたの信号が彼らがするはずのことをしたかどうかについてのフィードバックを得る方法はありません。また、ソース切り替えメニューのオプションの順序は、現在のソースによって異なります。
-EDP

4

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

2

また、これを支援するスクリプトをいくつか作成しました。私は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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.