Hallo,
vielleicht kann es jemand brauchen:
LG TVs können per RS232 gesteuert werden.
Löblicherweise ist dies sogar im Handbuch (welches ansonsten übrigens eine Frechheit ist, weil darin alle Modelle (wirklich ALLE) gleichzeitig beschrieben werden) vollständig dokumentiert (S.151)
Die Kommandos bestehen aus Zwei Teilen und einem Wert:
Commando 1 Commando 2 Wert
01. Power k a 00 to 01
02. Aspect Ratio k c Refer to p. 152
03. Screen Mute k d Refer to p. 152
04. Volume Mute k e 00 to 01
05. Volume Control k f 00 to 64
06. Contrast k g 00 to 64
07. Brightness k h 00 to 64
08. Colour k i 00 to 64
09. Tint k j 00 to 64
10. Sharpness k k 00 to 64
11. OSD Select k l 00 to 01
12. Remote control lock mode k m 00 to 01
13. Treble k r 00 to 64
14. Bass k s 00 to 64
15. Balance k t 00 to 64
16. Colour Temperature x u 00 to 64
17. Energy Saving j q 00 to 05
18. Auto Configuration j u 01
19. Tune Command m a Refer to p. 154
20. Programme Add/Skip m b 00 to 1
21. Key m c Key Code
22. Control Back Light m g 00 to 64
23. Input select (Main) x b Refer to p. 155
Display More
Das zu sendende Kommando setzt sich dann so zusammen:
[Command1] [Command2] [SetID] [Wert] [Enter]
Die Set-ID stellt man im Menü des TV ein (so kann man die TVs wohl unterscheiden, wenn man mehrere steuern will
Es hat auch schon jemand ein python Skript dafür geschrieben.
Ich musste es leicht ändern (die "n" am Ende der Kommandos entfernt und ein carriage return am Ende jedes ser.write Befehls "\r")
#!/usr/bin/python
#allows you to capture the command switches
import sys
#get serial features for python
import serial
#this next line sets up the serial port to allow for communication
#and opens the serial port you may need to change
#ttyS0 to S1, S2, ect. The rest shouldn't need to change.
ser = serial.Serial('/dev/ttyUSB0', 9600, 8, serial.PARITY_NONE,
serial.STOPBITS_ONE, xonxoff=0, rtscts=0, timeout=1)
#default COMMAND is bogus
COMMAND = "nope"
aspect169 = "kc 01 02"
aspect43 = "kc 01 01
poweron = "ka 01 01"
poweroff = "ka 01 00"
inputdtv = "kb 01 00"
inputav1 = "kb 01 02"
inputcomp1 = "kb 01 04"
inputpc = "kb 01 06"
if sys.argv[1:] == ['--aspect169'] :
COMMAND = aspect169
if sys.argv[1:] == ['--aspect43'] :
COMMAND = aspect43
if sys.argv[1:] == ['--poweron'] :
COMMAND = poweron
if sys.argv[1:] == ['--poweroff'] :
COMMAND = poweroff
if sys.argv[1:] == ['--inputdtv'] :
COMMAND = inputdtv
if sys.argv[1:] == ['--inputav1'] :
COMMAND = inputav1
if sys.argv[1:] == ['--inputcomp1'] :
COMMAND = inputcomp1
if sys.argv[1:] == ['--inputpc'] :
COMMAND = inputpc
#This is when it actually writes the command to the serial port.
ser.write(COMMAND+'\r')
#all done now close the port.
ser.close()
Display More
Löblicherweise (II) gibt es sogar eine eigene Website zu dem Thema. Hier gibt's ein Windows Tool zum Testen der Verbindung. Man kann hiermit schon Kommandos senden.
Das Kabel muss ein Null-Modem Kabel sein.
Das ganze klappt auch mit
Gruß,
Hendrik