मेरा रास्पबेरी पाई मेरे सैमसंग टीवी को कैसे चालू / बंद कर सकता है


17

मैं अपने सैमसंग टीवी को चालू (और बंद) करने में सक्षम होना चाहता हूं, रास्पबेरी पाई को एचडीएमआई केबल के माध्यम से मेरे टीवी तक पहुंचाया जाता है।

मेरे चचेरे भाई ने पहले ही अन्य टीवी के साथ ऐसा किया था और यह काम किया था, लेकिन सैमसंग के साथ काम नहीं कर रहा है।

  • ऐसा करने का सबसे आसान तरीका क्या है?

  • यह कैसे हो सकता है?

आपकी सहायताके लिए धन्यवाद!

जवाबों:


12

जैसा कि @ लेनिक का जवाब कहता है, आपके टीवी को सीईसी का समर्थन करने की आवश्यकता है। मैं जो कमांड लाइन उपयोगिता शामिल 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'

1
एफडब्ल्यूआईडब्ल्यू echo "standby 0" | cec-client -sमेरे पैनासोनिक टीवी के लिए ठीक काम करता है, हालांकि इस प्रक्रिया के बाद स्टाल, और मुझे kill -9यह करना पड़ा ।
स्पार्कवाक

लिंक टूट गया है।
जजमोंट्स

@jjmontes धन्यवाद, मैंने वैकल्पिक सूचना के साथ उत्तर को अद्यतन किया कि कैसे स्थापित किया जाएcec-client
हीटफैनोहॉन

मैं अपने सैमसंग टीवी को स्टैंडबाय करने में सक्षम था। मैंने टीवी पर निम्नलिखित सेटिंग बदल दी है: एप्लिकेशन / AnyNet + (एचडीएमआई-सीईसी) / सेटअप / ऑटो टर्न ऑफ। जब मैंने इसे सही किया, टीवी स्टैंडबाय भेजने के बाद जब मैं स्टैंडबाय 0.
filhit

7

आपको एक टीवी सेट की आवश्यकता है जो एचडीएमआई पर सीईसी (उपभोक्ता इलेक्ट्रॉनिक्स नियंत्रण) प्रोटोकॉल का समर्थन करता है । अपने विशेष मामले के बारे में विवरण खोजने के लिए अपने टीवी मैनुअल या कंपनी की वेब साइट से परामर्श करने के लिए एक अच्छा विचार हो सकता है, "TV_model + CEC" के लिए त्वरित खोज आपको कुछ संकेत दे सकती है।

मूल रूप से, यदि आपका टीवी सेट कुछ साल पहले बनाया गया है, तो एक अच्छा मौका है कि आप सीईसी को सेटअप और सक्षम करने का तरीका पा सकते हैं, लेकिन पुराने मॉडल के लिए संभावनाएं इतनी अच्छी नहीं हैं।

सैमसंग सीईसी कार्यान्वयन कहा जाता है Anynet+, आप उसके लिए भी खोज करने का प्रयास कर सकते हैं।


1
मैंने यह भी पाया कि एचडीएमआई-सीईसी के काम करने से पहले मुझे एक्सएमबीसी शुरू करने की जरूरत थी और टीवी चल निकला।
थोरबजोरन रेव एंडरसन

4

आईआर एलईडी के साथ आप टीवी रिमोट जैसा कुछ बना सकते हैं । आप क्या करना चाहते हैं, इस पर Adafruit का एक ट्यूटोरियल है। यहाँ उसी विषय के बारे में एक और ब्लॉग पोस्ट है

नोट: आपको GPIO पिन का उपयोग करना होगा। मुझे यकीन नहीं है कि आप एक समाधान की तलाश कर रहे थे जो उनका उपयोग करता था या नहीं।


आपको पाई से टीवी पर कमांड भेजने के लिए एक आईआर के नेतृत्व वाले, सेंसर की आवश्यकता नहीं होगी।
गेरबन

1
@Gerben को ठीक करने के लिए संपादित किया गया। क्या आप अब डाउन वोट निकाल सकते हैं?
syb0rg

1
- - (1) => +1 :-)
गेरबेन

यह एक अच्छा हैक होगा, लेकिन कोई भी प्रतिक्रिया प्राप्त करने का कोई तरीका नहीं है कि क्या आपके संकेतों ने वह किया जो वे करने के लिए मान लेंगे। इसके अलावा स्रोत-स्विचिंग मेनू में विकल्पों का क्रम इसके वर्तमान स्रोत पर निर्भर करता है।
ईडीपी

4

HeatfanJohn द्वारा उपरोक्त उत्तर प्रति cec- क्लाइंट को स्थापित करने के बाद, मैं सफलतापूर्वक अपने विज़िओ 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)। अब आप "टीवीन" और "टीवीऑफ़" का उपयोग करके टीवी को चालू या बंद कर सकते हैं।

अब जब आप सो जाते हैं, तो टीवी बंद करने के लिए आप एक रात का काम तय कर सकते हैं:

crontab -e

निम्नलिखित जोड़ें:

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

2

मैंने इसके लिए मदद करने के लिए कुछ स्क्रिप्ट भी लिखीं। मैं कप्तानरविंद से थोड़ा आगे चला गया, हालांकि उन्होंने अच्छा काम किया। यह सिर्फ एक शेल स्क्रिप्ट है जो मेरे टीवी को नियंत्रित करने के लिए लिखी गई है, इसलिए मैंने ऐसी किसी भी चीज़ को शामिल नहीं किया है जो इसका समर्थन नहीं करती है (जैसे वॉल्यूम और चैनल नियंत्रण, मैं अभी भी इन दोनों में से कोई एक तरीका ढूंढ रहा हूं, बिना ज्यादा खरीदारी किए। हार्डवेयर) और इसमें "टीवी इनपुट 3" के समानार्थक होने के लिए "टीवी इनपुट रास्पी" जैसे सेटअप-विशिष्ट विवरण शामिल हैं, लेकिन मैंने उन्हें छोड़ दिया ताकि आप देख सकें कि अपने लिए इस तरह के अनुकूलन कैसे किए जा सकते हैं।

आप इसे आसानी से उपयोग कर सकते हैं अगर आप इसे "us" / "tv off" या "tv input 1" पर "tv on" या "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 (जिसे अब कोडी कहा जाता है) के एक हालिया संस्करण के साथ पुन: प्रयास करना चाहते हैं, मुझे अपने सैमसंग UE46F6500 टीवी और ओपनेलेक (आधिकारिक) संस्करण के साथ बेहतर भाग्य मिला है: 5.95.3 कोडी के साथ, हालांकि मेरे टीवी लगाने के बाद सीईसी नियंत्रण खो गया है। मेरे टीवी को फिर से स्टैंडबाय या चालू करने के लिए:

समर्थन करना:

इको "स्टैंडबाय 0" | cec-client -s

पर:

गूंज "0 पर" | cec-client -s

स्रोत बदलें:

गूंज "के रूप में" | cec-client -s

हालाँकि, ये फ़ंक्शन कोडी से दूर CEC इंटरफ़ेस का अनन्य नियंत्रण लेते हैं, इसलिए कोडी इनमें से किसी भी आदेश के बाद CEC नियंत्रण खो देता है और रिमोट काम करना बंद कर देता है। आपको इसे फिर से काम करने के लिए कोडी को पुनः आरंभ करना होगा:

systemctl पुनरारंभ कोड़ी

कोडी (> = 13) में अंतर्निहित कार्य CECToggleState, CECActivateSource, CECStandby कुछ लोग इन अंतर्निहित फेकिटॉन का उपयोग करके अजगर के माध्यम से इन cec- कमांडों को पारित करने के लिए काम कर रहे हैं, या साझा मोड में cec- हार्डवेयर को खोलने की संभावना तलाश रहे हैं: http://forum.kodi.tv/showthread.php?tid=207524 और https://discourse.osmc.tv/t/control-tv-on-standby-toggle-using-cec-odod-built-in- कार्य / 3638/4

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.