Microsoft — мировой лидер в области ПО и ИТ-услуг
514,78
рейтинг
7 июля 2015 в 11:36

Разработка → 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 Router Service, который может использоваться как вашими приложениями, так и другими устройствами в сети.



Во-вторых, 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


Ниже мы будем использовать Windows 10 Insider Preview и бесплатную версию Visual Studio 2015 Community Edition (RC) (скачать).

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

Полный исходный код приложения можно найти на GitHub. Итак…

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



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



Чтобы изменить яркость:



Это действительно весь код :) Основные AllJoyn классы были предоставлены Windows 10 API, остальные сгенерированы c помощью 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
Автор: @ahriman
Microsoft
рейтинг 514,78
Microsoft — мировой лидер в области ПО и ИТ-услуг

Комментарии (2)

  • 0
    кк мнго очпяток =(
    • 0
      Поправил несколько досадностей :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка