富士通红外远程校验和计算



我正在尝试对富士通交流遥控协议进行逆向工程,用于家庭自动化项目。我已经确定了哪些字节对应于哪些控制信息,但是最后有一个校验和。

我相信校验和是使用其他三个字节(温度、模式和风扇速度)计算的。

我使用电子表格尝试对已执行的操作进行逆向工程以获取校验和,并发现对于"00001010"的温度和任何模式/风扇速度组合,以下算法成立;

校验和 = 392 - (温度 + 模式 + 风扇速度)

Example
392 - (10 + 64 + 128) = 190
392 - (10 + 192 + 128) = 62
392 - (10 + 32 + 128) = 222

但是,没有其他温度(我已经测试过)以这种方式工作。我目前的理论是,温度首先对其执行其他操作,无论此操作是什么,都会产生相同的温度"00001010"值,但不会产生其他温度。

原始数据:

Temperature, Mode, Fan Speed, Checksum
00000110, 10000000, 10000000, 01110110
00001010, 10000000, 10000000, 01111110
00000010, 10000000, 10000000, 01110001

完整电子表格位于:此链接

我无法计算出正在对温度执行什么操作,或者事实上,我对算法是什么的假设是否正确。

我想知道是否有人对此类问题有更多经验,可以对此有所了解?

额外:

温度值是温度的整数,例如 21 度(00010101)

1. Reversed to get 10101000
2. Only the first four bits taken - 1010
3. Then expanded to get a value of 00001010

所以00001010上面的原始数据是 21 度的温度

原始问题已被编辑,因为我最初错误地接近了这一点,并假设我的假设是正确的

经过进一步筛选Google搜索结果后,我找到了以下解决方案。

感谢 George Dewar 在 Github 上

1. Reverse (flip) bytes 8 - 13 (I - N in spreadsheet)
2. Sum those bytes
3. (208 - sum) % 256
4. Reverse (flip) bytes of result

例如

Data: 00000110, 10000000, 10000000, 00000000, 00000000, 00000000
1. Reverse:
01100000, 00000001, 00000001, 00000000, 00000000, 00000000
96,        1,        1,        0,        0,        0
2. Sum:
96 + 1 + 1 + 0 + 0 + 0 = 98
3. Calculate:
(208 - 98) % 256 = 110 (dec) or 01101110 (bin)
4. Reverse:
01110110

答案由 Github 上的 @george-dewar 提供。所以非常感谢他。我永远不会解决这个问题。我的区别仅在于我的遥控器的选项较少,因此要反转和求和的字节更少,否则它的工作方式与 George 在他的示例代码中完全相同。

最新更新