如何使用Python使用Raspberry Pi的IR Remote?

时间:2017-04-29 01:23:28

标签: python raspberry-pi3 infrared lirc

我买了[红外传感器和遥控器] [1]用于我的Raspberry Pi 3.

我有LIRC设置,我可以使用以下命令检测IR Remote的输入:

  

sudo /etc/init.d/lirc stop

     

mode2 -d / dev / lirc0

当我运行上述命令时,我能够检测到IR Remote的输入。当我按下IR REmote上的任何按钮时,我得到如下输出:

enter image description here

我的问题是 - 在上面的输出中,我按下了' 2"在遥控器上。我该如何解密(在python中)哪个按钮真的按下了?

更新1:

我尝试使用python-lirc包,但是我在这一行得到错误:

sockid=lirc.init("myprogram")

2 个答案:

答案 0 :(得分:0)

您可能不希望使用mode2输出。有一个可用的Python库(Here),这可能是一个更好的方法来进行这个项目。

<强>代码:

import lirc
sockid = lirc.init("myprogram")
print(lirc.nextcode())
lirc.deinit()

lircrc配置文件

begin
  button = 1          # what button is pressed on the remote
  prog = myprogram    # program to handle this command
  config = one, horse # configs are given to program as list
end

begin
  button = 2
  prog = myprogram
  config = two
end

按下按钮1后的结果

['one', 'horse']

答案 1 :(得分:0)

之前的答案快捷方式是lirc解码。由于您具有工作模式2,因此内核驱动程序可以正常工作并将正确的数据发送到lircd。但是,mode2不会告诉您解码是否有效。

要检查解码,请使用irw(1)。在您从此程序获得工作输出之前,您不知道lirc是否可以解码您的遥控器。

上面描述的lircrc文件用于将通用按钮按下(如irw所示)转换为特定于应用程序的命令。要调试此文件,请使用ircat(1)。

当您从irw(1)和ircat(1)获得工作输出时,您的lirc设置已完成。在使用任何python包之前,确实需要一个工作lirc设置。 BTW,截至即将发布的0.10.0 lirc将具有本机python绑定。

有关设置lirc的综合指南,请访问http://lirc.org/html/configuration-guide.html