Raspberry Pi'm Samsung TV'mi nasıl açabilir / kapatabilir


17

Samsung TV'mi açmak (ve kapatmak) için ahududu pi bir HDMI kablo ile TV'ye bağlanmış olmak istiyorum.

Kuzenim bunu diğer televizyonlarda zaten yaptı ve işe yaradı, ancak Samsung ile çalışmıyor gibi görünüyor.

  • Bunu yapmanın en kolay yolu nedir?

  • Bu nasıl mümkün olabilir?

Yardımın için teşekkürler!

Yanıtlar:


12

@ Lenik'in cevabının dediği gibi, TV'nizin CEC'yi desteklemesi gerekiyor. Komut satırı yardımcı dahil libcec derlenmiş bir sürümü yüklü cec-clientgelen SourceForge'dan aşağıdaki komutları kullanılarak:

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



GÜNCELLEME: 2017-02-27

Yukarıdaki SourceForge bağlantısı artık mevcut değil. Bu makaleye göre cec-clientaşağıdaki komutu kullanarak yükleyebilirsiniz :

    sudo apt-get install cec-utils

Bu cevabın geri kalanı hala geçerli olmalıdır.


Burada raspberrypi.org'da , cec-clientto komutlarını kullanmayı tartışan bir iş parçacığı bulunmaktadır .


İş parçacığı, aşağıdaki komutun bir Samsung TV'yi başarıyla açtığını söylüyor:

echo "on 0" | cec-client -s



Aşağıdaki komutlar kaynağı TV Alıcısı'ndan Raspi HDMI'ya değiştirir:

echo "as" | cec-client -s

veya

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



Aşağıdaki komutlar TV'yi kapatmakta başarısız oldu:

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

veya

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
echo "standby 0" | cec-client -sİşlem devam etmesine rağmen FWIW , Panasonic TV'm için iyi çalışıyor ve bunu yapmak kill -9zorundaydım.
Sparhawk

Bağlantı koptu.
jjmontes

@jjmontes Teşekkürler, cevabı nasıl kuracağımla ilgili alternatif bilgilerle güncelledimcec-client
HeatfanJohn

Samsung TV'mi bekletebildim. TV'de şu ayarı değiştirdim: Uygulama / AnyNet + (HDMI-CEC) / Kurulum / Otomatik Kapanma. Bunu true olarak ayarladıktan sonra, bekleme 0'ı gönderdiğimde TV bekleme moduna
geçecek.

7

HDMI üzerinden CEC (Tüketici Elektroniği Kontrolü) protokolünü destekleyen bir TV setine ihtiyacınız vardır . özel durumunuzla ilgili ayrıntıları bulmak için TV'nizin kılavuzuna veya şirketinizin web sitesine başvurmak iyi bir fikir olabilir.

temel olarak, TV setiniz sadece birkaç yıl önce yapılmışsa, CEC'yi nasıl kuracağınızı ve etkinleştireceğinizi bulma şansınız yüksektir, ancak eski modellerde şans o kadar iyi değildir.

Samsung CEC uygulaması denir Anynet+, bunu da aramayı deneyebilirsiniz.


1
HDMI-CEC çalışmaya başlamadan ve televizyon açmadan önce XMBC'yi başlatmam gerektiğini de buldum.
Thorbjørn Ravn Andersen

4

IR LED'li bir TV uzaktan kumandası gibi bir şey yapabilirsiniz . Adafruit hakkında ne yapmak istediğinize dair bir eğitim vardır . İşte aynı konuyla ilgili başka bir blog yazısı .

Not: GPIO pinlerini kullanmanız gerekecektir. Onları kullanan bir çözüm mü aradığınızdan emin değilim.


Pi'den TV'ye komut göndermek için bir sensöre değil bir IR ledine ihtiyacınız olacaktır.
Gerben

1
@Gerben Düzeltmek için düzenlendi. Şimdi oylamayı kaldırabilir misiniz?
syb0rg

1
- (- 1) => +1 :-)
Gerben

Bu iyi bir hack olur, ancak sinyallerinizin yapmayı bekledikleri şeyi yapıp yapmadığı hakkında geri bildirim almanın bir yolu yoktur. Ayrıca kaynak değiştirme menüsündeki seçeneklerin sırası mevcut kaynağına bağlıdır.
EDP

4

HeatfanJohn tarafından yukarıdaki cevaba göre cec-istemcisini kurduktan sonra, Vizio E390i-A1 LED HDTV'mi başarıyla açıp kapatabiliyorum. Topluluk için bir senaryo yazdım:

Şununla yeni dosya oluştur:

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

aşağıdakileri yapıştırın:

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

Yürütülebilir yap:

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

Ardından takma adlar oluşturun:

vi /home/pi/.bashrc

aşağıdakileri ekleyin:

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

Kaydedin, çıkın, oturumu kapatın / oturum açın (veya sadece .bashrc'nizi kaynaklayın). Artık "tvon" ve "tvoff" tuşlarını kullanarak TV'yi açabilir veya kapatabilirsiniz.

Artık uykuya dalmanız durumunda TV'yi kapatmak için her gece bir iş planlayabilirsiniz:

crontab -e

Aşağıdakileri ekleyin:

00 03 * * * /opt/scripts/turntv.sh off

2

Buna yardımcı olmak için birkaç senaryo da yazdım. İyi bir iş çıkmasına rağmen CaptainRewind'den biraz daha ileri gittim. Bu sadece TV'mi kontrol etmek için yazılmış bir kabuk betiğidir, bu yüzden desteklemediği bir şey eklemedim (ses ve kanal kontrolleri gibi; Hala fazladan satın almadan bunlardan birini yapmanın bir yolunu arıyorum donanım gibi) ve "tv input raspi" gibi "tv input 3" ile eşanlamlı olarak belirli ayrıntılar içerir, ancak kendiniz için bu tür özelleştirmeleri nasıl yapacağınızı görebilmeniz için bunları bıraktım.

Kolayca kullanabilirsiniz / usr / local / bin / tv'ye "tv on" "tv off" veya "tv input 1" gibi komutlar vererek koyabilirsiniz veya sadece ana dizininize tv olarak koyabilirsiniz. sh ve doğrudan oradan kullanın.

Umarım bu bazı insanlara yardımcı olur.

#!/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'nin (şimdi Kodi olarak adlandırılır) yeni bir sürümü ile tekrar denemek isteyebilirsiniz. bekleme veya televizyonumu tekrar açma:

Yanında olmak:

echo "bekleme 0" | cec-client -s

Açık:

echo "on 0" | cec-client -s

Kaynağı değiştir:

echo "as" | cec-client -s

Ancak, bu işlevler CEC arabiriminin özel denetimini Kodi'den uzaklaştırır, bu nedenle Kodi bu komutlardan herhangi birinin ardından CEC denetimini kaybeder ve uzaktan kumanda çalışmayı durdurur. Tekrar çalışmasını sağlamak için Kodi'yi yeniden başlatmanız gerekir:

systemctl yeniden başlatma kodi

Kodi (> = 13), CECToggleState, CECActivateSource, CECStandby yerleşik işlevlerine sahiptir Bazı insanlar bu yerleşik işlevleri kullanarak pechon aracılığıyla bu cec komutlarını iletmeye veya cec donanımını paylaşılan modda açma olasılığını araştırmaya çalışırlar: http://forum.kodi.tv/showthread.php?tid=207524 ve https://discourse.osmc.tv/t/control-tv-on-standby-toggle-using-cec-kodi-built-in- fonksiyonları / 3638/4

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.