AllJoyn і Windows 10 — робимо так, щоб наші пристрої говорили на одній мові

Висловлюємо велике спасибі за підготовку статті sgrebnov з компанії Akvelon (Іваново), за допомогу в написанні цієї статті як безпосереднього виробника AllJoyn і експерта з IoT/Windows. Інші наші статті по темі IoT можна знайти по тегу iotweek.
Привіт!

Не так давно ми вже зачіпали тему IoT або «Інтернету Речей» в рамках конференції WinHEC (Hardware Engineering Conference) 2015.

Однією з головних проблем, що хвилюють багатьох, це питання забезпечення зв'язності і виявлення пристроїв, що говорять на різних мовах, протоколах та ін. Цю проблему покликаний вирішити фреймворк AllJoyn, в сукупності з протоколом Thread, до робочої групи над яким Microsoft приєднався 1 липня. Про AllJoyn і піде наша мова.




Окремо ми вирішили розглянути одну з дуже важливих частин цієї концепції в розрізі Windows 10 (але, звичайно, необмеженої цієї ОС) — популярний протокол взаємодії пристроїв AllJoyn, який вже став стандартом де-факто. Тим більше, що Windows 10 і супутній Windows 10 SDK надають спеціальну підтримку даного протоколу.

Що за AllJoyn?
AllJoyn — це фреймворк (і відповідний протокол) з відкритим вихідним кодом, призначений для взаємодії додатків, пристроїв і користувачів через WiFi і Bluetooth (і інші типи мереж) незалежно від типу пристрою.

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

Архітектурно це виглядає наступним чином – AllJoyn-мережа складається з віртуальний роутерів (Routers) і додатків (Apps). Додатки спілкуються зі своїм роутером, а роутери в свою чергу з іншими роутерами і іншими додатками, що відносяться до даного роутеру. Таким чином, додатки можуть спілкуватися один з одним через мережі цих віртуальних роутерів. При цьому додаток і вирутальный роутер, до якого він прикріплений, можуть знаходиться на різних фізичних пристроях.

Детальніше про архітектуру AllJoyn можна почитати тут (загальна інформація) і тут (Windows 10 IoT).



Windows 10 IoT AllJoyn
Поспішаю порадувати — в Windows 10 включена повна підтримка даного протоколу, а саме:
По-перше, вам не потрібно піклуватися про AllJoyn-роутері, описаному вище, так як Windows 10 включає спеціальний сервіс AllJoyn Service Router, який може використовуватися, як вашими додатками, так і іншими пристроями в мережі.



По-друге, Windows 10 включає спеціальний API для роботи з AllJoyn-протоколом, який знаходиться в просторі імен Windows.Devices.AllJoyn (https://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.alljoyn.aspx) (підтримуються С++, C#, JavaScript). Таким чином, вам не треба ставити додаткові SDK і інструменти, все вже готове і працює.

І, звичайно ж, додаткові інструменти для розробників:

  • AllJoynCodeGen — частина Windows 10 SDK (лежить в C:\Program Files (x86)\Windows Kits\10\bin\x64\), дозволяє згенерувати повністю готову Windows Runtime бібліотеки для роботи з AllJoyn-сервісом, використовуючи опис сервісу у форматі xml (AllJoyn Introspection XML). Подивитися і послухати докладніше.
  • getajxml — спеціальна утиліта, яка дозволяє виявити всі AllJoyn-пристрої в мережі, отримати детальну інформацію, в тому числі згенерувати AllJoyn Introspection XML, який можна використовувати для автогенерации коду. Докладніше можна подивитися на відео вище.
  • AllJoyn Explorer — схожа утиліта, але виконана у вигляді програми Windows і дозволяє не тільки побачити інтерфейс, але і динамічно викликати методи. Скачати можна тут.
Приклад створення AllJoyn-додатки на Windows 10
Нижче ми будемо використовувати <a href=«windows.microsoft.com/en-us/windows/preview-iso>Windows 10 Insider Preview і безкоштовну версію Visual Studio 2015 Community Edition (RC) (завантажити).

Одним з популярних прикладів AllJoyn є проект Connected Lighting Project, який є ні що інше, як лампочку, що реалізує AllJoyn-інтерфейс для отримання інформації і управління пристроєм.
Нижче подивимося на процес створення Windows 10-клинета для управління такою розумною лампочкою. Повний вихідний код програми можна знайти на GitHub. Отже…

Крок 1. Створюємо новий Widows C++ Runtime компонент і використовуємо AllJoynCodeGen (див. вище) для автогенерации коду.
Публічний AllJoyn Introspection XML для даного проекту можна знайти тут



Детальні інструкції лежать тут.
Крок 2. Створюємо нове Windows 10 C#/XAML додаток і додаємо в залежності тільки що створений Windows Runtime компонент.
Крок 3. Тепер ми можемо реалізувати логіку по знаходженню та управління нашої лампочкою
Для того, щоб знайти і приєднатися до лампочки:



Щоб змінити яскравість:



Це дійсно весь код :) Основні AllJoyn клссы були надані Windows 10 API, інші згенеровані за допомогою AllJoynCodeGen.

Крок 4. Тестуємо:
В якості тестової лампочки можна використовувати Lamp Simulator Application (Android, завантажити). Отже, запускаємо наш додаток на Windows Phone 10 телефоні і Lamp Simulator на Android, і тестуємо як це все працює разом.



Ресурси
AllJoyn і Windows10
Архітектура AllJoyn
Building AllJoyn Apps on Windows 10
AllJoyn Interfaces in Windows 10
AllJoyn Connected Lighting Project


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.