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

Для начала нам необходимо установить в сервер устройство bluetooth. У меня в наличии оказался какой то старый usb модуль, в принципе подойдет любой и современнй Linux найдет для него драйвера.
Установить на сервере программное обеспечение. На моем ALTLinux необходимо было установить два пакета.
Устанавливаем:
Теперь попробуем просканировать диапазон на предмет нахождения телефонов с включенной функцией bluetooth.
В нашей базе MySQL создаем таблицу "scenarii"
В крон добавляем запуск скрипта каждую минуту:
и в файл добавляем
Теперь у нас система будет периодически сканировать bluetooth - диапазон на наличие устройств (по MAC-адресу) в радиусе действия и заносить в базу. Оттуда мы уже можем считывать значение и принимать решения в других скриптах "Умного дома".

Для начала нам необходимо установить в сервер устройство 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-адресу) в радиусе действия и заносить в базу. Оттуда мы уже можем считывать значение и принимать решения в других скриптах "Умного дома".
0 comments