Created
January 3, 2022 00:14
-
-
Save sleemanj/c51dabfcff7ba73d454f27deb78c54f9 to your computer and use it in GitHub Desktop.
Quick kludgy script to take a Pronto Hex format of code from the remotecentral.com database and blindly assuming it is NEC format with a single pulse lead-in and 32 bits, convert to NEC device and Function.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$Pronto = "0000 006d 0022 0002 0155 00ab 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0040 0015 0015 0015 0015 0015 05ea 0155 0055 0015 0e3d"; | |
$Pronto = preg_split('/ /', $Pronto); | |
// Remove header | |
array_shift($Pronto); | |
array_shift($Pronto); | |
array_shift($Pronto); | |
array_shift($Pronto); | |
// Remove leadin | |
array_shift($Pronto); | |
array_shift($Pronto); | |
// Decode 32 bits | |
$Bits = array(); | |
while(count($Pronto) && count($Bits) < 32) | |
{ | |
$A = preg_match('/001/', array_shift($Pronto))?1:0; | |
$B = preg_match('/001/', array_shift($Pronto))?1:0; | |
$Bits[] = $A && $B ? 0 : 1; | |
} | |
$Bytes = preg_split('/ /', chunk_split(implode($Bits,''),8," ")); | |
if( | |
(intval($Bytes[0],2) + intval($Bytes[1],2)) !== 255 | |
) | |
{ | |
echo "Device: {$Bytes[0]} but check complement {$Bytes[1]} does not match \n"; | |
echo " : could be " . strtr($Bytes[1],'01','10') . " maybe.\n"; | |
} | |
else | |
{ | |
echo "Device: {$Bytes[0]}\n"; | |
} | |
if( | |
(intval($Bytes[2],2) + intval($Bytes[3],2)) !== 255 | |
) | |
{ | |
echo "Function: {$Bytes[2]} but check complement {$Bytes[3]} does not match \n"; | |
echo " : could be " . strtr($Bytes[3],'01','10') . " maybe.\n"; | |
} | |
else | |
{ | |
echo "Function: {$Bytes[2]}\n"; | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I made this to decode the Kenwood IR codes which have lengths of about 001something for the first half and 004x for the second half of each bit, you can see where we determine each bit half in line 20 and 21, it's very slack, either it's 001something or it's not.