Мини ПК 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)


  1. kgbplus
    29.03.2016 15:26
    +3

    Дороговато для маяка. Специализированные дешевле получаются.
    Разве что только в образовательных целях.


    1. Voiddancer
      29.03.2016 16:14

      Так это можно сделать на малинке, занятой другими делами, не?


  1. rstepanov
    30.03.2016 14:09

    А что, есть в природе настоящие живые люди, которые всегда держат на телефоне включенный Bluetooth?


    1. Arezus
      30.03.2016 14:17
      +1

      Я и многие другие его не выключают. Есть много процессов требующих этого, но как самый простой — любые умные часы.


      1. rstepanov
        30.03.2016 14:24

        Ради интереса запустил в офисе поиск устройств. В радиусе примерно 10 метров — человек двадцать (в т.ч. по вертикали). Ничего не нашел...


        1. Arezus
          30.03.2016 15:18

          Ну, у меня в радиусе пяти метров четыре устройства, трое человек с пеблами и БТ-колонка, еще датчик уровня на БТ, но он не детектится. Предполагаю, что в наш век люди могут просто не бродкастить доступность.


    1. Black_Shadow
      30.03.2016 14:50

      Я. У меня часы умные на Android Wear. Влияние на скорость разряда батареи я не заметил.


    1. Voiddancer
      30.03.2016 14:57
      +1

      у меня пебблы и гарнитура, мне иначе никак.


    1. RuddyRudeman
      30.03.2016 17:02

      У меня только наушники, используемые не слишком часто. Однако удобно — одел, play, слушаешь. BT 3.x очень хорошо развил энергосбережение в ждущем режиме, разницы в скорости разряда аккума (с вкл/выкл BT) не замечаю. Или вы о безопасности беспокоитесь?


      1. rstepanov
        30.03.2016 17:14

        О безопасности не в первую очередь, в первую очередь — об эффективности. Если использовать бикон в торговом центре — хорошо если каждый десятый посетитель на него отреагирует. Либо вешать огромную вывеску "ВКЛЮЧИТЕ BLUETOOTH В ВАШЕМ СМАРТФОНЕ, ИНСТРУКЦИЯ: ..." чтобы бикон смог что-нибудь передать :)


        1. RuddyRudeman
          30.03.2016 17:20

          Понимаю, я лишь прямо отвечал на вопрос. Как видите такие люди в природе есть. Сколько их — уже другой вопрос. Очевидно мало. Возможно фишку постигнет судьба QR кодов, которые не особенно популярны, хотя прижились и кем то даже используются. Но если гугл с эплом начнут как следует пушить, то вполне может войти в обиход. Вполне представляю себе эту фичу как часть индор навигации в рамках самописных приложений отдельных торговых центров (пока кто то не раскрутит обущую платформу для ТЦ). И тогда люди сами будут оставлять блютуф или включать его на пороге магазина. Потому что они сами будут хотеть пользоваться этим удобным функционалом.


  1. RuddyRudeman
    30.03.2016 17:08
    +1

    Фото не соответствует. У изображенной RPi model A+ нет беспроводных модулей. Хотя соответствует — можно воткнуть внешний донгл. Но все равно некрасиво =)