Just to avoid double effort, I'm currently writing on a script that is implementing the conversion from raw pronto -> KeeneIR format
BestR Walter
Notice: This forum has been recovered from an old backup, so some content, links, and dates may be outdated. The forum is currently read-only while we restore sign-in and registration functionality. Details
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
If you find this forum valuable and would like to help keep it online, donations to help cover hosting and domain costs are greatly appreciated, but never expected. You can support the forum through Buy Me a Coffee or Ko-fi. Thank you for helping preserve the EventGhost community.
Sanitising IR codes (for new plugin for KIRA)
-
krambriw
- Plugin Developer
- Posts: 2570
- Joined: Sat Jun 30, 2007 2:51 pm
- Location: Stockholm, Sweden
- Contact:
Re: Sanitising IR codes (for new plugin for KIRA)
After support from Mark at Keene Electronics, I have ported some java code to a simple python script. The script converts pronto code to KeeneIR format. It would not be hard to update the KeeneIR plugin using the functions to enable the plugin to support pronto codes directly
Attached is also the EG xml-file that can be used. Just open it and run the script
Kind regards, Walter
Attached is also the EG xml-file that can be used. Just open it and run the script
Kind regards, Walter
Code: Select all
# To be documented when/if used...
# A script that converts raw pronto to KeeneIR
# code
def averageThis(p_data):
X = 0
y = 0
tmpStr = ""
Pair_Count = 0
Burst_Time = []
MyInt = []
codeLength = len(p_data)
last_code = 0
timeA = 0.0
timeB = 0.0
zzz = 0
error = True
#try:
for X in range(0,255):
Burst_Time.append(0)
for X in range(0,codeLength,5):
tmpStr = p_data[X:X+4]
Burst_Time[y] = int(tmpStr, 16)
y += 1
last_code = y
Pair_Count = Burst_Time[0] % 256
for zzz in range(2,last_code - 2):
timeA = Burst_Time[zzz] * 0.75
timeB = Burst_Time[zzz] * 1.30
MyObjList = []
for X in range(zzz,last_code):
tstTime = Burst_Time[X]
if (tstTime > timeA and tstTime < timeB):
MyObjList.append(X)
MyObjList.append(tstTime)
L = len(MyObjList)
total = 0
if L > 0:
for X in range(1,L,2):
MyOb = MyObjList[X]
total = total + MyOb
average = total / (L / 2)
pos = 0
if L > 0:
for X in range(0,L,2):
MyOb = MyObjList[X]
pos = MyOb
Burst_Time[pos] = average
data = ""
for X in range(0,last_code):
nb = str(hex(Burst_Time[X]))[2:]
if len( nb ) < 4:
nb = "0" + nb
data = data + nb.upper() + " "
data = "K " + data # K plus a space plus data
error = False
#except:
# print "Some error during averaging..."
if error:
return ""
else:
return data
def convertFromPronto(p_data):
X = 0
y = 0
tmpStr = ""
freq = 0.0
Pair_Count = 0
Lead_in = 0
Burst_Time = []
MyInt = []
codeLength = len(p_data)
error = True
try:
for X in range(0,255):
Burst_Time.append(0)
for X in range(0,codeLength,5):
tmpStr = p_data[X:X+4]
Burst_Time[y] = int(tmpStr, 16)
y += 1
freq = 4145 / Burst_Time[1]
Pair_Count = Burst_Time[2]
if Pair_Count == 0:
Pair_Count = Burst_Time[3]
if Pair_Count == 0:
return ""
for X in range(0,y):
MyInt.append(0)
MyInt[0] = freq * 256 + Pair_Count
cycle_time = 1000 / freq
Lead_in = Burst_Time[4] * cycle_time
MyInt[1] = Lead_in
MyInt[2] = Burst_Time[5] * cycle_time
Pair_Count = Pair_Count - 1
for X in range(0,Pair_Count * 2):
MyInt[X + 3] = Burst_Time[X + 6] * cycle_time
MyInt[X + 3] = 8192
data = ""
for X in range(0,(Pair_Count * 2) + 3):
nb = str(hex(MyInt[X]))[2:]
if len( nb ) < 4:
nb = "0" + nb
data = data + nb.upper() + " "
error = False
except:
print "Some error during conversion..."
if error:
return ""
else:
return data
# Main
# NEXA (D 16 OFF)
#p_data = "0000 006D 0000 0019 000D 0027 0027 000D 000D 0027 0027 000D 000D 0027 000D 0027 000D 0027 000D 0027 000D 0027 0027 000D 000D 0027 0027 000D 000D 0027 0027 000D 000D 0027 0027 000D 000D 0027 000D 0027 000D 0027 0027 000D 000D 0027 0027 000D 000D 0027 000D 0027 000D 01AB"
# InterTechno (N 15 ON)
#p_data = "0000 0073 0000 0019 000e 002a 002a 000e 000e 002a 000e 002a 000e 002a 002a 000e 000e 002a 002a 000e 000e 002a 000e 002a 000e 002a 002a 000e 000e 002a 002a 000e 000e 002a 002a 000e 000e 002a 000e 002a 000e 002a 002a 000e 000e 002a 002a 000e 000e 002a 002a 000e 000e 0199"
# LG DVD Recorder RH 255 (ON)
#p_data = "0000 006d 0022 0003 00ab 00aa 0016 003f 0016 0014 0016 003e 0016 003f 0016 0014 0016 003e 0016 0014 0016 0014 0016 003e 0016 0014 0016 003e 0016 003f 0016 0014 0016 003e 0016 0014 0016 0014 0016 003e 0016 0014 0016 003f 0016 0014 0016 003e 0016 003e 0016 003f 0016 0014 0016 0014 0016 003f 0016 0014 0016 003e 0016 0014 0016 0014 0016 0014 0016 003e 0016 06c3 00ab 00aa 0016 0014 0016 0e7d"
# LG DVD Recorder RH 255 (OFF)
p_data = "0000 006d 0022 0003 00ab 00aa 0016 003e 0016 0014 0016 003f 0016 003e 0016 0014 0016 003e 0016 0014 0016 0014 0016 003e 0016 0014 0016 003f 0016 003e 0016 0014 0016 003f 0016 0014 0016 0014 0016 0014 0016 003e 0016 003f 0016 0014 0016 003e 0016 003f 0016 003e 0016 0014 0016 003f 0016 0014 0016 0014 0016 003e 0016 0014 0016 0014 0016 0014 0016 003e 0016 06c3 00ab 00aa 0016 0014 0016 0e7d"
t = convertFromPronto(p_data)
print "KeeneIR code after conversion"
print t
t = averageThis(t)
print "KeeneIR code after averaging"
print t
My released plugins
https://drive.google.com/drive/folders/ ... y01eVBKeHM
https://drive.google.com/drive/folders/ ... y01eVBKeHM
Re: Sanitising IR codes (for new plugin for KIRA)
That's really good stuff, I'll try and get it incorporated this weekend!