РЕДАКТИРОВАТЬ: Я думаю, у меня все почти работает. Это просто мой второй l oop продолжает иметь сбой индекса ... Есть идеи, почему мой coms l oop не работает?
В настоящее время я пытаюсь получить ИК-коды для своего HD180x optomoa проектор. Это превращается в действительно сложную проблему.
Мне просто нужно включить питание, и ничего больше.
У меня нет ИК-датчика для прямого считывания кодов, и для меня это вызов - попытаться обойтись без него.
Пока это невозможно. Я пробовал несколько разных подходов к получению ИК-кодов напрямую с пульта с помощью Raspberry Pi, но безуспешно. .
LIR C, который является только программным обеспечением 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.
Есть идеи?
I смог получить код для начала отправки, и теперь мне просто нужно узнать, как получить "ИК-коды" из файлов conf ...
Я так близко ... Мне просто нужно уметь чтобы сделать "список irsend" "" ">> /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*******"