import getpass import telnetlib import datetime def _hexbyte(byte): resultstr = hex(byte) if byte < 16: resultstr = resultstr[:2] + "0" + resultstr[2] return resultstr def _hexword(byte1, byte2): resultstr = _hexbyte(byte2) resultstr = _hexbyte(byte1) + resultstr[2:] return resultstr ml_command_type_dict = dict([ (0x45, "GOTO_SOURCE"), (0x6c, "DISTRIBUTION_REQUEST"), (0x96, "PC_PRESENT"), (0x10, "STANDBY"), (0x11, "RELEASE"), (0x3c, "TIMER"), (0x0d, "BEO4_KEY"), (0x04, "MASTER_PRESENT"), (0x5c, "REQUEST_KEY"), (0x30, "WHAT_AUDIO_SOURCE"), (0x40, "CLOCK"), (0x44, "TRACK_INFO"), (0x82, "TRACK_INFO_LONG"), (0x87, "STATUS_INFO"), (0x94, "DVD_STATUS_INFO"), (0x20, "MLGW REMOTE BEO4") ]) ml_state_dict = dict ([ (0x00,"UNKNOWN"), (0x01,"STOP"), (0x02,"PLAYING"), (0x03,"FASTFORWARD"), (0x04,"REWIND"), (0x05,"RECORD_LOCK"), (0x06,"STANDBY"), (0x07,"LOAD"), (0x08,"STIL_PICTURE"), (0x14,"SCAN_FORWARD"), (0x15,"SCAN_REVERSE"), (0xff,"BLANK_STATUS") ]) pictureformatdict = dict( [ (0x00, "Not known"), (0x01, "Known by decoder"), (0x02, "4:3"), (0x03, "16:9"), (0x04, "4:3 Letterbox middle"), (0x05, "4:3 Letterbox top"), (0x06, "4:3 Letterbox bottom"), (0xff, "Blank picture") ] ) beo4_destselectordict = dict([ (0x00, "Video Source"), (0x01, "Audio Source"), (0x05, "V.TAPE/V.MEM"), (0x0f, "All Products"), (0x1b, "MLGW") ]) selectedsourcedict = dict( [ (0x00, "None"), (0x0b, "TV"), (0x15, "V.Mem"), (0x16, "DVD_2"), (0x1f, "DTV"), (0x29, "DVD"), (0x33, "V_AUX"), (0x3e, "V_AUX2"), (0x47, "PC"), (0x6f, "Radio"), (0x79, "A.Mem"), (0x7a, "NMUSIC"), (0x8d, "CD"), (0x97, "A_AUX"), (0xa1, "NRADIO"), # Dummy for 'Listen for all sources' (0xfe, "") ] ) def _dictsanitize( d , s ): result = d.get( s ) if result == None: result = "UNKNOWN (type=" + _hexbyte( s ) + ")" return str(result) beo4commanddict = dict([ # Source selection: (0x0c, "Standby"), (0x47, "Sleep"), (0x80, "TV"), (0x81, "Radio"), (0x82, "DTV2"), (0x83, "Aux_A"), (0x85, "V.Mem"), (0x86, "DVD"), (0x87, "Camera"), (0x88, "Text"), (0x8a, "DTV"), (0x8b, "PC"), (0x0d, "Doorcam"), (0x91, "A.Mem"), (0x92, "CD"), (0x93, "N.Radio"), (0x94, "N.Music"), (0x97, "CD2"), (0x96, "Spotify"), (0xbf, "AV"), # Digits: (0x00, "Digit-0"), (0x01, "Digit-1"), (0x02, "Digit-2"), (0x03, "Digit-3"), (0x04, "Digit-4"), (0x05, "Digit-5"), (0x06, "Digit-6"), (0x07, "Digit-7"), (0x08, "Digit-8"), (0x09, "Digit-9"), # Source control: (0x1e, "STEP_UP"), (0x1f, "STEP_DW"), (0x32, "REWIND"), (0x33, "RETURN"), (0x34, "WIND"), (0x35, "Go / Play"), (0x36, "Stop"), (0xd4, "Yellow"), (0xd5, "Green"), (0xd8, "Blue"), (0xd9, "Red"), # Sound and picture control (0x0d, "Mute"), (0x1c, "P.Mute"), (0x2a, "Format"), (0x44, "Sound / Speaker"), (0x5c, "Menu"), (0x60, "Volume UP"), (0x64, "Volume DOWN"), (0xda, "Cinema_On"), (0xdb, "Cinema_Off"), # Other controls: (0x14, "BACK"), (0x7f, "Exit"), # Continue functionality: (0x70, "Rewind Repeat"), (0x71, "Wind Repeat"), (0x72, "Step_UP Repeat"), (0x73, "Step_DW Repeat"), (0x75, "Go Repeat"), (0x76, "Green Repeat"), (0x77, "Yellow Repeat"), (0x78, "Blue Repeat"), (0x79, "Red Repeat"), (0x7e, "Key Release"), # Functions: (0x40, "Guide"), (0x43, "Info"), # Cursor functions: (0x13, "SELECT"), (0xca, "Cursor_Up"), (0xcb, "Cursor_Down"), (0xcc, "Cursor_Left"), (0xcd, "Cursor_Right"), # (0x9b, "Light"), (0x9c, "Command"), # Light Timeout (0x58, "Light Timeout"), # Dummy for 'Listen for all commands' (0xff, "") ]) def decode_ml(telegram): decoded = decode_device(telegram[1]) + " => " + decode_device(telegram[0]) + " TYPE: " + str(telegram[3]) + " SRC_DEST:" + _hexbyte(telegram[4]) + " ORIG_SRC:" + _hexbyte(telegram[5]) + " PL_Type: " + _dictsanitize(ml_command_type_dict,telegram[7]) + " Len: " + str(telegram[8]) # status info if (telegram[7]==0x87): decoded = decoded + " Source: " + _dictsanitize(selectedsourcedict,telegram[10]) + " Ch/Track: " + str(telegram[19]) + " Activity: " + _dictsanitize(ml_state_dict, telegram[21]) + " Source Medium: " + str(_hexword(telegram[18],telegram[17])) + " Picture Identifier: " + _dictsanitize(pictureformatdict, telegram[23]) # beo4 command if (telegram[7]==0x0d): decoded = decoded + " Source: " + _dictsanitize(selectedsourcedict,telegram[10]) + " Command: " + _dictsanitize(beo4commanddict,telegram[11]) # track info long if (telegram[7]==0x82): decoded = decoded + " Source: " + _dictsanitize(selectedsourcedict,telegram[11]) + " Ch/Track: " + str(telegram[12]) + " Activity: " + _dictsanitize(ml_state_dict, telegram[13]) # track info if (telegram[7]==0x44): if (telegram[9]==0x07): decoded = decoded + " Switch Source. Old: " + _dictsanitize(selectedsourcedict,telegram[11]) + " New: " + _dictsanitize(selectedsourcedict,telegram[22]) elif (telegram[9]==0x05): decoded = decoded + " Current Source: " + _dictsanitize(selectedsourcedict,telegram[11]) else: decoded = decoded + " Undefined" # goto source if (telegram[7]==0x45): decoded = decoded + " Source: " + _dictsanitize(selectedsourcedict,telegram[11]) + " Ch/Track: " + str(telegram[12]) # remote request if (telegram[7]==0x20): decoded = decoded + " Command: " + _dictsanitize(beo4commanddict,telegram[14]) + " Dest Selector: " + _dictsanitize(beo4_destselectordict, telegram[11]) # request_key if (telegram[7]==0x5c): if (telegram[9]==0x01): decoded = decoded + " Request Key" elif (telegram[9]==0x02): decoded = decoded + " Transfter Key" elif (telegram[9]==0x04): decoded = decoded + " Key Transfer Complete" else: decoded = decoded + " Undefined" # what audio source if (telegram[7]==0x30): if (telegram[8]==0x0): decoded = decoded + " Request Audio Source" elif (telegram[8]==0x02): decoded = decoded + " Audio Source: " + _dictsanitize(selectedsourcedict,telegram[11]) else: decoded = decoded + " Undefined" return decoded def decode_device(d): if (d==0xc0): return "VIDEO_MASTER" if (d==0xc1): return "AUDIO_MASTER" if (d==0xc2): return "SLAVE_DEVICE" if (d==0x83): return "ALL_LINK_DEVICES" if (d==0x80): return "ALL" if (d==0xf0): return "MLGW" else: return "MLN: " + hex(d) def decode_ml_to_dict(telegram): decoded = dict() decoded['from_device'] = decode_device(telegram[1]) decoded['to_device'] = decode_device(telegram[0]) decoded['type'] = str(telegram[3]) decoded['src_dest'] = _dictsanitize(selectedsourcedict,telegram[4]) decoded['orig_src'] = _dictsanitize(selectedsourcedict,telegram[5]) decoded['payload_type'] = _dictsanitize(ml_command_type_dict,telegram[7]) decoded['payload_len'] = str(telegram[8]) decoded['payload'] = dict() # status info if (telegram[7]==0x87): decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[10]) decoded['payload']['channel_track'] = str(telegram[19]) decoded['payload']['activity'] = _dictsanitize(ml_state_dict, telegram[21]) decoded['payload']['source_medium'] = str(_hexword(telegram[18],telegram[17])) decoded['payload']['picture_identifier'] = _dictsanitize(pictureformatdict, telegram[23]) # beo4 command if (telegram[7]==0x0d): decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[10]) decoded['payload']['command'] = _dictsanitize(beo4commanddict,telegram[11]) # track info long if (telegram[7]==0x82): decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[11]) decoded['payload']['channel_track'] = str(telegram[12]) decoded['payload']['activity'] = _dictsanitize(ml_state_dict, telegram[13]) # track info if (telegram[7]==0x44): if (telegram[9]==0x07): decoded['payload']['subtype'] = "Change Source" decoded['payload']['prev_source'] = _dictsanitize(selectedsourcedict,telegram[11]) decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[22]) elif (telegram[9]==0x05): decoded['payload']['subtype'] = "Current Source" decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[11]) else: decoded['payload']['subtype'] = "Undefined" # goto source if (telegram[7]==0x45): decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[11]) decoded['payload']['channel_track'] = str(telegram[12]) # remote request if (telegram[7]==0x20): decoded['payload']['command'] = _dictsanitize(beo4commanddict,telegram[14]) decoded['payload']['dest_selector'] = _dictsanitize(beo4_destselectordict, telegram[11]) # request_key if (telegram[7]==0x5c): if (telegram[9]==0x01): decoded['payload']['subtype'] = "Request Key" elif (telegram[9]==0x02): decoded['payload']['subtype'] = "Transfter Key" elif (telegram[9]==0x04): decoded['payload']['subtype'] = "Key Transfer Complete" else: decoded['payload']['subtype'] = "Undefined" # what audio source if (telegram[7]==0x30): if (telegram[8]==0x0): decoded['payload']['subtype'] = "Request Audio Source" elif (telegram[8]==0x02): decoded['payload']['subtype'] = "Audio Source" decoded['payload']['source'] = _dictsanitize(selectedsourcedict,telegram[11]) else: decoded['payload']['subtype'] = "Undefined" return decoded HOST = "192.168.1.10" # password = getpass.getpass() password = "**5.Ab.-" tn = telnetlib.Telnet(HOST) tn.read_until(b"login: ") tn.write(password.encode('ascii') + b"\n") print(tn.read_until(b"MLGW >")) tn.write(b"_MLLOG ONLINE\r\n") try: while True: line = tn.read_until(b"\n").decode('ascii') print("------------------") print(line.strip("\n")) items = line.split() try: date_time_obj = datetime.datetime.strptime(items[0], '%Y%m%d-%H:%M:%S:%f:') telegram = bytearray() checksum = 0 for x in range(1, len(items)): telegram.append(items[x][:-1].decode('hex')) checksum = checksum + telegram[len(telegram)-1] # print ("len:"+ str(len(telegram)) + " checksum:" + str(checksum & 0xff ) + " timestamp:" + str(date_time_obj)) # print (''.join('{:02x}'.format(x) for x in telegram)) encoded_telegram = decode_ml_to_dict(telegram) encoded_telegram['timestamp'] = date_time_obj.isoformat() encoded_telegram['bytes'] = ''.join('{:02x}'.format(x) for x in telegram) print (encoded_telegram) except: continue except EOFError as error: print (error) quit() ''' The first byte is the recipient. The second is the sender. VIDEO_MASTER = C0, AUDIO_MASTER = C1, SLAVE_DEVICE (Beoport or BeoMedia) = C2, ALL_LINK_DEVICES = 83 The 8th byte (87) is the command type. This one is a status message. GOTO_SOURCE=0x45, DISTRIBUTION_REQUEST=0x6C, PC_PRESENT=0x96, STANDBY=0x10, RELEASE=0x11, TIMER=0x3C, BEO4_KEY=0x0D, MASTER_PRESENT=0x04, CLOCK=0x40, TRACK_INFO=0x44, TRACK_INFO_LONG=0x82, STATUS_INFO=0x87, DVD_STATUS_INFO=0x94 The 11th byte (0B) is the source. TV = 0B, SAT = 1F, VMEM = 15, DVD = 29, PC = 47, V_AUX = 33, V_AUX2 = 3E, CAMERA = 00, CD = 8D, RADIO = 6F, AMEM = 79, A_AUX = 97, NRADIO = A1, NMUSIC = 7A Byte 20 is the channel number. Here 00, as you're probably on an external STB. Byte 25 is the state UNKNOWN=00, STOP=01, PLAYING=02, FASTFORWARD=03, REWIND=04, RECORD_LOCK=05, STANDBY=06, LOAD=07, STIL_PICTURE=08, SCAN_FORWARD=14, SCAN_REVERSE=15, BLANK_STATUS=FF ['c1', 'c0', '01', '0b', '00', '00', '00', '04', '03', '04', '02', '01', '00', '9b', '00'] FROM: c1 TO: c0 SOH: 01 TYPE: 0b SRC_DESTINATION: 00 ORIGINATING_SRC: 00 SPARE: 00 PAYLOAD TYPE: 04 PL LENGTH: 3 PL V MINOR: 04 PL V MAYOR: 02 PL DATA: 01 PL DATA: 00 ['c0', 'c1', '01', '14', '00', '00', '00', '04', '03', '04', '01', '01', '01', 'a4', '00'] FROM: c0 TO: c1 SOH: 01 TYPE: 14 SRC_DESTINATION: 00 ORIGINATING_SRC: 00 SPARE: 00 PAYLOAD TYPE: 04 PL LENGTH: 3 PL V MINOR: 04 PL V MAYOR: 01 PL DATA: 01 PL DATA: 01 ['c1', 'c0', '01', '0b', '00', '00', '00', '45', '0d', '01', '02', '6f', '00', '02', '01', '00', '01', '00', '00', '00', '03', '02', '00', '5a', '00'] FROM: c1 TO: c0 SOH: 01 TYPE: 0b SRC_DESTINATION: 00 ORIGINATING_SRC: 00 SPARE: 00 PAYLOAD TYPE: 45 PL LENGTH: 13 PL V MINOR: 01 PL V MAYOR: 02 PL DATA: o 6f PL DATA: 00 PL DATA: 02 PL DATA: 01 PL DATA: 00 PL DATA: 01 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: 03 PL DATA: 02 PL DATA: 00 ['c0', 'c1', '01', '14', '00', '00', '00', '44', '08', '05', '02', '6f', '00', '02', '01', '00', '00', '00', '5b', '00'] FROM: c0 TO: c1 SOH: 01 TYPE: 14 SRC_DESTINATION: 00 ORIGINATING_SRC: 00 SPARE: 00 PAYLOAD TYPE: 44 PL LENGTH: 8 PL V MINOR: 05 PL V MAYOR: 02 PL DATA: o 6f PL DATA: 00 PL DATA: 02 PL DATA: 01 PL DATA: 00 PL DATA: 00 PL DATA: 00 ['c0', 'c1', '01', '14', '00', '00', '00', '82', '0a', '01', '06', '6f', '00', '02', '00', '00', '00', '00', '00', '01', '9b', '00'] FROM: c0 TO: c1 SOH: 01 TYPE: 14 SRC_DESTINATION: 00 ORIGINATING_SRC: 00 SPARE: 00 PAYLOAD TYPE: 82 PL LENGTH: 10 PL V MINOR: 01 PL V MAYOR: 06 PL DATA: o 6f PL DATA: 00 PL DATA: 02 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: 01 ['83', 'c1', '01', '2c', '00', '6f', '00', '06', '11', '00', '03', '01', '01', '00', '00', '52', '41', '44', '49', '4f', '20', '20', '20', '20', '20', '20', '20', '4b', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 06 PL LENGTH: 17 PL V MINOR: 00 PL V MAYOR: 03 PL DATA: 01 PL DATA: 01 PL DATA: 00 PL DATA: 00 PL DATA: R 52 PL DATA: A 41 PL DATA: D 44 PL DATA: I 49 PL DATA: O 4f PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '25', '00', '01', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '9b', '34', '08', '9c', 'de', '12', '00', '20', 'e9', '90', '7c', '28', '02', '91', '7c', 'ff', 'ff', 'ff', 'ff', '22', '02', '91', '7c', '94', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 37 PL V MINOR: 00 PL V MAYOR: 01 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: ? 9b PL DATA: 4 34 PL DATA: 08 PL DATA: ? 9c PL DATA: ? de PL DATA: 12 PL DATA: 00 PL DATA: 20 PL DATA: ? e9 PL DATA: ? 90 PL DATA: | 7c PL DATA: ( 28 PL DATA: 02 PL DATA: ? 91 PL DATA: | 7c PL DATA: ? ff PL DATA: ? ff PL DATA: ? ff PL DATA: ? ff PL DATA: " 22 PL DATA: 02 PL DATA: ? 91 PL DATA: | 7c ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '15', '00', '02', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '4e', '65', '77', '20', '41', '67', '65', '00', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 21 PL V MINOR: 00 PL V MAYOR: 02 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: N 4e PL DATA: e 65 PL DATA: w 77 PL DATA: 20 PL DATA: A 41 PL DATA: g 67 PL DATA: e 65 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '1b', '00', '03', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '55', '6e', '69', '74', '65', '64', '20', '53', '74', '61', '74', '65', '73', 'ad', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 27 PL V MINOR: 00 PL V MAYOR: 03 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: U 55 PL DATA: n 6e PL DATA: i 69 PL DATA: t 74 PL DATA: e 65 PL DATA: d 64 PL DATA: 20 PL DATA: S 53 PL DATA: t 74 PL DATA: a 61 PL DATA: t 74 PL DATA: e 65 PL DATA: s 73 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '22', '00', '04', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '31', '2e', '66', '6d', '20', '43', '68', '69', '6c', '6c', '6f', '75', '74', '20', '4c', '6f', '75', '6e', '67', '65', 'd8', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 34 PL V MINOR: 00 PL V MAYOR: 04 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: 1 31 PL DATA: . 2e PL DATA: f 66 PL DATA: m 6d PL DATA: 20 PL DATA: C 43 PL DATA: h 68 PL DATA: i 69 PL DATA: l 6c PL DATA: l 6c PL DATA: o 6f PL DATA: u 75 PL DATA: t 74 PL DATA: 20 PL DATA: L 4c PL DATA: o 6f PL DATA: u 75 PL DATA: n 6e PL DATA: g 67 PL DATA: e 65 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '13', '00', '05', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '4b', '45', '49', '4e', '45', '16', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 19 PL V MINOR: 00 PL V MAYOR: 05 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: K 4b PL DATA: E 45 PL DATA: I 49 PL DATA: N 4e PL DATA: E 45 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '15', '00', '06', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '55', '6e', '6b', '6e', '6f', '77', '6e', '9d', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 21 PL V MINOR: 00 PL V MAYOR: 06 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: U 55 PL DATA: n 6e PL DATA: k 6b PL DATA: n 6e PL DATA: o 6f PL DATA: w 77 PL DATA: n 6e ['83', 'c1', '01', '2c', '00', '6f', '00', '06', '11', '00', '03', '01', '01', '00', '00', '52', '41', '44', '49', '4f', '20', '20', '20', '20', '20', '20', '20', '4b', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 06 PL LENGTH: 17 PL V MINOR: 00 PL V MAYOR: 03 PL DATA: 01 PL DATA: 01 PL DATA: 00 PL DATA: 00 PL DATA: R 52 PL DATA: A 41 PL DATA: D 44 PL DATA: I 49 PL DATA: O 4f PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 PL DATA: 20 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '25', '00', '01', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '9b', '34', '08', '9c', 'de', '12', '00', '20', 'e9', '90', '7c', '28', '02', '91', '7c', 'ff', 'ff', 'ff', 'ff', '22', '02', '91', '7c', '94', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 37 PL V MINOR: 00 PL V MAYOR: 01 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: ? 9b PL DATA: 4 34 PL DATA: 08 PL DATA: ? 9c PL DATA: ? de PL DATA: 12 PL DATA: 00 PL DATA: 20 PL DATA: ? e9 PL DATA: ? 90 PL DATA: | 7c PL DATA: ( 28 PL DATA: 02 PL DATA: ? 91 PL DATA: | 7c PL DATA: ? ff PL DATA: ? ff PL DATA: ? ff PL DATA: ? ff PL DATA: " 22 PL DATA: 02 PL DATA: ? 91 PL DATA: | 7c ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '15', '00', '02', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '4e', '65', '77', '20', '41', '67', '65', '00', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 21 PL V MINOR: 00 PL V MAYOR: 02 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: N 4e PL DATA: e 65 PL DATA: w 77 PL DATA: 20 PL DATA: A 41 PL DATA: g 67 PL DATA: e 65 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '1b', '00', '03', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '55', '6e', '69', '74', '65', '64', '20', '53', '74', '61', '74', '65', '73', 'ad', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 27 PL V MINOR: 00 PL V MAYOR: 03 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: U 55 PL DATA: n 6e PL DATA: i 69 PL DATA: t 74 PL DATA: e 65 PL DATA: d 64 PL DATA: 20 PL DATA: S 53 PL DATA: t 74 PL DATA: a 61 PL DATA: t 74 PL DATA: e 65 PL DATA: s 73 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '22', '00', '04', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '31', '2e', '66', '6d', '20', '43', '68', '69', '6c', '6c', '6f', '75', '74', '20', '4c', '6f', '75', '6e', '67', '65', 'd8', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 34 PL V MINOR: 00 PL V MAYOR: 04 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: 1 31 PL DATA: . 2e PL DATA: f 66 PL DATA: m 6d PL DATA: 20 PL DATA: C 43 PL DATA: h 68 PL DATA: i 69 PL DATA: l 6c PL DATA: l 6c PL DATA: o 6f PL DATA: u 75 PL DATA: t 74 PL DATA: 20 PL DATA: L 4c PL DATA: o 6f PL DATA: u 75 PL DATA: n 6e PL DATA: g 67 PL DATA: e 65 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '13', '00', '05', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '4b', '45', '49', '4e', '45', '16', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 19 PL V MINOR: 00 PL V MAYOR: 05 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: K 4b PL DATA: E 45 PL DATA: I 49 PL DATA: N 4e PL DATA: E 45 ['83', 'c1', '01', '2c', '00', '6f', '00', '0b', '15', '00', '06', '00', '01', '01', 'a1', '05', '00', '00', '00', 'ff', '00', 'ff', '00', '01', '55', '6e', '6b', '6e', '6f', '77', '6e', '9d', '00'] FROM: 83 TO: c1 SOH: 01 TYPE: 2c SRC_DESTINATION: 00 ORIGINATING_SRC: 6f SPARE: 00 PAYLOAD TYPE: 0b PL LENGTH: 21 PL V MINOR: 00 PL V MAYOR: 06 PL DATA: 00 PL DATA: 01 PL DATA: 01 PL DATA: ? a1 PL DATA: 05 PL DATA: 00 PL DATA: 00 PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: ? ff PL DATA: 00 PL DATA: 01 PL DATA: U 55 PL DATA: n 6e PL DATA: k 6b PL DATA: n 6e PL DATA: o 6f PL DATA: w 77 PL DATA: n 6e '''