了解三星电视的红外代码

Zso*_*eth 2 arduino nodemcu esp8266

有人可以帮助我了解如何在使用 ESP8266-HTTP-IR-Blaster 库的项目中使用 RAW IR 数据吗?

我根据https://github.com/mdhiggins/ESP8266-HTTP-IR-Blaster创建了一个带有 IR 发送器和接收器的 NodeMCU 板

只要我使用捕获的代码,一切正常,例如: http://NodeMCU-IP/msg?code=E0E040BF:SAMSUNG:32 这是电源按钮的代码 (E0E040BF)

当我在家庭自动化系统中使用它时,如果我有一个专用的开和关序列,这对我来说非常有益,我在这里找到:http : //www.remotecentral.com/cgi-bin/mboard/rc -discrete/thread.cgi?5780,但无法通过 RAW 数据转换、修改或发送它。

使用Node-red,尝试了很多方法,也给原来的项目实现了一个MQTT客户端,但是我试了还是不接受这些代码。不发送。

也尝试作为 JSON,没有帮助。

[
    {
    "type":"raw",
    "data":"[0000, 006D, 0000, 0022, 00AC, 00AC, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0689]",
    "khz":38
    }
]
Run Code Online (Sandbox Code Playgroud)

知道我接下来可以尝试什么吗?

rol*_*ger 5

您上面展示的“Pronto 格式”的一个很好的介绍是在Remote Central

对于上面的特定示例,对于在远程中央链接上给出的三星 OFF 代码,完整代码以十六进制表示的 16 位数字序列给出,中间有空格:

0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689
Run Code Online (Sandbox Code Playgroud)

您可以将其分解为序言(出于兴趣在此处分解,但如果您已经有可用的三星代码则不需要):

  • 0x0000 - 这是原始代码格式数据
  • 0x006D - 频率 109 十进制 = 38.028kHz(计算见上面的链接)
  • 0x0000 - 第一个序列中没有突发对
  • 0x0022 - 34 个十进制 - 34 个突发信号对
  • 00AC 00AC - 第一个信号突发 - 在 38kHz 下开启 0xAC(172 个十进制)周期,关闭相同数量
  • 之后是 32 对数据“突发对”(如果您已经有同一设备的其他代码,这可能是您唯一需要的)
  • 0015 0689 - 信号的最终突发 - 开启 0x15(十进制 21)周期,关闭 0x689(十进制 1673)周期,保证在传输下一个代码之前 44ms 没有任何 IR

要手动解释数据,请将其以 8 个数字为一组复制(例如,复制到文本编辑器中):

0015 0040 0015 0040 0015 0040 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0015 
0015 0040 0015 0040 0015 0040 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0040 
0015 0040 0015 0015 0015 0015 0015 0040 
0015 0040 0015 0040 0015 0040 0015 0015
0015 0015 0015 0040 0015 0040 0015 0015 
Run Code Online (Sandbox Code Playgroud)

然后:

  • 忽略所有数字都相同的列(即使是上面的列,代表接通时间 - 0x15 = 21 个 IR 在 38kHz 的十进制周期)
  • 对于剩余的列(代表关闭时间),将大数字(在本例中为 0x40)替换为“1”,将小数字 (0x15) 替换为“0”。

对于第一行

0015 0040 0015 0040 0015 0040 0015 0015 
Run Code Online (Sandbox Code Playgroud)

忽略偶数列离开:

0040 0040 0040 0015 
Run Code Online (Sandbox Code Playgroud)

用 1 和 0 替换那些

1    1    1    0
Run Code Online (Sandbox Code Playgroud)

如果你把它转换成十六进制,它是'E'

下一行是“0”,然后是“E”,然后是“0”(看到它以与上述其他三星代码相同的 E0E0 开头,这已经很令人欣慰了...),其余的行使其成为 E0E019E6

用 ON 代码做同样的事情会给你 E0E09966

由于我最近需要为相同的代码解决相同的问题,因此我可以确认我的三星电视对这些代码的响应为 OFF 和 ON。

毫不奇怪,有多种软件工具可以在格式之间进行转换,并且可以使用多种格式来描述相同的信号(xkcd 对此进行了很好的解释)。例如,irdb.tk将上述字符串解码为“Protocol NECx2, device 7, subdevice 7, OBC 152”。这取决于你是否知道你必须

  • 位反转设备号“07”以获得“E0”
  • 位反转子设备编号(也是“07”)以获得“E0”
  • 将 152 转换为十六进制并反转位以得到 '19'
  • 将最后两位数字计算为 ( 0xFF - 位反转 OBC ),0xFF - 0x19 = 0xE6,给出最后 8 位“E6”

  • 非常感谢您!我可以确认它也对我有用! (2认同)