diff --git a/smarttv.py b/smarttv.py new file mode 100644 index 0000000..21dd4a7 --- /dev/null +++ b/smarttv.py @@ -0,0 +1,87 @@ +import serial +import time +import sys + +SERIAL_PORT = '/dev/ttyUSB0' +BAUD_RATE = 19200 + +SMARTTV_HELP = b'?\r' +SMARTTV_ON = b'on\r' +SMARTTV_OFF = b'off\r' +SMARTTV_GET_MUTE = b'get mute\r' +SMARTTV_MUTE = b'set mute=on\r' +SMARTTV_UNMUTE = b'set mute=off\r' +SMARTTV_GET_STATE = b'get powerstate\r' +SMARTTV_GET_VOLUME = b'get volume\r' +SMARTTV_SET_VOLUME = b'set volume=%d\r' +SMARTTV_GET_POWERSTATE = b'get powerstate\r' +SMARTTV_GET_INPUT = b'get input\r' +SMARTTV_SET_INPUT_HDMI = b'set input=hdmi1\r' +SMARTTV_SET_INPUT_OPS= b'set input=ops/hdmi2\r' + +def send_command(command): + with serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1) as ser: + ser.write(command) + time.sleep(0.1) + reply = ser.read(100) + return reply.decode('utf-8') + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Usage: python3 smarttv.py [power_on|power_off|get_volume|set_volume=volume]") + sys.exit(1) + + command = sys.argv[1] + + if command == "help": + print(send_command(SMARTTV_HELP)) + + elif command == "power_on": + print(send_command(SMARTTV_ON)) + + elif command == "power_off": + print(send_command(SMARTTV_OFF)) + + elif command == "get_state": + print(send_command(SMARTTV_GET_STATE)) + + elif command == "get_volume": + print(send_command(SMARTTV_GET_VOLUME)) + + elif command == "set_volume": + if len(sys.argv) != 3: + print("Usage: python3 smarttv.py set_volume volume") + sys.exit(1) + + volume = int(sys.argv[2]) + if not 0 <= volume <= 100: + print("Volume must be between 0 and 100") + sys.exit(1) + + volume_command = SMARTTV_SET_VOLUME % volume + print(send_command(volume_command)) + + elif command == "get_mute": + print(send_command(SMARTTV_GET_MUTE)) + + elif command == "mute": + print(send_command(SMARTTV_MUTE)) + + elif command == "unmute": + print(send_command(SMARTTV_UNMUTE)) + + elif command == "get_powerstate": + print(send_command(SMARTTV_GET_POWERSTATE)) + + elif command == "get_input": + print(send_command(SMARTTV_GET_INPUT)) + + elif command == "set_input_hdmi": + print(send_command(SMARTTV_SET_INPUT_HDMI)) + + elif command == "set_input_ops": + print(send_command(SMARTTV_SET_INPUT_OPS)) + + else: + print("Invalid command. Usage: python3 smarttv.py [power_on|power_off|get_volume|set_volume=volume]") + sys.exit(1)