Мини ПК Raspberry Pi 3 вышел совсем недавно, и через совсем короткое время после появления системы на рынке на ее основе стали создавать интереснейшие проекты. Один из них, весьма специфичный — это превращение «малинки» в Eddystone URL beacon.
Eddystone — это собственный открытый формат маяков от Google (спецификация здесь), причем эта технология совместима и с Android OS, и с iOS. Для того, чтобы это работало, нужно держать Bluetooth LE постоянно включенным на смартфоне — это, пожалуй, единственное условие. Все, что требуется для превращения RPI 3 в Eddystone URL beacon — сам мини-ПК, источник питания для него и SD карта. Остальное — под катом.
Так вот, еще немного об Eddystone. Его плюсом является возможность отправки трех пакетов вместо одного. Это UID, URL, телеметрия.
- Eddystone-UID. Это тот же идентификатор — аналог iBeacon (UUID, major, minor). Состоит из 2-х частей: Namespace ID (10 байт), Instance ID (6 байт).
- Eddystone-URL.Теперь маяки транслируют URL до 18 байт. Проблему длинных урлов нам помогут решить URL shorteners. Например, сервис от того же Google goo.gl. Из такого адреса touchin.ru/portfolio/squawk можно получить короткий вариант goo.gl/PidTf3. Это главное нововведение, немного позже объясню почему.
- Eddystone-TLM (Telemetry). Доступны такие данные по маяку:
- уровень заряда
- количество пакетов, отправленных с момента подключения к источнику питания
- время активности маяка с момента подключения к источнику питания
- температура
Телефон, который получает эти пакеты, может либо предупредить о получении информации определенного типа, или выполнить какое-то действие.
Настройка «малинки»
1. Скачиваем Raspbian;
2. Устанавливаем образ;
3. Ищем IP «малинки». Сделать это можно при помощи «the Raspberry Pi Finder» или же nmap.
$ sudo nmap -sP 192.168.2.0/24
или
$ arp -a | grep «b8:27»
4. Подключаемся к Raspberry:
$ ssh pi@<the_ip_of_your_pi>
5. Ищем информацию по команде hciconfig
$hciconfig -h
6. Включаем Bluetooth девайса
pi@raspberrypi:~ $ sudo hciconfig hci0 up
7. Устанавливаем режим «advertise and not-connectable»
pi@raspberrypi:~ $ sudo hciconfig hci0 leadv 3
8. Вводим данные для Beacon
pi@raspberrypi:~ $ sudo hcitool -i hci0 cmd 0x08 0x0008 17 02 01 06 03 03 aa fe 0f 16 aa fe 10 00 02 77 65 62 67 61 7a 65 72 08 00 00 00 00 00 00 00 00
Вещаем:
Option | Description |
---|---|
0x08 | #OGF = Operation Group Field = Bluetooth Command Group = 0x08 |
0x0008 | #OCF = Operation Command Field = HCI_LE_Set_Advertising_Data = 0x0008 |
17 | Length. The hexadecimal 17 converts to 23 decimal which is the number of bytes that follow |
02 | Length |
01 | Flags data type value |
06 | Flags data |
03 | Length |
03 | Complete list of 16-bit Service UUIDs data type value |
aa | 16-bit Eddystone UUID |
fe | 16-bit Eddystone UUID |
0f | Length. The hexadecimal 0f converts to 15 decimal which is the number of bytes that follow |
16 | Service Data data type value |
aa | 16-bit Eddystone UUID |
fe | 16-bit Eddystone UUID |
10 | Frame Type = URL |
00 | TX Power (this should be calibrated) |
02 | URL Scheme (http:// = 0x02) |
77 | ‘w’ in hexadecimal |
65 | ‘e’ in hexadecimal |
62 | ‘b’ in hexadecimal |
67 | ‘g’ in hexadecimal |
61 | ‘a’ in hexadecimal |
7a | ‘z’ in hexadecimal |
65 | ‘e’ in hexadecimal |
72 | ‘r’ in hexadecimal |
08 | .org (.org = 0x08) |
00 | |
00 | |
00 | |
00 | |
00 | |
00 | |
00 | |
00 |
Пример выше позволяет отправлять адрес блога автора идеи по Eddystone и «малинке». Если нужно отправлять свой URL, меняем его здесь.
Для обнаружения Raspberry Pi beacon с iPhone используем следующее видеоруководство:
Android должен сделать все автоматически при условии наличия ОС Android 4.3.2 или более новой версии, включенным bluetooth, геологацией и разрешением определять местоположение для Chrome. Можно использовать и веб-приложение для того, чтобы все это заработало сразу и без проблем.
Страничка автора проекта.
Комментарии (12)
rstepanov
30.03.2016 14:09А что, есть в природе настоящие живые люди, которые всегда держат на телефоне включенный Bluetooth?
Arezus
30.03.2016 14:17+1Я и многие другие его не выключают. Есть много процессов требующих этого, но как самый простой — любые умные часы.
rstepanov
30.03.2016 14:24Ради интереса запустил в офисе поиск устройств. В радиусе примерно 10 метров — человек двадцать (в т.ч. по вертикали). Ничего не нашел...
Arezus
30.03.2016 15:18Ну, у меня в радиусе пяти метров четыре устройства, трое человек с пеблами и БТ-колонка, еще датчик уровня на БТ, но он не детектится. Предполагаю, что в наш век люди могут просто не бродкастить доступность.
Black_Shadow
30.03.2016 14:50Я. У меня часы умные на Android Wear. Влияние на скорость разряда батареи я не заметил.
RuddyRudeman
30.03.2016 17:02У меня только наушники, используемые не слишком часто. Однако удобно — одел, play, слушаешь. BT 3.x очень хорошо развил энергосбережение в ждущем режиме, разницы в скорости разряда аккума (с вкл/выкл BT) не замечаю. Или вы о безопасности беспокоитесь?
rstepanov
30.03.2016 17:14О безопасности не в первую очередь, в первую очередь — об эффективности. Если использовать бикон в торговом центре — хорошо если каждый десятый посетитель на него отреагирует. Либо вешать огромную вывеску "ВКЛЮЧИТЕ BLUETOOTH В ВАШЕМ СМАРТФОНЕ, ИНСТРУКЦИЯ: ..." чтобы бикон смог что-нибудь передать :)
RuddyRudeman
30.03.2016 17:20Понимаю, я лишь прямо отвечал на вопрос. Как видите такие люди в природе есть. Сколько их — уже другой вопрос. Очевидно мало. Возможно фишку постигнет судьба QR кодов, которые не особенно популярны, хотя прижились и кем то даже используются. Но если гугл с эплом начнут как следует пушить, то вполне может войти в обиход. Вполне представляю себе эту фичу как часть индор навигации в рамках самописных приложений отдельных торговых центров (пока кто то не раскрутит обущую платформу для ТЦ). И тогда люди сами будут оставлять блютуф или включать его на пороге магазина. Потому что они сами будут хотеть пользоваться этим удобным функционалом.
RuddyRudeman
30.03.2016 17:08+1Фото не соответствует. У изображенной RPi model A+ нет беспроводных модулей. Хотя соответствует — можно воткнуть внешний донгл. Но все равно некрасиво =)
kgbplus
Дороговато для маяка. Специализированные дешевле получаются.
Разве что только в образовательных целях.
Voiddancer
Так это можно сделать на малинке, занятой другими делами, не?