Ответ 1
Да! Вы можете использовать свою малину Pi для сканирования iBeacons. Мы собрали ниже script, который делает это, вы также можете сделать это самостоятельно с помощью следующих шагов:
-
Запустите фоновый процесс, который выполняет сканирование bluetooth LE:
sudo hcitool lescan --duplicates &
При установке
--duplicates
сканирование не будет игнорировать несколько пакетов из одного и того же iBeacon. -
Запустите
hcidump
и подайте исходный вывод на script, который будет фильтровать пакеты iBeacon:sudo hcidump --raw
Фильтрация - сложная часть, исходный вывод из hcidump
не отформатирован хорошо и также показывает пакеты, которые не являются передачами iBeacon. Чтобы решить эту проблему, мы создали фильтр script, который читает в строке строки за строкой и отделяет необработанные пакеты от другого выхода (т.е. MAC-адреса и т.д.). Мы провели много исследований в Radius Networks на iBeacon bluetooth profile, которые мы использовали для идентификации пакетов iBeacon и отфильтровывали их из пакетов с других устройств.
Мы объединили все это в ibeacon_scan
script, который делает все, включая преобразование необработанных идентификаторов в удобочитаемую форму. Вы можете скачать здесь. Вскоре мы добавим это в iBeacon Development Kit, чтобы добавить возможности сканирования.
Здесь приведен пример вывода из script:
$ ./ibeacon_scan
UUID: 74278BDA-B644-4520-8F0C-720EAF059935 MAJOR: 0 MINOR: 73 POWER: -50
UUID: 2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 MAJOR: 1 MINOR: 6 POWER: -59
UUID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 MAJOR: 6 MINOR: 9 POWER: -55
Мы также включили параметр -b
для простого вывода, который легко разобрать на другие скрипты, вот пример:
$ ./ibeacon_scan -b
2F234454-CF6D-4A0F-ADF2-F4911BA9FFA6 1 6 -59
E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 6 9 -55
74278BDA-B644-4520-8F0C-720EAF059935 0 73 -50
Вы можете использовать эту опцию и передать вывод script на ваш script для запуска действий при обнаружении iBeacons с определенными идентификаторами.
EDIT: Мы переработали этот script, чтобы сделать его более отзывчивым и надежным и включили его в последнюю версию комплект разработчика. Обновление доступно для загрузки здесь.
EDIT2: Как указано @sai-ramachandran, вы можете увеличить этот script, чтобы захватить RSSI каждого пакета iBeacon в дополнение к POWER. Для этого добавьте следующие строки в script:
RSSI=`echo $packet | sed 's/^.\{132\}\(.\{2\}\).*$/\1/'`
RSSI=`echo "ibase=16; $RSSI" | bc`
RSSI=$[RSSI - 256]
и обязательно добавьте RSSI к выводу:
echo "UUID: $UUID MAJOR: $MAJOR MINOR: $MINOR POWER: $POWER RSSI: $RSSI"