Определяем присутствие людей в "Умном доме" с помощью bluetooth

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





   Для начала нам необходимо установить в сервер устройство bluetooth. У меня в наличии оказался какой то старый usb модуль, в принципе подойдет любой и современнй Linux найдет для него драйвера.

   Установить на сервере программное обеспечение. На моем ALTLinux необходимо было установить два пакета.

   Устанавливаем:
apt get install bluez libbluez
   Добавляем в автозагрузку:
# chkconfig bluetoothd on 

Теперь попробуем просканировать диапазон на предмет нахождения телефонов с включенной функцией bluetooth.
# hcitool scan 
В результате должны увидеть что-то подобное:
# hcitool scan
Scanning ...
        00:21:AA:AA:C4:99       Nokia 5000d-2
        00:60:57:41:63:43       Nokia 3650
        00:1C:A4:50:61:E6       K610i


В нашей базе MySQL создаем таблицу "scenarii"

CREATE TABLE `scenarii` ( `name_scenarii` varchar(30) NOT NULL, `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `znachenie` varchar(2) DEFAULT NULL, `opisanie` varchar(300) DEFAULT NULL, `IP` varchar(20) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
Добавим название одного сценария в таблицу:

insert into scenarii (name_scenarii) VALUES ("andrey_doma");
Напишем небольшой незамысловатый скрипт для обнаружения
Напишем небольшой незамысловатый скрипт для обнаружения и занесения в базу значений:
#!/bin/bash

#set -x

#sony ericsson k610i
ser=`hcitool scan | grep "00:1C:A4:50:61:E6"`


if [ "$ser" != "" ]; then
    `mysql --user="name" -s -N --password="password" mydb -e "update scenarii set znachenie=1 where name_scenarii='andrey_doma'"`
elif [ "$ser" = "" ]; then
    `mysql --user="name" -s -N --password="password" mydb -e "update scenarii set znachenie=0 where name_scenarii='andrey_doma'"`
else
      echo "Что то непонятное происходит"
fi

В крон добавляем запуск скрипта каждую минуту:
touch /etc/cron.d/bluetooth  
chmod 644 /etc/cron.d/bluetooth
chown root:root /etc/cron.d/bluetooth


и в файл добавляем
# минута час день месяц день_недели от_какого_пользователя команда
*      *       *       *       *   root  /opt/scripts/bluetooth.sh


Теперь у нас система будет периодически сканировать bluetooth - диапазон на наличие устройств (по MAC-адресу) в радиусе действия и заносить в базу. Оттуда мы уже можем считывать значение и принимать решения в других скриптах "Умного дома".