自宅には大型液晶テレビ(LC-60Z5)がある。

説明書のページ表記、144ページを見ればわかるが遠隔操作が可能だ。

http://www.sharp.co.jp/support/aquos/doc/lc60-40z5_mn.pdf

少し前の機種はシリアルポートが付いていたらしいが、この機種はLANだけである。

とりあえずPythonで制御を行なってみた。

とりあえず、Pythonをインタラクティブモードで起動。

 

$ python
Python 2.7.1 (r271:86832, Jul 31 2011, 19:30:53)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

ソケット通信を行なってみる。

>>> import socket
>>> host = '192.168.0.185'
>>> port = 10002
>>> so = socket.socket()
>>> so.connect((host, port))
>>> print so.recv(1024)

Login:
>>> so.send('********\n')
6
>>> print so.recv(1024)

Password:
>>> so.send('********\n')
8
>>> so.send('POWR1   \n')
9
>>> print so.recv(1024)

OK
>>> so.send('POWR0   \n')
9
>>> print so.recv(1024)
OK

****はユーザー名とパスワードを入力している。

なんというか、あとは取り扱い説明書のコマンド一覧を見てね、としか・・・。

 

$sock = fsockopen( '192.168.0.185', 10002, $errono, $errmsg, 5 );
echo fread($sock, 100);
fputs($sock, "********\n");
fputs($sock, "********\n");
fputs($sock, "POWR1   \n");
fputs($sock, "IAVD1   \n");
echo fread($sock, 100);
fclose($sock);

PHPだとこんなかんじ?

追記。

.pyファイルにまとめた。

テレビを電源ONにして、入力1にするスクリプト。

状態を見てる。

# coding: UTF-8
import socket
import time
host = '192.168.0.185'
port = 10002
so = socket.socket()
so.connect((host, port))
print so.recv(1024)
so.send('********\n')
so.send('********\n')
print so.recv(1024)

so.send('POWR?   \n')
time.sleep(1)
if so.recv(1024).strip() != "1":
    print('PowerON')
    so.send('POWR1   \n')
    time.sleep(1)
    print so.recv(1024)

so.send('IAVD?   \n')
time.sleep(1)
if so.recv(1024).strip() != "1":
    print('InputSelect')
    so.send('IAVD1   \n')
    time.sleep(1)
    so.send('POWR0   \n')
    time.sleep(1)
    so.send('POWR1   \n')
    time.sleep(1)
    print so.recv(1024)

so.close()
time.sleep(2)