Forums -> Глюкодром -> Есть вопрос к программерам по lircd
| Full Version

VxWorks
Есть такая задачка - надо организовать управление девайсом через веб-нитерфейс. На девайсе есть телнет и lircd. Это все.
lircd умеет слушать порты.

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

FiL
смотря что там управлять надо... Если то, что надо ты можешь сделать через телнет, то проще написать веб-интерфейс, который будет телнетиться и выполнять некие действия. И не заморачиваться с lircd. А если через телнет не катит, то нафик ты его упомянул? :)
VxWorks
Через телнет управлять не получается. А упомянул... сдуру наверное.
FiL
:)
Ну, тогда не знаю. Я с lirc-ем знаком исключительно по-наслышке. Даже ни разу не видел.
Set
Мне бы ваши проблемы... вроде проще не бывает... :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."
VxWorks
И как подключиться к этому сокету? Объясни для тупых, плиз.

Инфракрасного порта в девайсе, кстати, нет.
Set
Тогда у меня полные непонятки... :) если вэб-интерфейс, то на девайсе должен быть соответствующий сервер быть... и причём тут отсутствующий инфрапорт и лиркд тогда? Или нужно шелловские команды на девайс передавать посредством вэбстранички на удалённой машине?
VxWorks
ОК, попытаюсь объяснить попроще, насколько у меня получится :)

ДАНО:

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

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

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

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

ЗАДАЧА:

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

Set
Что-нибудь из этого там стоит?

irpty
irxevent
irrecord
irw
Set
http://www.lirc.org/html/technical.html
VxWorks
QUOTE (Set @ 20-03-2008, 20:55)
Что-нибудь из этого там стоит?

irpty
irxevent
irrecord
irw
Ничего из этого нет.
Set
Есть httpd - можно сваять вэбинтерфейс, где через cgi запускается прога и пишет нужную команду в сокет (/dev/lircd). Что и как писать провисано в доках и можно посмотреть в сорсах lircd. Вроде всё просто... :actu:
VxWorks
Что значит "пишет в сокет"? Открывает /dev/lircd как файл и пишет туда какие-то данные? Примерчик не подкинешь? :help:
Опять же, сорсов на данный конкретный lircd нет. Или они все одинаковые?
Set
Я думаю они все на одно лицо. :D:

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

# 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 не предназначен для работы со входными сокетами... Что скажешь?
yury_usa
VxWorks
а что в итоге из всего этого должно получится? У меня такое чувство, что все можно гораздо проще сделать :)
Brait
LIRC Documentation 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?
Set
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:
FiL
не, в /tmp/lircout - там аутпут. А нужен инпут. Инпут указывается через --device. Но он уже вроде как должен быть на момент запуска.
Вообще, что там есть в девайсах на предмет lirc'a?

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

Brait

QUOTE
BTW, соответствующий модуль скомпилирован, загружен? lsmod, modprobe?
М... --device=? выдает "default" и все.


Set

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


FiL

QUOTE
а irsend есть? Ведь специальный тул вроде как...
Ничего нет :(
Set
Там есть irexec и файл .lircrc (он вроде в /etc/lircrc или /home/... должен быть) ? Ибо если через него запускаются проги по нажатию кнопок, тогда сокеты нафиг не сдались. Если нет - значит есть демон, читающий из оутпута лирцд, соответственно и писать надо в оутпут.
Brait
VxWorks
IMHO, лучше найти инфо по программе, в которую LIRC передает команды, и вот с нею-то и общаться...