如何将Arduino-IRremote格式红外码转换为Tasmota-IRSend格式?
解决Arduino IRRemote与Tasmota NEC红外码格式转换问题
核心问题原因
Arduino IRRemote库捕获的NEC红外码以**LSB(最低位优先)的字节顺序存储,而Tasmota的IRSend命令默认使用MSB(最高位优先)**的标准NEC字节顺序,两者的字节排列完全相反,这是导致发送失败的关键。
转换步骤与正确命令
根据你提供的捕获结果:
Protocol=NEC Address=0xF300 Command=0x91 Raw-Data=0x6E91F300, 32 bits LSB first.
按以下步骤转换:
- 拆解Raw-Data的字节:
0x6E(命令反码)、0x91(命令)、0xF3(地址反码)、0x00(原始地址) - 按标准NEC的MSB顺序重组字节:原始地址 → 地址反码 → 命令 → 命令反码,即
0x00→0xF3→0x91→0x6E - 合并为32位十六进制值:
0x00F3916E
最终可用的Tasmota IRSend命令为:
IRSend {"Protocol":"NEC","Bits":32,"Data":0x00F3916E}
备选验证方案(直接指定地址与命令)
部分Tasmota版本支持直接传入地址和命令参数,无需合并为32位数据,你也可以尝试:
IRSend {"Protocol":"NEC","Address":0x00,"Command":0x91,"Bits":32}
(注:这里的Address为原始8位地址,Tasmota会自动生成地址反码和命令反码)
额外注意事项
- 若设备使用的是16位地址的NEC变种,可将地址指定为捕获到的
0xF300,命令为0x91:IRSend {"Protocol":"NEC","Address":0xF300,"Command":0x91,"Bits":32}
内容的提问来源于stack exchange,提问作者Raja
相关产品推荐
相关产品推荐

