Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.09.2012, 23:25   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Дистанционное управление IR пультом в OpenWrt

Название: IRemout.jpg
Просмотров: 4459

Размер: 38.7 Кб

В OpenWrt за работу инфракрасного канала связи отвечает программа LIRC
Устанавливаем пакеты:
opkg install kmod-usb-hid
opkg install udev
opkg install lirc
opkg install lircdaemonadd lirctools


При нажатии кнопки на пульте, посылается команда по ИК каналу, соответствующая нажатой кнопке. Приёмник подключенный к usb-порту роутера принимает эту команду и посылает сигнал в LIRC с кодом этой команды. Демон LIRC сравнивает код команды с теми кодами, которые он знает, и выполняет действие, которое сопоставлено этому коду.

Подключим приёмник к usb-порту и ищем его в папке ls /dev

Проверим, передаются ли команды посылаемые с пульта систему. Для этого запустим следующую команду и нажимаем кнопки на пульте:
cat /dev/input/event0 | hexdump

С помощью программы irrecord можно для каждой кнопки пульта задать своё имя:
irrecord -d /dev/input/event0 /etc/lircd.conf --disable-namespace

Также для диагностики есть программа mode2.

Запускаем демона lircd. Файл /etc/lircd.conf является конфигурационным файлом демона lircd. В этом файле сопоставляется название кнопки и ее код, который принимается по ИК каналу. Этот файл конфигурации можно создать самому, для этого нужно считывать значения кнопок и задавать им имена, или взять готовый lircd.conf
Выглядит он следующим образом:

Код:
begin remote
 name ChapletSystem
 bits 32
 begin codes
 POWER 0x40004 0x80010074
 RADIO 0x40004 0x8001001e
 TV 0x40004 0x80010014
 DVD 0x40004 0x80010031
 MUSIC 0x40004 0x80010032
 PHOTO 0x40004 0x80010017
 VIDEO 0x40004 0x80010012
 DVD_MENU 0x40004 0x8001002f
 MUTE 0x40004 0x80010042
 BACK 0x40004 0x8001000e
 GUIDE 0x40004 0x8001003b
 VOLUME_UP 0x40004 0x80010073
 VOLUME_DOWN 0x40004 0x80010072
 CHANNEL_UP 0x40004 0x80010068
 CHANNEL_DOWN 0x40004 0x8001006d
 ARROW_UP 0x40004 0x80010067
 ARROW_DOWN 0x40004 0x8001006c
 ARROW_LEFT 0x40004 0x80010069
 ARROW_RIGHT 0x40004 0x8001006a
 ENTER 0x40004 0x8001001c
 RECORD 0x40004 0x8001001d 0x40004 0x80010013
 REPEAT 0x40004 0x8001002a 0x40004 0x80010013
 PLAY 0x40004 0x8001002a 0x40004 0x80010019
 PAUSE 0x40004 0x8001001d 0x40004 0x80010019
 STOP 0x40004 0x8001001f
 REWIND 0x40004 0x8001002a 0x40004 0x80010020
 FORWARD 0x40004 0x8001002a 0x40004 0x80010021
 PREV_TRACK 0x40004 0x8001001d 0x40004 0x80010030
 NEXT_TRACK 0x40004 0x8001001d 0x40004 0x80010021
 NUMPAD_1 0x40004 0x80010002
 NUMPAD_2 0x40004 0x80010003
 NUMPAD_3 0x40004 0x80010004
 NUMPAD_4 0x40004 0x80010005
 NUMPAD_5 0x40004 0x80010006
 NUMPAD_6 0x40004 0x80010007
 NUMPAD_7 0x40004 0x80010008
 NUMPAD_8 0x40004 0x80010009
 NUMPAD_9 0x40004 0x8001000a
 NUMPAD_0 0x40004 0x8001000b
 end codes
 end remote
Посмотреть список всек кнопок
irrecord --list-namespace

Запускаем демона lircd:
mkdir /var/run/lirc
lircd -n --driver=default --device=/dev/input/event0 --pidfile /var/run/lirc/lircd.pid

В другом окне запускаем клиент irw. Клиент irw считывает данные lircd и выводит результат на экран. После запуска нажимаем кнопки на пульте. На экране должны видеть название кнопок и код:
irw
Цитата:
0000000000040004 00 ENTER ChapletSystem
0000000000040004 00 VOLUME_UP ChapletSystem
0000000000040004 00 VOLUME_DOWN ChapletSystem
0000000000040004 00 ARROW_RIGHT ChapletSystem
0000000000040004 00 ARROW_UP ChapletSystem
0000000000040004 00 ARROW_DOWN ChapletSystem
0000000000040004 00 ARROW_LEFT ChapletSystem
Чтобы к кнопке привязать требуемое действие, имеется файл lircrc
Его формат рассмотрим на примере:
Цитата:
begin
prog = irexec
button = ENTER
config = echo "It is button 'ENTER'"
end

begin
prog = irexec
button = VOLUME_UP
config = /home/my_script.sh
end
При нажатии кнопки ENTER на пульте, выполнить echo "It is button 'ENTER'" или при нажатии кнопки на пульте VOLUME_UP, выполнить скрипт /home/my_script.sh. Irexec - это демон, который осуществляет запуск программ по нажатию кнопки на пульте.

Что бы понять его работу , запустим демона lircd в фоновом режиме, а при запуске демона irexec укажем ему файл lircrc:
lircd --driver=default --device=/dev/input/event0 —pidfile
irexec /home/lircrc
sh: /home/my_script.sh: not found
It is button 'ENTER'
It is button 'ENTER'
sh: /home/my_script.sh: not found /var/run/lirc/lircd.pid
Admin вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:09. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика