【发布时间】:2020-09-12 14:28:46
【问题描述】:
编辑:我想我的一切都差不多了。这只是我的第二个循环不断出现索引失败......任何想法为什么我的 coms 循环失败?
我目前正在尝试获取我的 HD180x optomoa 投影仪的 IR 代码。它正在变成一个非常困难的问题。
我只需要能够打开电源,没有别的。
我没有红外传感器来直接捕获代码,因此尝试在没有红外传感器的情况下进行操作是一种挑战。
到目前为止,这是不可能的。我尝试了几种不同的方法来使用 Raspberry Pi 直接从遥控器获取 IR 代码,但没有成功。
我的下一个想法是使用 IR 发射器,然后循环查看所有可能的 IR Power ON 代码。
LIRC,这是唯一的 Pi IR 软件,有很多遥控器的列表:http://lirc.sourceforge.net/remotes/
我想尝试并做的是制作一个 python 脚本,它只从该列表中获取所有文件,然后尝试所有这些文件。目标只是打开投影仪,所以我可以让它运行多久,如果它打开了,我可以找出是哪个打开的。
所以我的伪代码如下:
- 下载整个远程列表。
- 索引整个远程列表。 = RLISTINDEX[] 2a。停止 LIRCD 服务。
- 将 /etc/lirc/lircd.conf 替换为 RLISTINDEX[](一次移动一个文件) 3a。启动LIRCD服务(这样就可以了
- 从远程代码文件中获取“名称”字段。 = RNAME
- 获取远程代码文件中所有可能代码的列表 = IRCODE_ARRAY
- 运行 irsend SEND_ONCE RNAME IRCODE_ARRAY[](循环遍历代码数组)
- 返回步骤 3。
我不知道该怎么做的问题是从配置文件中获取“名称”字段和“代码”字段。
另外,不知道如何通过python发送终端命令。
有什么想法吗?
我能够获取开始发送的代码,现在我只需要了解如何从 conf 文件中获取“IR 代码”...
我是如此接近...我只需要能够执行“发送列表”““”>> /home/pi/list.ist”,这样我就可以找到当前处于活动状态的遥控器的名称。 ......我似乎无法弄清楚如何使该命令正确运行。我认为引号把它搞砸了.....
import os
import shutil
import subprocess
import time
# Using readline()
count = 0
#os.remove("list.list")
os.system("touch /home/pi/com.list")
os.system("touch /home/pi/list.list")
os.system("systemctl start lircd")
for filename in os.listdir('confs'):
currconf = "/home/pi/confs/" + filename
print "**********start*******"
print "1. ", filename
#print "2. ", currconf
#os.system("systemctl stop lircd")
#subprocess.call('systemctl stop lircd', shell=True)
shutil.move(currconf, "/etc/lirc/lircd.conf")
subprocess.call('systemctl reset-failed lircd', shell=True)
subprocess.call('systemctl restart lircd', shell=True)
time.sleep(1)
subprocess.call('systemctl status lircd | tail -3', shell=True)
# os.system("systemctl start lircd")
# irlist = ""
#print "3. ", irlist
os.remove("/home/pi/list.list")
os.remove("/home/pi/com.list")
os.system('irsend list \"\" \"\" >> /home/pi/list.list')
qbfile = open("/home/pi/list.list", "r")
for aline in qbfile:
values = aline.split()
print(values[0])
rname = values[0].strip('\n')
print "2. rname", rname
comlist = 'irsend list ' + rname + ' \"\" >> /home/pi/com.list'
print "3. comlist", comlist
os.system(comlist)
comfile = open("/home/pi/com.list", "r")
for coms in comfile:
comvalues = coms.split()
comand = comvalues[1]#.strip('\n')
cmd = "irsend SEND_ONCE " + rname + " " + comand
print "4. cmd ", cmd
time.sleep(.001)
os.system(cmd)
print "**********end*******"
【问题讨论】:
标签: python python-2.7 configuration brute-force