Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  немного о безопасности
  VPN (PoPToP)
  PortSentry
  sysctl
  vtund
  ipfwcount
  FreeBSD & DSA
  mpd – легко и просто!
  mpd + freeradius + mysql
  Бронированный FreeBSD
  sshit
  DSL-G804V и FreeBSD 6.2
  portaudit
  OpenVPN
  Bluetooth proximity monitor
  ESET NOD32
  GEOM-ELI
  stunnel для pop3,smtp
  NOD32 mirror
  mpd5 + ipfw-nat
  Openvpn 2 офиса
  Hotspot
  OpenVPN+авторизация
  termlog
  mpd5 + сжатие и шифрование
  ipsec_vpnc
  TOR Сервер
  Snort на FreeBSD
  Arpwatch
  Установка и настройка OpenVPN
  NOD32_mirror_v2
  Fail2ban
  IPSec
  Перенос OpenVPN сервера
  Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP
  nod32 mirror script
  MAC + apache
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Security —> Bluetooth proximity monitor

FreeBSD bluetooth proximity - следим за удаленностью хозяина через bluetooth.

Автор: azu.


Заявление об обязательствах.
Применение представленного материала и скриптов добровольное, на свой страх и риск. Ответственность за последствия применения автор не несет.

Тема, как мне показалось, может быть успешно применена при организации десктопа, построения элементов похожих на "умный дом", связанных с присутствием хозяина поблизости от рабочего места.
Актуальность? Сегодня тяжело найти человека с телефоном без поддержки bluetooth. Многие используют телефон в сопряжении с PC (для синхронизации/доступа в Internet) именно через bluetooth. Среди них находятся те, кто ипользует FreeBSD =). Так к чему отказываться от возможной вкусности: пусть железки приносят удовольствие.

Недавно попалась howto для gentoo для блокировки/разблокировки экрана, установки статуса в kopete, управления amarok  и пр., в зависимости от наличия поблизости bluetooth устройства хозяина. Проявил интерес и погуглил на ту же тему для FreeBSD. Нашел вариант скрипта обработки событий близости bluetooth:

http://orel.ru/~bel/btproximity

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

Привожу черновой доработанный вариант, показавшийся мне достаточно работоспособным для миниобзора.

Отправная точка:
1. USB bluetooth устройство + труба с bluetooth + FreeBSD 7. Полагаю будет работать и с более раними версиями, но стоит проверить как ведет себя /etc/rc.d/bluetooth при подключении устройства: как я понял, стек ubt устройства в моем случае создавался атоматически, что дает некоторые преимущества в ситуации с произвольно включаемым/выключаемым bt-свистком
Подразумевается, что bluetooth настроен (см. handbook) до уровня корректного выполнения команды
l2ping -a <node_name>
разумеется с получением успешного результата =).
2. Работа направлена на KDE, но принципиальных ограничений на переделку под другой набор DE/WM/no-X нет: переделать визуальное оповещение пользователя о состоянии скрипта, добавить по вкусу соответствующие действия на состояния In/Out обрабатываемой зоны bluetooth.

Решения, принятые по доработке первоначального варианта:
1. В качестве действия установлена блокировка ввода (далее действие).
2. Стартовать и останавливать процесс будем по требованию пользователя (например из меню или кликом с рабочего стола). Таким образом для старта и остановки используем один скрипт-стартер, основная работа будет во втором скрипте.
3. В случае невозможности установить связь делаем несколько попыток, потом вызываем действие.
4. В случае отсутствия устройства на борту предупреждаем, но процесс стартуем: действие произведется после нескольктх неудачных попыток установить соединение с телефоном соотв. п3. После подключения устройства при работающем скрипте, начинаются попытки установить связь и оценить уровень сигнала (момент включения устройства в моем случае поддержан автоматическим созданием стека устройства bluetooth. Проверьте для своей версии ОС).
5. В случае достижения критической минимальной отметки сигнала выполняем действие.
6. При останове подчищаем оставшеейся соединение в стартовом скрипте.
7. Размещение: стартер в ~/bin/. Лог, pid  и основной рабочий скрипт в ~/.btproximity/.

И еще... после выключения телефона, пока он находился в рассматриваемой зоне связи, процесс "получения" сигнала происходит еще секунд 10... все это время значение RSSI находится в последнем принятом состоянии, как я понял...

Предупреждение: практика написания на шелл у меня мягко говоря не большая, в обморок не падать =)

tgz с файликами прилагается.
файл скачан размер размещён примечание
bt_proximity.tgz
1229 2kb 2007-11-23 Скрипты монитора близости bluetooth устройства

Примечание: структура архива
./-
  |-bin/bt_proximity_starter
  |-.btproximity/bt_proximity.sh



Несколько пояснений:

1. Извлеч в архив ~/ , проверить/изменить владельца, проверить/установть исполняемость
2. В ~/bin/bt_proximity_starter переменная DEVNAME - название телефона.

#hccontrol -n ubt0hci Inquiry

Полученный BD_ADDR прописываем в /etc/bluetooth/hosts, как в этом файле и указано, называем этот BD_ADDR звучным именем телефона (у меня xenium).

Проверить усвоилось ли имя =):

#l2ping -a xenium

3. Последняя задача - старт скрипта ~/bin/bt_proximity_starter доступным способом.
Например можно создать ярлык на рабочем столе:

%cat ~/Desktop/BT-Proximity.desktop 
[Desktop Entry]
Comment=
Comment[ru]=
Exec=ksystraycmd /home/azu/bin/bt_proximity_starter > /dev/null &
GenericName=
GenericName[ru]=
Icon=password
MimeType=
Name=BT-Proximity
Path=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=none
X-KDE-SubstituteUID=false
X-KDE-Username=
%

Повторный старт скрипта останавливает процесс. Сделал для удобства кликанья по ярлыку.

4. При желании добавить действия на уход/приод хозяина - дополнять ~/.btproximity/btproximity.sh: функции device_out и device_in
5. Минимально допустимый уровень сигнала, после которого сработает действие -
~/.btproximity/btproximity.sh переменная MIN_RSSI.



размещено: 2007-11-23,
последнее обновление: 2007-11-26,
автор: azu

оценить статью:

aldebober, 2007-11-23 в 18:08:40

В процессе мониторинга наличия нужного человека в офисе было выявлено ухудшение связи у данного лица по телефону через бт гарнитуру. Рекомендуется уменьшить размер пакета для l2ping.
зы. Было давно (FreeBSD 5.0) и использовалось для рисования графиков с помощью ррд (имеется много замечательных прикладных задач, решаемых через бт)

azu, 2007-11-23 в 18:55:03

Поясните, к чему размер пакета l2ping упоминается: для определения мощности сигнала используется hccontrol. Определяется не просто наличие в зоне покрытия, а "на сколько далеко". l2ping тут обозначен как способ установить готовность для применения скрипта.

aldebober, 2007-11-23 в 19:01:28

Извиняюсь, не разглядел.
Посчитал фразу "Подразумевается, что bluetooth настроен (см. handbook) до уровня корректного выполнения команды
l2ping -a <node_name>" призывом к действию.
А определить мощность также можно и пынгом по l2ping, время ответа хорошо коррелирует с сигналом источника, собственно что и было реализовано когда то

azu, 2007-11-23 в 19:44:04

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

glitch, 2007-11-24 в 22:53:06

В обновленном bt-стеке просто
hccontrol Inquiry # не надо ноду указывать

glitch, 2007-11-24 в 23:02:55

В обновленном bt-стеке просто
hccontrol Inquiry # не надо ноду указывать


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 22 чел.
За последние 30 мин было: 93 человек
За сегодня было
15048 показов,
1018 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0364 секунд
Из них PHP: 22%; SQL: 78%; Число SQL-запросов: 78 шт.
Исходный размер: 103112; Сжатая: 19601