了解三星电视的 IR 代码
Understanding IR codes for Samsung TV
有人可以帮助我了解如何在使用 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
}
]
知道我接下来可以尝试什么吗?
您上面显示的 'Pronto format' 的一个很好的介绍位于 Remote Central
对于上面的具体示例,对于在 your remote central link 给出的三星 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
您可以将其分解为序言(出于兴趣而在此处分解,但如果您已经拥有有效的三星代码则不需要):
- 0x0000 - 这是原始代码格式数据
- 0x006D - 频率109十进制= 38.028kHz(计算见上文link)
- 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
然后:
- 忽略所有数字都相同的列(即使是上面的列,它们代表开启时间 - 0x15 = 38kHz IR 的 21 个小数周期)
- 对于剩余的列(代表关闭时间),将大数字(在本例中为 0x40)替换为“1”,将小数字(0x15)替换为“0”。
对于第一行
0015 0040 0015 0040 0015 0040 0015 0015
忽略偶数列留下:
0040 0040 0040 0015
用 1 和 0 替换那些
1 1 1 0
如果将其转换为十六进制,则为 'E'
下一行是“0”,然后是 'E',然后是“0”(看到它以与上面其他三星代码相同的 E0E0 开头,已经令人欣慰了...),以及剩余的行做了
E0E019E6
对 ON 代码做同样的事情给你
E0E09966
由于我最近需要针对相同的代码解决相同的问题,我可以确认我的三星电视对这些代码的响应是关闭和打开。
毫不奇怪,有多种软件工具可以在格式之间进行转换,并且可以使用多种格式来描述相同的信号(xkcd). For example, irdb on GitHUB 解释得很好,将上面的字符串解码为“Protocol NECx2 , device 7, subdevice 7, OBC 152". 由你知道你必须
- 对设备号'07'进行位反转得到'E0'
- 位反转子设备号(也是'07')得到'E0'
- 将 152 转换为十六进制并反转位得到 '19'
- 将最后两位数字计算为(0xFF - 位反转 OBC),0xFF - 0x19 = 0xE6,给出最后 8 位 'E6'
有人可以帮助我了解如何在使用 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
}
]
知道我接下来可以尝试什么吗?
您上面显示的 'Pronto format' 的一个很好的介绍位于 Remote Central
对于上面的具体示例,对于在 your remote central link 给出的三星 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
您可以将其分解为序言(出于兴趣而在此处分解,但如果您已经拥有有效的三星代码则不需要):
- 0x0000 - 这是原始代码格式数据
- 0x006D - 频率109十进制= 38.028kHz(计算见上文link)
- 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
然后:
- 忽略所有数字都相同的列(即使是上面的列,它们代表开启时间 - 0x15 = 38kHz IR 的 21 个小数周期)
- 对于剩余的列(代表关闭时间),将大数字(在本例中为 0x40)替换为“1”,将小数字(0x15)替换为“0”。
对于第一行
0015 0040 0015 0040 0015 0040 0015 0015
忽略偶数列留下:
0040 0040 0040 0015
用 1 和 0 替换那些
1 1 1 0
如果将其转换为十六进制,则为 'E'
下一行是“0”,然后是 'E',然后是“0”(看到它以与上面其他三星代码相同的 E0E0 开头,已经令人欣慰了...),以及剩余的行做了 E0E019E6
对 ON 代码做同样的事情给你 E0E09966
由于我最近需要针对相同的代码解决相同的问题,我可以确认我的三星电视对这些代码的响应是关闭和打开。
毫不奇怪,有多种软件工具可以在格式之间进行转换,并且可以使用多种格式来描述相同的信号(xkcd). For example, irdb on GitHUB 解释得很好,将上面的字符串解码为“Protocol NECx2 , device 7, subdevice 7, OBC 152". 由你知道你必须
- 对设备号'07'进行位反转得到'E0'
- 位反转子设备号(也是'07')得到'E0'
- 将 152 转换为十六进制并反转位得到 '19'
- 将最后两位数字计算为(0xFF - 位反转 OBC),0xFF - 0x19 = 0xE6,给出最后 8 位 'E6'