Вы читаете журнал [info]j_sheridan

J. Sheridan, commander of the Babylon 5 station - Bluetooth и автоавэй
Добро пожаловать на борт...

J. Sheridan, commander of the Babylon 5 station
Дата: 2007-11-14 22:46
Заголовок: Bluetooth и автоавэй
Безопасность: Public
Теги:bash, bluetooth, btradar, lcsc, Автоматизация, Программирование
Сидел я сегодня и думаю, а чегобы мне не попользоваться блутузом на телефоне не совсем по назначению... Один фиг работает постоянно (лениво включать/выключать), пусть думаю, будет польза.
Вобщем сел я наваял сервисок, который время от времени пингает мобилу, и выполняет всякие действия при наличии/отсутствии пинга. Например выставить away в аське или запустить хранитель...

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

Для начала что нам понадобится.
1. Собственно bluetooth свисток.
2. Что-ть типа телефона с включенным блутузом.
Это я думаю понятно :)
3. Как настроить блутуз - читаем тут
Собственно из всего этого надо чтобы работало l2ping из пакета net-wireless/bluez-utils

Логика работы: Запускается бесконечный цикл, в котором l2ping пинает девайс с маком $mac с интервалом между попытками пинга в $interval.
mac можно узнать, запустив hcitool scan
mac и interval задаются в /etc/btradar/btradar.conf Также в этом файле задается пользователь, под именем которого запускается этот цикл. Я эту переменную передаю еще и в dcop
При обнаружении устройства (и при отсутствии файла $flagfile) создается файл $flagfile и запускается скрипт /etc/btradar/device_found.sh. Соответственно, при отсутствии пинга и наличии файла $flagfile запускается скрипт /etc/btradar/device_not_found.sh и удаляется $flagfile. Все очень просто.
В зависимостях init скрипта /etc/init.d/btradar есть init скрипт /etc/init.d/bluetooth, тоесть при остановке /etc/init.d/bluetooth остановится и наш скрипт. А если все сделано правильно, то остановка /etc/init.d/bluetooth происходит при вытаскивании свистка из usb.
Все очень просто. Этим мне линух и нравится, что можно добиться неплохого результата, приложив небольшие усилия.
Насчет device_(not_)?found.sh
тем, кто пользует КДЕ - повезло. Есть у нее(только у нее?) замечательный сервис dcop, предназначеный для управления софтом из консоли. Например `dcop amarok playlist getTotalTrackCount` вернет количество треков в текущем плейлисте.
Узнать комманды несложно. Сначала запускаем dcop без параметров - вывалится список доступного. Выбираем чтонибудь нужное, добавляем к dcop (dcop amarok), смотрим следующий список и так далее. Я думаю - разберетесь.
Сервис находится в репозитории Linux-community Scripts Collection, здесь написано что да как :)

Вот вроде бы и все...
Жду комменттариев :)

upd: правила для отключения монитора и лочки станции
upd: правила для mute звука
Оставить комментарий | 21 Комментарий | В избранное | Поделиться | Ссылка



Глеб
Персона: [info]glebotr
Дата: 2007-11-14 20:14 none (UTC)
Заголовок: ?
Телефон, я так понимаю, должен постоянно быть discoverable? Если да, то не есть гут. А вообще удобно, особенно на работе.
Ответить | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-11-14 20:45 none (UTC)
Заголовок: Re: ?
Да, конечно...
Но я думаю так, что огромное количество людей, не разбирающихся что это такое, постоянно ходят с discoverable трубами. И ничего с ними не происходит.
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-11-15 11:13 none (UTC)
Заголовок: Re: ?
Кстати, только что проверил - абсолютно необязательно ему быть discoverable, так как используется не hcitool scan, а l2ping на заранее известный мак.
Ошибся потому, что в первой версии был всетаки hcitool scan
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-12-25 07:27 none (UTC)
Заголовок: Re: ?
Как я говорил, не обязательно тел должен быть discoverable, но bluetooth компа должен быть сопряжён с телефоном, тобиш комп должен подключаться к телефону без вопросов.Ку!
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Эргил Осин
Персона: [info]ergil
Дата: 2007-11-15 00:36 none (UTC)
Заголовок: (без темы)
курить что такое dbus, благо что от dcop планируют отказаться.
а так заметка хорошая, хоть мне и не нужная.
а! еще курить LSB что бы узнать как скрипты должны зависить друг от друга или поставить дистриб в котором зависимости стартовых скриптов от других есть Gentoo или Suse.
Ответить | Ветвь дискуссии | Ссылка



Обсоси Мои Яйца
Персона: [info]unbe
Дата: 2007-11-16 11:52 none (UTC)
Заголовок: (без темы)
Охуенная идея!
Вопрос: батарейка в мобилке не сильно быстрее садится?
Ответить | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-11-16 11:53 none (UTC)
Заголовок: (без темы)
а хз...
Не так давно у меня телефон, чтобы сказать тебе эту статистику :(
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-12-25 07:24 none (UTC)
Заголовок: (без темы)
Около полутора суток батарейка держится
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Human being
Персона: [info]sanmai
Дата: 2007-12-03 06:49 none (UTC)
Заголовок: (без темы)
pam_bluetooth есть же
Ответить | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-12-03 06:53 none (UTC)
Заголовок: (без темы)
эээ... ммм....
Извиняюсь, можно подробнее, что имелось ввиду? Насколько я понимаю, pam это из разряда безопасности... И какое оно имеет отношение к btradar я не догоняю...
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Human being
Персона: [info]sanmai
Дата: 2007-12-03 07:22 none (UTC)
Заголовок: (без темы)
1) http://pam.0xdef.net/

2) Касаемо вопроса жирным, в начало скрипта вставляешь:
depend() {
        need bluetooth
}
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-12-03 07:43 none (UTC)
Заголовок: (без темы)
http://pam.0xdef.net/
Не совсем то, хотя согласен, что я изобрел велосипед.

Касаемо вопроса жирным...
В моем скрипте такое есть. И при старте btradar автоматом поднимается bluetooth.
Тут дело в том, что bluetooth поднимает udev автоматом при подключении "свистка" в usb. Но не поднимается вслед блутузу btradar, тоесть надо несколько наоборот чтоли...
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Human being
Персона: [info]sanmai
Дата: 2007-12-03 08:04 none (UTC)
Заголовок: (без темы)
cd /etc/udev/rules.d/
grep bluetooth *

и будет тебе просветление :)
только те файлы что есть не меняй, создай свой какой-нибудь 45-my.rules и туда нужную строчку добавь

да и заходи к нам на огонек http://forums.gentoo.org/viewforum-f-43.html
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2007-12-03 08:17 none (UTC)
Заголовок: (без темы)
и будет тебе просветление
Спасибо за идею, буду думать...

да и заходи к нам на огонек
Есть я там, правда признаться, давно не заглядывал...
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Human being: Пингвины
Персона: [info]sanmai
Дата: 2007-12-03 08:06 none (UTC)
Заголовок: (без темы)
Кейворды:Пингвины
сделай так и у тебя будет первым запускаться btradar:
sed -i "s/init.d\/bluetooth/init.d\/btradar/" /lib/udev/bluetooth.sh

но правильней будет сделать еще один скрипт и прописать его в *.rules


Edited at 2007-12-03 08:09 (UTC)
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Maxim Puzyrkov
Персона: [info]_agronom_
Дата: 2008-01-16 14:24 none (UTC)
Заголовок: (без темы)
Установил на ноут вашу "примочку" - удобная штуковина, особенно тем что можно прописывать списки действий.
Спасибо за Ваши старания.

Да, небольшое замечание для случаев если вываливается сообщение: ERROR: Multiple available KDE sessions!.
В этом случае надо немножко подправить скрипты:
1. в консоли выполнить команду:
dcop --list-sessions --user maxim
получим что-то вроде этого:
Active sessions for user /home/maxim :
.DCOPserver_localhost__0
.DCOPserver_localhost__93
2. Из списка выбираем подходящее (методом эксперимента определил что у меня работает 93 сессия)
3. Првим скрипт например так:
dcop --session .DCOPserver_localhost__93 --user $user amarok player play

можно всместо этого еще просто прописать --all-sessions , но в этом случае реакция будет немного дольше после обнаружения или потери девайса, поскольку DCOP подвисает на несколько секунд во время обращения например к моей нулевой сессии.
Ответить | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2008-01-17 05:43 none (UTC)
Заголовок: (без темы)
Спасибо за поправку. Учту на будующее :)
Хотя... Тут скоро уже кде4 в массы пойдет, а там, насколько я знаю от dcop отказались - переделывать придется :(
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Maxim Puzyrkov
Персона: [info]_agronom_
Дата: 2008-01-17 08:52 none (UTC)
Заголовок: (без темы)
ага, придется видимо.

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

Я теперь связку имя+mac проверяю с помощью hcitool. Оно у меня дисплей не включает и КПКшка даже в дежурке имя своё отдает. Причем он у меня не discoverable даже.

Если исправления надо - скину, но думаю уже не актуально ?
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



J. Sheridan, commander of the Babylon 5 station
Персона: [info]j_sheridan
Дата: 2008-01-17 08:54 none (UTC)
Заголовок: (без темы)
Думаю, не актуально, но имхо вполне уместно будет разместить код в комментарии, раз уж зашел разговор :) Вдруг кому пригодится :)
Заранее спасибо Благодарю
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Maxim Puzyrkov
Персона: [info]_agronom_
Дата: 2008-01-17 10:42 none (UTC)
Заголовок: Вот собственно.
только исправления:
в файле btradarloop
--...--
if 'hcitool name $mac | grep -q $name'
--...--
в файле btradar.conf нужно добавить еще стрку:
--...--
name=здесь указывается имя девайса.
Все спрочие поля остаются прежние.
Имя устройства. как его видит рабочая станция можно посмотреть коммандой:
hcitool name
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Maxim Puzyrkov
Персона: [info]_agronom_
Дата: 2008-01-17 10:44 none (UTC)
Заголовок: Re: Вот собственно. update ))
Имя устройства. как его видит рабочая станция можно посмотреть коммандой:
hcitool name [mac]
Ответить | Уровень выше | Ветвь дискуссии | Ссылка



Просмотр
Дневник
Ссылки
Май 2012