Printable Version of Topic
Click here to view this topic in its original format
Forums > Глюкодром > Есть вопрос к программерам по lircd


Posted by: VxWorks on 20-03-2008, 03:00
Есть такая задачка - надо организовать управление девайсом через веб-нитерфейс. На девайсе есть телнет и lircd. Это все.
lircd умеет слушать порты.

Вопросы:
1. Возможно ли управление lircd по tcp или udp портам? То есть, как понять, что ему надо подсунуть, чтобы он сделал какое-то действие?
2. Если 1 не работает, то как написать программу, которая будет генерировать (симулировать) события для lircd?


Posted by: FiL on 20-03-2008, 04:28
смотря что там управлять надо... Если то, что надо ты можешь сделать через телнет, то проще написать веб-интерфейс, который будет телнетиться и выполнять некие действия. И не заморачиваться с lircd. А если через телнет не катит, то нафик ты его упомянул? :)

Posted by: VxWorks on 20-03-2008, 11:24
Через телнет управлять не получается. А упомянул... сдуру наверное.

Posted by: FiL on 20-03-2008, 20:12
:)
Ну, тогда не знаю. Я с lirc-ем знаком исключительно по-наслышке. Даже ни разу не видел.

Posted by: Set on 20-03-2008, 21:55
Мне бы ваши проблемы... вроде проще не бывает... :drag:

"The main task of lircd is to decode the infrared signals and provide an uniform interface for client applications. Clients can connect to lircd through a Unix domain socket which is located in /dev/lircd. Using this socket they will get the infrared codes received by lircd and they can send commands to lircd."

Posted by: VxWorks on 20-03-2008, 22:16
И как подключиться к этому сокету? Объясни для тупых, плиз.

Инфракрасного порта в девайсе, кстати, нет.

Posted by: Set on 20-03-2008, 22:43
Тогда у меня полные непонятки... :) если вэб-интерфейс, то на девайсе должен быть соответствующий сервер быть... и причём тут отсутствующий инфрапорт и лиркд тогда? Или нужно шелловские команды на девайс передавать посредством вэбстранички на удалённой машине?

Posted by: VxWorks on 20-03-2008, 23:00
ОК, попытаюсь объяснить попроще, насколько у меня получится :)

ДАНО:

Есть сетевой девайс. На котором бегает Familiar Linux с жутко кастрированным Busybox. По какому принципу его кастрировали, я не знаю, бо, скажем, netcat есть, а trace нету.
Из коммуникаций есть телнет и httpd. Можно прикрутить ftpd и smb если очень надо.

Сорсов к софту, бегающему на девайсе (кроме телнета и веб-сервака) нету и ломать его нельзя (ну вот нельзя и все, засудят).
Софт управляется нажатиями кнопок на морде девайса, а также двумя енкодерами (крутящаяся ручка типа реостата, как регуляторы громкости на стереосистемах).

Управлять девайсом через телнет нельзя. В смысле, можно поиграться с линуксом на нем, но функциональность можно только убить, переключать функции нельзя. Ну и шатдаун ему сделать можно, или рестарт.

Встроенный lircd имеет может симулировать нажатие кнопок и вращение ручек (при работе с пультом, которого в данной конфигурации девайса нет физически, но весь софт для него есть).

ЗАДАЧА:

Написать софт, который будет управлять данным девайсом через веб-интерфейс. Или виндовую программу, которая будет контролировать эту фиговину. Если требуется, можно закинуть на девайс собственноручно написанный софт, для этого все есть.


Posted by: Set on 20-03-2008, 23:55
Что-нибудь из этого там стоит?

irpty
irxevent
irrecord
irw

Posted by: Set on 21-03-2008, 00:12
http://www.lirc.org/html/technical.html (http://www.lirc.org/html/technical.html

Posted by: VxWorks on 21-03-2008, 00:32
QUOTE (Set @ 20-03-2008, 20:55):
Что-нибудь из этого там стоит?

irpty
irxevent
irrecord
irw
Ничего из этого нет.

Posted by: Set on 21-03-2008, 01:10
Есть httpd - можно сваять вэбинтерфейс, где через cgi запускается прога и пишет нужную команду в сокет (/dev/lircd). Что и как писать провисано в доках и можно посмотреть в сорсах lircd. Вроде всё просто... :actu:

Posted by: VxWorks on 21-03-2008, 01:16
Что значит "пишет в сокет"? Открывает /dev/lircd как файл и пишет туда какие-то данные? Примерчик не подкинешь? :help:
Опять же, сорсов на данный конкретный lircd нет. Или они все одинаковые?

Posted by: Set on 21-03-2008, 01:37
Я думаю они все на одно лицо. :D:

Можно попробовать через echo некая-таинственная-строка >> /dev/lircd (или куда оно там пишет... в конфигах lircd это прописано)

Posted by: VxWorks on 21-03-2008, 02:37
Вот так?

# lircd --device=/dev/lircd --output=/tmp/lircout --logfile=/tmp/lirclog
# echo 0x02FD >> /dev/lircd
-sh: cannot create /dev/lircd: No such device


В логах ничего нет. Просто /dev/lirc (стандарт для входного потока) тоже нет, но есть /dev/lircd, который вроде как стандарт для выходного потока.
У меня есть такое нехорошее ощущение, что данный конкретный lircd не предназначен для работы со входными сокетами... Что скажешь?

Posted by: yury_usa on 21-03-2008, 03:38
VxWorks
а что в итоге из всего этого должно получится? У меня такое чувство, что все можно гораздо проще сделать :)

Posted by: Brait on 21-03-2008, 03:56
LIRC Documentation (http://www.lirc.org/html/install.html#installing says:
QUOTE:
But the device node won't be visible as /dev/lirc, but might be located in a different location like e.g. /dev/lirc/0. Please be aware of this fact when starting programs that access the device node like mode2 or lircd. You will have to use the --device command line option of these programs to point them to the correct location.

BTW, соответствующий модуль скомпилирован, загружен? lsmod, modprobe?

Posted by: Set on 21-03-2008, 04:05
QUOTE (VxWorks @ 21-03-2008, 01:37):
Вот так?

# lircd --device=/dev/lircd --output=/tmp/lircout --logfile=/tmp/lirclog
# echo 0x02FD >> /dev/lircd
-sh: cannot create /dev/lircd: No such device


В логах ничего нет. Просто /dev/lirc (стандарт для входного потока) тоже нет, но есть /dev/lircd, который вроде как стандарт для выходного потока.
У меня есть такое нехорошее ощущение, что данный конкретный lircd не предназначен для работы со входными сокетами... Что скажешь?
Вот же
QUOTE:
--output=/tmp/lircout

В /tmp/lircout надо :actu:

Posted by: FiL on 21-03-2008, 04:56
не, в /tmp/lircout - там аутпут. А нужен инпут. Инпут указывается через --device. Но он уже вроде как должен быть на момент запуска.
Вообще, что там есть в девайсах на предмет lirc'a?

а irsend есть? Ведь специальный тул вроде как...

Posted by: VxWorks on 21-03-2008, 12:19
QUOTE (yury_usa @ 21-03-2008, 00:38):
VxWorks
а что в итоге из всего этого должно получится? У меня такое чувство, что все можно гораздо проще сделать :)
Управление девайсом дистанционно, через сетку.

Brait

QUOTE:
В /tmp/lircout надо :actu:
Почему? Я так понимаю, что input socket это тот, который принимает команды для lirc, а output - через который lirc отправляет команды систем, так?


FiL

QUOTE:
а irsend есть? Ведь специальный тул вроде как...
Ничего нет :(

Posted by: Set on 21-03-2008, 18:10
Там есть irexec и файл .lircrc (он вроде в /etc/lircrc или /home/... должен быть) ? Ибо если через него запускаются проги по нажатию кнопок, тогда сокеты нафиг не сдались. Если нет - значит есть демон, читающий из оутпута лирцд, соответственно и писать надо в оутпут.

Posted by: Brait on 24-03-2008, 10:26
VxWorks
IMHO, лучше найти инфо по программе, в которую LIRC передает команды, и вот с нею-то и общаться...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)