Universal mobile electronic key

Universal mobile electronic key

На ринку зараз присутня безліч маячків і їх виробників. І в більшості своїй вони призначені для визначення геолокації всередині будівель. Є цікаві ідеї з розряду вбудовування маячків в валізи, щоб за їх сигналу шукати їх в аеропорту. Але, з огляду на потужності, це виглядає як іграшка. Хотілося придумати і реалізувати щось оригінальне і корисне одночасно. Отже, трохи формальностей на сайті і в офісі Хабра, і маячок iBKS у мене в руках:

Universal mobile electronic key

Про маячки написано багато. Наприклад: «Google's beacon platform. Частина 1 »або« Google's beacon platform. Частина 2 ". Повторюватися не буду, однак скажу, що передбачалося використовувати маячок з Google's beacon platform і працювати з нею по API. Реальність розставила свої крапки над «i», про що я розповім трохи пізніше.

Принципова схема роботи

Universal mobile electronic key

Малюнок 1. Схема організації взаємодії

Ось таке рішення прийшло мені в голову, і тепер давайте спробуємо його реалізувати.

Втілюємо ідею в залозі

У моєму розпорядженні була АТС компанії Avaya зі шлюзом G250. Це старий шлюз, давно знятий з виробництва. Але його нова заміна - шлюз G450 / G430 - має також необхідні нам компоненти, а саме привід управління електронним замком двері. В даний шлюз для потреб малих офісів вбудовано сухе реле - так званий Contact Closure Adjunct (див. Рисунок 2).

Universal mobile electronic key

Малюнок 2. Шлюз G430 виробництва Avaya

Все було готово, і я приступив. Як завжди, реальність розставила крапки на «i».

Підводні камені

Для початку маячок потрібно зареєструвати в Google Beacon Registry. Найпростіше це зробити через мобільний додаток Google Beacon Tools, доступне як в Google Play Market, так і в Apple App Store.

Я включив маячок, видаливши пластиковий роз'єднувач між мікросхемою і батарейкою, встановив Google Beacon Tools і став шукати маячок. Він не з'являвся. Тоді я скачав додаток виробника iBKS Config Tool. Це додатку теж є як для Android, так і для IOS пристроїв. І - о диво! Маячок з'явився.

Universal mobile electronic key

Малюнок 3. iBKS Config Tool

Однак, в Google Beacon Tools він наполегливо з'являтися не хотів. Проштудіювавши інтернет, я вичитав, що потрібно увійти в режим редагування на iBKS Config Tool і змінити тип трансляції маячка. В режим редагування додаток наполегливо входити відмовлялося, як на Android, так і на iOS. Увійти в цей режим вдалося тільки після виключення і повторного включення маячка шляхом видалення батарейки. На все про все було близько 30 секунд, далі маячок знову блокувався. Зрозуміти, це фіча або бага, мені не вдалося. Це ніде не описувалося. Див. Малюнок 4.

Universal mobile electronic key

Малюнок 4. Режим редагування iBKS Config Tool

Помінявши Advertising Mode c 1 на 7 (див. Рисунок 5), я нарешті побачив маячок в Google Beacon Tools (див. Рисунок 6). Але реєструватися він уперто відмовлявся.

Universal mobile electronic key

Малюнок 5. Вибір Advertising Mode

Universal mobile electronic key

Малюнок 6. Google Beacon Tools

Google Beacon Tools для реєстрації вимагав, щоб маячок знаходився в режимі iBeacon або Eddystone UUID. але в цьому режимі он його вперто не бачив. У режимі ж Eddystone URL він його бачив, але реєструвати відмовлявся. Поведінка цієї програми на Android і IOS була однакова, хоча на Android додаток спочатку обирало проект, і тільки потім відмовлялося реєструвати маячок.

Що стало причиною такої поведінки маячка, з'ясувати в ході проекту не вдалося. Таке враження, що сам маячок був проблемний. Варто було його, звичайно, замінити, але реалізація проекту була обмежена тимчасовим рамками, і на нову поїздку в офіс Хабра часу не було. З дослідів з iBKS Config Tool і Google Beacon Tools було зрозуміло, що маячок випромінює, причому передаючи свій унікальний ідентифікатор. Тому було прийнято рішення проводити ідентифікацію маячка для демонстраційного стенда не по attachment, отриманого від Google Beacons Registry, а за його ідентифікатором. В цілому для прототипу рішення така заміна цілком адекватна.

Отже, залишилося тільки знайти Java бібліотеку, яка дозволяла б в Android Studio організувати виявлення ідентифікатора маячка. На допомогу, звичайно, припав GitHub і бібліотека Radiusnetwork.com.eddystonedemo. Ця бібліотека дозволяє бачити трансльований маячком його ідентифікатор, який також видно через iBKS Config Tool. Опис дано тут.

Був організований Activity (див. Малюнок 7), який мав велику сіру кнопку. Ця кнопка після знаходження маячка змінювала колір, ім'я та властивість Clickable. Тобто поки маячок не знайдений, при натисканні на кнопку нічого не відбувається. Як тільки маячок знайдений, то кнопка стає червоною і дозволяє на себе натиснути. При натисканні на кнопку викликається URL, провідний на додаток IVR з передачею IMEI, яке його перевіряє, і в разі успішності формує виклик по протоколу SIP на сервер управління електронним замком. У разі втрати сигналу маячка (збільшення відстані до нього або його виключення) кнопка міняє колір і властивість Clickable назад.

Universal mobile electronic key

Малюнок 7. Скріншоти додатки

Код і кінцева реалізація

Цілком проект можна знайти Github тут. Зупинимося на деталях. Нижче приведена функція, що викликається при знаходженні маячка:

Нижче приведена функція виклику URL на IVR:

Розробка додатків для IVR проводиться в спеціалізованому середовищі Avaya Aura Orchestration Designer і базується на середовищі розробки Eclipse. По суті під кожним елементом ховається Java код. Збірка додатки для спрощення розробки проводиться в стилі Drag<&>Drop. На малюнку 8 наведено скріншот екрану середовища розробки додатків для IVR.

Universal mobile electronic key

Малюнок 8. Середовище розробки Avaya Aura Orchestration Designer

Ця програма має два головних модуля: Data1 і Outcalling. Скріншоти цих модулів наведені на малюнках 9 і 10.

Universal mobile electronic key

Малюнок 9. Модуль Data1

Малюнок 10. Модуль Outcalling

Повний проект можна знайти тут.

Схожі статті