Статьи

Автоматическое обнаружение сбоя iBeacon с помощью Raspberry Pi

1. Аннотация

Появление iBeacons в качестве провайдера микро-локации создало ряд решений, предлагаемых различными поставщиками в этой области. Учитывая количество маяков, участвующих в каждой реализации, мониторинг и обслуживание маяков стали трудоемкими и трудоемкими, увеличивая расходы на обслуживание и эксплуатацию. В этой статье обсуждается решение IGATE для обнаружения сбоя iBeacon с использованием Raspberry Pi и возможные проблемы, с которыми можно столкнуться во время внедрения.

2. Постановка проблемы

Последние тенденции показывают, что iBeacons, устройства Bluetooth с низким энергопотреблением (BLE) с малым питанием от батарей, широко используются в розничных магазинах для проведения рекламных акций и позиционирования внутри помещений. Типичный срок службы каждого из этих маяков составляет 6-8 месяцев, в зависимости от типа используемого аккумулятора. При относительно большой установке, требующей управления не менее 500-600 маяками, ручной мониторинг состояния каждого маяка занимает много времени и значительно увеличивает затраты на обслуживание. Также, если какой-либо из маяков неисправен, обнаружение этого может занять больше времени, что может привести к потере дохода для продавца.

3. О Raspberry Pi

Raspberry Pi — это одноплатный компьютер размером с кредитную карту, разработанный в Великобритании Фондом Raspberry Pi с целью содействия преподаванию базовых компьютерных наук в школах.

Рисунок 1: Raspberry Pi

В 2014 году Raspberry Pi Foundation запустила Compute Module, который упаковывает Raspberry Pi Model B в модуль для использования в составе встроенных систем, чтобы стимулировать их использование.

Raspberry Pi основан на системе Broadcom BCM2835 на микросхеме (SoC), которая включает в себя процессор ARM1176JZF-S 700 МГц, GPU VideoCore IV, и первоначально была поставлена ​​с 256 МБ оперативной памяти, позже обновленной (Модель B и Модель B +) до 512 МБ. Система имеет гнезда Secure Digital (SD) или MicroSD (модели A + и B +) для загрузочного носителя и постоянного хранилища.

Фонд предоставляет для загрузки дистрибутивы Debian и Arch Linux ARM. Доступны следующие инструменты: Python в качестве основного языка программирования с поддержкой BBC BASIC, C, C ++, Java, Perl и Ruby.

4. Предложенное решение 


Предлагаемое решение использует Raspberry Pi и USB-адаптер Bluetooth для обнаружения маяков в его окрестностях и передачи информации на сервер каждые 10 минут с использованием сценария оболочки.
Скрипт оболочки запускается как задание cron каждые 10 минут в течение 1 минуты для сканирования данных пакета Bluetooth iBeacon. Как только данные iBeacon загружены на сервер, он будет определять состояние iBeacon на основе последней обновленной временной метки маяка на сервере.

5. Компоненты системы

Аппаратное обеспечение : Raspberry Pi, USB Bluetooth 4.0, iBeacons
Программное обеспечение : Shell script, Серверное приложение

Рисунок 2: Компоненты системы

6.Implementation:


Вот список шагов, необходимых для реализации решения

6.1 Приготовление Raspberry Pi

Установка Bluez SDK добавит возможность Bluetooth к пи. 

После подключения USB-адаптера Bluetooth к Pi состояние устройства можно проверить с помощью команды оболочки.

статус sudo hciconfig hci0

если состояние показывает «вниз», устройство должно быть запущено с помощью команды 

sudo hciconfig hci0 up

После запуска устройства и запуска сценария оболочки для обнаружения маяков его можно запустить через командную строку или добавить как задание cron, которое будет выполняться непрерывно каждые 10 минут.

iBeacons размещены вокруг Raspberry Pi для его обнаружения

6.2 Shell Script: 

Сценарий оболочки использует hcitool для чтения пакетов Bluetooth рядом с его окрестностью, а сценарий используется для фильтрации пакетов iBeacon в списке. 


Команда оболочки для чтения пакетов Bluetooth
sudo hcitool lescan - дублирует и

 Сценарий оболочки, в свою очередь, обрабатывает пакеты iBeacon для получения UUID, Major ID, Minor ID, RSSI и Power, которые будут загружены с помощью cURL на сервер с помощью веб-службы. 

Одной из основных проблем было то, что сканирование hcitool отслеживало пакеты с большей скоростью, чем мог обработать скрипт, что приводило к очень медленной обработке показаний. Поскольку скрипт постоянно работает для сканирования пакетов Bluetooth, в скрипте произошла большая задержка обработки, что привело к задержке отправки сообщений на сервер. Чтобы избежать этого, скрипт запускается как задание cron каждые 5 минут и будет длиться 20 секунд каждый раз. 

тайм-аут 20 ./ibeacon_scan.sh

Это обеспечит минимальную задержку отправки показаний сканирования Bluetooth на сервер для обработки, и сервер, в свою очередь, сможет обнаружить сбой iBeacon с максимальной задержкой в ​​10 минут.

6.3 Серверное приложение: 

Серверное приложение состоит из веб-службы, а также веб-интерфейса для отображения статуса маяка на макете магазина. Веб-служба получает данные от Raspberry, такие как UUID iBeacon, Major ID, Minor ID, RSSI, а также отметку времени чтения пакета iBeacon. Эти данные обновляются в базе данных для таблицы маяка с последней обновленной отметкой времени для маяка. Планировщик cron проверит текущее время сервера с помощью последней обновленной метки времени для маяка, и если эта разница превышает 10 минут, состояние маяка будет обновлено как не работающее. Веб-интерфейс, отображающий красный / зеленый статус маяка, будет обновлен соответствующим образом.

7. Проблемы в реализации

Некоторые из проблем, с которыми сталкиваются в ходе реализации, перечислены ниже.

Сам Raspberry Pi может выйти из строя по нескольким причинам, таким как сбой питания или по другим причинам. Об этом можно заботиться, поддерживая последнюю обновленную дату Raspberry Pi.

Обнаружить несколько маяков с одинаковым UUID на Raspberry Pi не удастся, так как пакет iBeacon, считанный Raspberry Pi, не будет иметь Mac-адрес маяка

Отсутствие какой-либо HTTP-инфраструктуры в Raspberry Pi для обработки вызовов веб-служб к серверу для обмена данными привело к использованию множества функций низкого уровня в Raspberry Pi.

8.Conclusion

Поскольку в реализации задействовано 500-600 маяков, обнаружение отказа маяка будет трудоемким и дорогостоящим, если это будет сделано вручную. Raspberry Pi в сочетании с адаптером Bluetooth и серверным приложением можно использовать для обнаружения сбоя iBeacon с максимальной задержкой в ​​10 минут, как указано в решении, приведенном в этом документе. Это решение устраняет необходимость ручной проверки отказов маяков.