Як мій Raspberry Pi може включати / вимикати телевізор Samsung


17

Я хочу, щоб я міг увімкнути (і вимкнути) телевізор Samsung, малиновий пі підключений до мого телевізора за допомогою кабелю HDMI.

Мій двоюрідний брат вже робив це з іншим телевізором, і він працював, але з Samsung, здається, не працює.

  • Який найпростіший спосіб зробити це?

  • Як це можливо?

Спасибі за вашу допомогу!

Відповіді:


12

Як говорить відповідь @ lenik, телевізор повинен підтримувати ЦВК. Я встановив компільовану версію 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:

echo "on 0" | cec-client -s



Наступні команди змінюють джерело з ТВ-тюнера на 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прекрасно працює для мого телевізора Panasonic, хоча процес зупиняється після цього, і мені довелося kill -9це робити .
Sparhawk

Посилання розірвано.
jjmontes

@jjmontes Дякую, я оновив відповідь альтернативною інформацією про встановленняcec-client
HeatfanJohn

Я зміг очікувати своє телевізор Samsung. Я змінив наступне налаштування на телевізорі: Application / AnyNet + (HDMI-CEC) / Setup / Auto Turn Off. Після того, як я встановив це як істинне, телевізор перейде в режим очікування, коли я надішлю режим очікування 0.
filhit

7

вам потрібен телевізор, який підтримує протокол CEC (Consumer Electronics Control) через HDMI. може бути хорошою ідеєю проконсультуватися у вашому керівництві з телебачення чи на веб-сайті компанії, щоб знайти детальну інформацію про ваш конкретний випадок, а також швидкий пошук "TV_model + CEC" може дати вам кілька покажчиків.

в основному, якщо ваш телевізор зроблений лише кілька років тому, є хороший шанс, що ви можете знайти, як налаштувати та включити CEC, але для старих моделей шанси не такі вже й добрі.

Викликається реалізація Samsung CEC Anynet+, ви можете також спробувати пошукати це.


1
Я також виявив, що мені потрібно запустити XMBC до того, як HDMI-CEC запрацював і телевізор продовжився.
Thorbjørn Ravn Andersen

4

Ви могли б зробити що - щось на зразок пульта дистанційного керування телевізора з ІК - підсвічуванням . На Adafruit є підручник про те, що ви хотіли б зробити. Ось ще одна публікація блогу з такою ж темою.

Примітка. Вам доведеться використовувати штифти GPIO. Я не впевнений, шукали ви рішення, яке їх використовувало чи ні.


Вам буде потрібно ІК-світлодіод, а не датчик, щоб надсилати команди на телевізор із Pi.
Гербен

1
@Gerben Відредаговано, щоб виправити. Чи можете ви зняти голосування проти?
syb0rg

1
- (- 1) => +1 :-)
Гербен

Це зробило б хороший злом, але немає можливості отримати зворотній зв'язок, чи ваші сигнали зробили те, що вони могли б зробити. Також порядок параметрів у меню комутації джерел залежить від поточного джерела.
EDP

4

Встановивши cec-клієнт відповідно до вищевказаної відповіді HeatfanJohn, я успішно зможу включити / вимкнути свій 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", але я залишив їх, щоб побачити, як зробити такі налаштування для себе.

Ви можете ним легко користуватися. Якщо розмістити його в / usr / local / bin / tv, видавши такі команди, як "tv on", tv off "або" tv input 1 ", або ви можете просто помістити його у свій домашній каталог як tv. ш і використовуйте його прямо звідти.

Я сподіваюся, що це допомагає деяким людям.

#!/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 '). У мене пощастило з моїм телевізором Samsung UE46F6500 та OpenELEC (офіційною) версією 5.95.3 з Kodi, хоча керування ЦВК втрачається після мого телебачення в режимі очікування або знову ввімкнувши телевізор:

Режим очікування:

відлуння "очікування 0" | cec-client -s

Увімкнено:

відлуння "на 0" | cec-client -s

Змінити джерело:

відлуння "як" | cec-client -s

Однак ці функції беруть виключний контроль над інтерфейсом CEC подалі від Kodi, тому Kodi втрачає контроль CEC після будь-якої з цих команд і пульт перестає працювати. Вам потрібно буде перезапустити Kodi, щоб він знову працював:

перезавантажити kodi systemctl

Kodi (> = 13) має вбудовані функції CECToggleState, CECActivateSource, CECStandby Деякі люди працюють над передачею цих команд cec через python за допомогою цих вбудованих функціоналів або шукають можливість відкрити програмне забезпечення 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.