require('encdec') tvip = "192.168.1.86" --TV myip = "192.168.1.50" --homeLYnk mymac = "00-00-54-ff-78-83" --homeLYnk appstring = "iphone.iapp.samsung" tvappstring = "iphone.UE40H6410.iapp.samsung" remotename = "LUA Samsung Remote" ipencoded = encdec.base64enc(myip) macencoded = encdec.base64enc(mymac) -- TCP Send Samsung TV function sendKey(ip, skey) host, port = tvip, 55000 socket = require("socket") client = socket.tcp() client:settimeout(1) client:connect(host, port) messagepart1 = string.char(0x64) .. string.char(0x00) .. string.char(string.len(ipencoded)) .. string.char(0x00) .. ipencoded .. string.char(string.len(macencoded)) .. string.char(0x00) .. macencoded .. string.char(string.len(encdec.base64enc(remotename))) .. string.char(0x00) .. encdec.base64enc(remotename) .. '\n' part1 = string.char(0x00) .. string.char(string.len(appstring)) .. string.char(0x00) .. appstring .. string.char(string.len(messagepart1)) .. string.char(0x00) .. messagepart1 client:send(part1) --log(lmcore.strtohex(part1)) result1 = client:receive() messagepart2 = string.char(0xc8) .. string.char(0x00) part2 = string.char(0x00) .. string.char(string.len(appstring)) .. string.char(0x00) .. appstring .. string.char(string.len(messagepart2)) .. string.char(0x00) .. messagepart2 client:send(part2) --log(lmcore.strtohex(part2)) result2 = client:receive() local messagepart3 = string.char(0x00) .. string.char(0x00) .. string.char(0x00) .. string.char(string.len(encdec.base64enc(skey))) .. string.char(0x00) .. encdec.base64enc(skey) local part3 = string.char(0x00) .. string.char(string.len(appstring)) .. string.char(0x00) .. appstring .. string.char(string.len(messagepart3)) .. string.char(0x00) .. messagepart3 client:send(part3) --log(lmcore.strtohex(part3)) result3 = client:receive() client:close() return result1, result2, result3 end --Now send the keys as you like, e.g., result1, result2, result3 = sendKey(tvip, "KEY_POWEROFF") log(result1, result2, result3) os.sleep(1) result1, result2, result3 = sendKey(tvip, "KEY_RIGHT") log(result1, result2, result3) os.sleep(1) result1, result2, result3 = sendKey(tvip, "KEY_DOWN") log(result1, result2, result3) os.sleep(1) result1, result2, result3 = sendKey(tvip, "KEY_RIGHT") log(result1, result2, result3) --[[ # Key Reference # Normal remote keys #KEY_0 #KEY_1 #KEY_2 #KEY_3 #KEY_4 #KEY_5 #KEY_6 #KEY_7 #KEY_8 #KEY_9 #KEY_UP #KEY_DOWN #KEY_LEFT #KEY_RIGHT #KEY_MENU #KEY_PRECH #KEY_GUIDE #KEY_INFO #KEY_RETURN #KEY_CH_LIST #KEY_EXIT #KEY_ENTER #KEY_SOURCE #KEY_AD #KEY_PLAY #KEY_PAUSE #KEY_MUTE #KEY_PICTURE_SIZE #KEY_VOLUP #KEY_VOLDOWN #KEY_TOOLS #KEY_POWEROFF #KEY_CHUP #KEY_CHDOWN #KEY_CONTENTS #KEY_W_LINK #Media P #KEY_RSS #Internet #KEY_MTS #Dual #KEY_CAPTION #Subt #KEY_REWIND #KEY_FF #KEY_REC #KEY_STOP --Bonus buttons not on the normal remote: #KEY_TV --Don't work/wrong codes: #KEY_CONTENT #KEY_INTERNET #KEY_PC #KEY_HDMI1 #KEY_OFF #KEY_POWER #KEY_STANDBY #KEY_DUAL #KEY_SUBT #KEY_CHANUP #KEY_CHAN_UP #KEY_PROGUP #KEY_PROG_UP ]]