# File: tv_power.py

# Title: Sharp AQUOS power button script

#

# Brief:

# Connects to the TV over LAN and toggles it on/off.

#

# TV must first be set up to connect to wi-fi and enable remote access (via on-screen menu),

# and have LAN turn-on enabled (by sending "RSPW2 " over putty or hyperterm).

# I use Intelliremote to kick off this script with my media center remote.

#

# Author: Chris Hammond (https://www.facebook.com/Chris.A.Hammond)

# Version: Jan 6, 2014

#

# Note: Other commands can be found on page 45 of this PDF:

# http://files.sharpusa.com/Downloads/ForHome/HomeEntertainment/LCDTVs/Manuals/tel_man_2013_fullline.pdf

#

# Tips: Bitcoin 1P15hKDPDqw5TkXWsWgZcg4QEH3WEcxMGM

# Dogecoin D7sqgTGt6ERQMuj7T5S3VfvSRrMHvCSSQQ

import socket

# Got this from my router's status page:

tv_hostname = "unknown9444449D0E9D"

# Got this from TV's setup menu:

tv_port = 10002

print "Connecting to TV..."

s = socket . socket ( socket . AF_INET , socket . SOCK_STREAM )

remote_ip = socket . gethostbyname ( tv_hostname )

s. connect ( ( remote_ip , tv_port ) )

print "Connected."

# Get current power state:

s. sendall ( "POWR? \r " )

ans = s. recv ( 10 ) . rstrip ( )

if ans != '1' and ans != '0' :

quit ( "Failed! TV responded '%s' instead of '1' or '0'." % ( ans , ) )

print "Current power state: %s" % ( ans , )

# Send opposite power state:

cmd = "POWR%d \r " % ( ans == '0' )

print "Sending '%s'..." % ( cmd . rstrip ( ) , )

s. sendall ( cmd )

ans = s. recv ( 10 ) . rstrip ( )

if ans != 'OK' :

quit ( "Failed! TV responded '%s' instead of 'OK'." % ( ans , ) )