Bagaimana Raspberry Pi saya dapat menghidupkan / mematikan TV Samsung saya

17

Saya ingin dapat menghidupkan dan mematikan TV Samsung saya, raspberry pi terhubung ke TV saya melalui kabel HDMI.

Sepupu saya sudah melakukan ini dengan TV lain dan itu berhasil, tetapi dengan Samsung sepertinya tidak berhasil.

  • Apa cara termudah untuk melakukan ini?

  • Bagaimana ini mungkin?

Terima kasih atas bantuan Anda!

Esteban
sumber

Jawaban:

12

Seperti jawaban @ lenik mengatakan, TV Anda perlu mendukung CEC. Saya menginstal versi kompilasi libcec yang menyertakan utilitas baris perintah cec-clientdari SourceForge menggunakan perintah berikut:

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



PEMBARUAN: 2017-02-27

Tautan di atas ke SourceForge tidak ada lagi. Menurut artikel ini Anda dapat menginstal cec-clientmenggunakan perintah berikut:

    sudo apt-get install cec-utils

Sisa dari jawaban ini masih harus valid.


Berikut adalah utas pada raspberrypi.org yang membahas penggunaan cec-clientuntuk menerbitkan perintah.


Utas mengatakan bahwa perintah berikut berhasil menyalakan TV Samsung:

echo "on 0" | cec-client -s



Perintah berikut mengubah sumber dari TV Tuner ke Raspi HDMI:

echo "as" | cec-client -s

atau

echo "tx 1f 82 30 00" | cec-client -s



Perintah berikut tidak berhasil mematikan TV:

echo "tx 10 36" | cec-client -s 

atau

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'
HeatfanJohn
sumber
1
FWIW echo "standby 0" | cec-client -sberfungsi dengan baik untuk TV Panasonic saya, meskipun prosesnya terhenti, dan saya harus melakukannya kill -9.
Sparhawk
Tautan rusak.
jjmontes
@ jjmontes Terima kasih, saya memperbarui jawabannya dengan informasi alternatif tentang cara menginstalcec-client
HeatfanJohn
Saya bisa standby TV Samsung saya. Saya telah mengubah pengaturan berikut di TV: Application / AnyNet + (HDMI-CEC) / Setup / Auto Turn Off. Setelah saya mengatur ini menjadi benar, TV akan siaga ketika saya mengirim siaga 0.
filhit
7

Anda memerlukan TV yang mendukung CEC (Kontrol Elektronik Konsumen) melalui HDMI. itu mungkin ide yang baik untuk berkonsultasi dengan manual TV Anda atau situs web perusahaan untuk menemukan rincian mengenai kasus khusus Anda, juga pencarian cepat untuk "TV_model + CEC" mungkin memberi Anda beberapa petunjuk.

pada dasarnya, jika perangkat TV Anda dibuat hanya beberapa tahun yang lalu, ada kemungkinan Anda dapat menemukan cara men-setup dan mengaktifkan CEC, tetapi untuk model lama kemungkinan tidak terlalu baik.

Implementasi Samsung CEC disebut Anynet+, Anda dapat mencoba mencari itu juga.

lenik
sumber
1
Saya juga menemukan bahwa saya perlu menjalankan XMBC sebelum HDMI-CEC bekerja dan tv menyala.
Thorbjørn Ravn Andersen
4

Anda bisa membuat sesuatu seperti remote TV dengan LED IR . Ada tutorial tentang Adafruit tentang apa yang ingin Anda lakukan. Ini adalah posting blog lain tentang topik yang sama.

Catatan: Anda harus menggunakan pin GPIO. Saya tidak yakin apakah Anda mencari solusi yang menggunakannya atau tidak.

syb0rg
sumber
Anda membutuhkan led IR, bukan sensor, untuk mengirim perintah ke TV dari Pi.
Gerben
1
@Gerben Diedit untuk memperbaikinya. Bisakah Anda menghapus suara turun sekarang?
syb0rg
1
- (- 1) => +1 :-)
Gerben
Ini akan menjadi retasan yang bagus, tetapi tidak ada cara untuk mendapatkan umpan balik apakah sinyal Anda melakukan apa yang seharusnya mereka lakukan. Juga urutan opsi dalam menu switching sumber tergantung pada sumbernya saat ini.
EDP
4

Setelah menginstal cec-client per jawaban di atas oleh HeatfanJohn, saya berhasil menghidupkan / mematikan HDTV LED Vizio E390i-A1 saya. Saya menulis naskah untuk komunitas:

Buat file baru melalui:

mkdir /opt/scripts; vi /opt/scripts/turntv.sh

rekatkan yang berikut ini:

#!/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

Jadikan itu dapat dieksekusi:

sudo chmod +x /opt/scripts/turntv.sh

Lalu, buat alias:

vi /home/pi/.bashrc

tambahkan yang berikut:

alias tvon="/opt/scripts/turntv.sh on"
alias tvoff="/opt/scripts/turntv.sh off"
alias input="/opt/scripts/turntv.sh input"

Simpan, keluar, keluar / masuk (atau cukup sumber .bashrc Anda). Sekarang Anda dapat menghidupkan atau mematikan TV menggunakan "tvon" dan "tvoff".

Sekarang Anda dapat menjadwalkan pekerjaan malam hari untuk mematikan TV jika Anda tertidur:

crontab -e

Tambahkan yang berikut ini:

00 03 * * * /opt/scripts/turntv.sh off
CaptainRewind
sumber
2

Saya juga menulis beberapa skrip untuk membantu dengan ini. Saya melangkah lebih jauh dari CaptainRewind, meskipun ia melakukan pekerjaan dengan baik. Ini hanya skrip shell yang ditulis untuk mengontrol TV saya, jadi saya tidak memasukkan apa pun yang tidak didukung (seperti kontrol volume dan saluran; Saya masih mencari cara untuk melakukan semua ini tanpa membeli banyak tambahan perangkat keras) dan itu termasuk detail pengaturan khusus seperti "input tv raspi" yang identik dengan "input tv 3" tetapi saya meninggalkannya sehingga Anda dapat melihat bagaimana membuat penyesuaian seperti itu untuk diri sendiri.

Anda dapat menggunakannya dengan mudah Jika Anda meletakkannya di / usr / local / bin / tv dengan mengeluarkan perintah seperti "tv on" "tv off" atau "tv input 1" atau Anda bisa memasukkannya ke direktori home Anda sebagai tv. sh dan gunakan langsung dari sana.

Saya harap ini membantu beberapa orang.

#!/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
Tarcas
sumber
0

Anda mungkin ingin mencoba lagi dengan versi terbaru XBMC (sekarang disebut Kodi ') Saya lebih beruntung dengan TV Samsung UE46F6500 saya dan OpenELEC (resmi) Versi: 5.95.3 dengan Kodi, meskipun kontrol CEC hilang setelah meletakkan tv saya untuk standby atau menyalakan tv saya kembali:

Bersiap:

echo "standby 0" | cec-client -s

Di:

echo "on 0" | cec-client -s

Ubah sumber:

gema "sebagai" | cec-client -s

Namun, fungsi-fungsi ini mengambil kendali eksklusif dari antarmuka CEC dari Kodi, jadi Kodi kehilangan kontrol CEC setelah salah satu dari perintah ini dan remote berhenti bekerja. Anda harus memulai ulang Kodi untuk membuatnya berfungsi kembali:

systemctl restart kodi

Kodi (> = 13) memiliki fungsi bawaan CECToggleState, CECActivateSource, CECStandby Beberapa orang bekerja untuk melewatkan perintah-perintah cec ini melalui python menggunakan fungsi-fungsi bawaan ini, atau mencari kemungkinan untuk membuka perangkat keras-cec dalam mode bersama: http://forum.kodi.tv/showthread.php?tid=207524 dan https://discourse.osmc.tv/t/control-tv-on-standby-toggle-using-cec-kodi-built-in- fungsi / 3638/4

sgiebels
sumber