- PVSM.RU - https://www.pvsm.ru -

Новая инициатива Microsoft OpenT2T: «Интерфейс всего»

enter image description here

Microsoft уже давно проявляет заметную активность в сфере Интернета вещей: Специализированные облачные сервисы, IoT-редакция Windows 10, версия .Net для микроконтроллеров, множество хакатонов и т.д. Не так давно был представлен [1] новый проект, который, теоретически, может существенно упростить жизнь многим разработкам IoT-систем. Называется он Open Translators to Things(OpenT2T). Если в двух словах, этот проект можно описать, как "Интерфейс всего". Более подробное описание далее в этой статье.

Любой, кто разрабатывал программное обеспечение для устройств, сталкивался с большим разнообразием протоколов и подходов при использовании одного и того же класса компонентов. Казалось бы, все датчики температуры работают примерно одинаково. Нужно просто считать с них показания, и все. Однако на практике видим следующее:

Чтение данных с температурного датчика LM35 [2] происходит так (взято отсюда [3]):

tempCC = (5.0 * reading(tempPin) * 100.0) / 1024.0 

Для датчика TMP36 [4] код будет такой (взято отсюда [5]):

tempC = (5.0 * reading(tempPin) -  0.5) * 100

Если же использовать термистор в 10K Ом, то может получиться такой код (взято отсюда [6]):

tempC = log(((10240000/ reading(tempPin)) - 10000))
tempC = 1 / (0.001129148 + (0.000234125 + 0.0000000876741 * tempC ^ 2)) * tempC )
tempC = temp - 273.15

Вот, например, разные варианты работы с лампочкой:

Philips Hue [7] (взято отсюда [8]):

PUT http://<bridge ip>/api/<username>/lights/1/state {"bri":254}

Wink Hub [9] (взято отсюда [10]):

PUT https://api.wink.com/light_bulb/<device_id>  {“desired_state": { “powered” : true} }

И так во всем.

В Microsoft решили попробовать устранить данную проблему с помощью новой инициативы: Open Translators to Things(OpenT2T) [11]. Идея заключается в том, чтобы попросить самих разработчиков помочь создать "схемы работы" для разных классов устройств. Нужно сказать, что эта идея не нова. Например, существует [12] Open Connectivity Foundation. Microsoft хочет объединить усилия подобных групп, отдельных производителей и разработчиков. Специально для этого был создан репозиторий на GitHub [13], благодаря которому любой желающий может присоединиться к этому процессу.

Технически "интерфейсы всего" предлагается создавать на JavaScript/Node.js. Результат получается кросс-платформенным. Есть примеры для Windows, OS X, Android, Azure и AWS. Каждый "интерфейс" состоит из трех частей:

  1. Схема
  2. Транслятор
  3. Приложение

Схема объединяет устройства одного и того же класса. Это и есть обобщенный "интерфейс" для одинаковых устройств. Для примера на GitHub можно найти схему [14] для датчиков температуры. Сейчас используются схемы в формате AllSeen [15].

Транслятор — это реализация схемы для конкретного устройства. Он должен скрывать особенности работы с устройством, что поможет разработчикам не тратить время на изучение документации, а сразу преступить к работе. Трансляторы могут быть запущены как на локальных устройствах (ПК, телефоны, планшеты, специализированные контроллеры и т.д.), так и в облаке. Все зависит от принципов работы управляемого устройства. Примеры трансляторов [16] написаны на JavaScript с использованием Node.js. Но никто не запрещает использовать и другие языки и платформы: C++, C#, Java и т.д.

Приложение — это примеры работы схемы и транслятора для разных платформ.

Как же этим все пользоваться? Предположим, мы хотим считать температуру с датчика CC2650 [17].

  1. Для начала нам нужно найти подходящую схему. В нашем случае она находится [тут]( https://github.com/openT2T/translators/blob/master/org.OpenT2T.Sample.SuperPopular.TemperatureSensor/org.OpenT2T.Sample.SuperPopular.TemperatureSensor.xml [14]). Если схема вас чем-то не устраивает, то можно вынести это на обсуждение и внести в нее правки.
  2. Затем найти и использовать подходящий вам транслятор или написать собственный. В нашем случае транслятор находится тут [18].
  3. Далее написать приложение, использующее выбранное вами устройство. Для датчика CC2650 OpenT2T уже содержит несколько тестовых [19] примеров для разных платформ: UWP С# [20], Java для Android [21], Azure IoT Hub [22] и AWS Kinesis [23].

Чтобы понять, какую помощь ожидает Microsoft от сообщества, нужно заглянуть в Roadmap [24]. Проект сейчас находится в Alpha-стадии и разделен на несколько частей:

  • Схемы и трансляторы. Всем желающим предлагается поучаствовать в формировании схем устройств и создании новых трансляторов.
  • Console. Предполагается, что разработчики будут использовать консольные приложения на своих устройствах для первоначальной настройки модулей, которые содержат node.js процесс, распознающий новые устройства и загружающий соответствующие трансляторы. Тут требуется помощь для создания полноценных приложений для всех операционных систем (Windows, OS X, Android и iOS).
  • Облако. Работа с устройствами может осуществляться и через разнообразные облака. На этом направлении много работы, связанной с поддержкой разных протоколов и форматов для пересылки данных в облачные сервисы.
  • CLI. Сommand Line Interface, который будет использоваться разработчиками для тестирования JavaScript трансляторов. От сообщества ожидают помощи для доработки этого инструмента.
  • Sampleapps. Репозиторий уже содержит примеры для разных платформ. Но чем больше примеров, тем лучше. Поэтому, предлагается добавлять примеры для всего, что вам интересно. Например, актуальными будут Xamarin, Cordova или Swift, а также другие облака (Google Cloud).
  • Voice. Добавление новых голосовых файлов позволит использовать Cortana и других голосовых помощников для управления устройствами.

Принять участие в этом процессе достаточно просто. Можно начать с просмотра этого [25] и этого [26] видео. Можно почитать tutorial [27]. А можно поучаствовать в дискуссии [28] на GitHub. Другие площадки для общения находятся тут [29] и тут [30]. Приглашаются все желающие.

Подводя итог, можно отметить, что идея правильная и своевременная. Но на мой взгляд, несколько наивная. Вызывает вопросы и стек технологий [31]. Но, учитывая ресурсы, которые Microsoft может включить в этот проект, из него может что-то и получится. В любом случае, инициатива полезна, как площадка для обсуждения проблемы и поиска ее решения. А это уже половина дела.

Автор: AlexandrSurkov

Источник [32]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/interfejsy/118353

Ссылки в тексте:

[1] был представлен: https://blogs.windows.com/buildingapps/2016/04/05/open-translators-to-things-an-open-approach-for-accessing-similar-things/

[2] LM35: http://www.ti.com/lit/ds/symlink/lm35.pdf

[3] отсюда: http://duino4projects.com/arduino-temperature-sensor-code/

[4] TMP36: http://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf

[5] отсюда: https://learn.adafruit.com/tmp36-temperature-sensor/using-a-temp-sensor

[6] отсюда: http://computers.tutsplus.com/tutorials/how-to-read-temperatures-with-arduino--mac-53714

[7] Philips Hue: http://www.philips.ru/c-p/8718291241737/hue-personal-wireless-lighting

[8] отсюда: http://www.developers.meethue.com/documentation/core-concepts

[9] Wink Hub: http://www.wink.com/products/wink-hub/

[10] отсюда: http://docs.wink.apiary.io/#reference/device/light-bulb

[11] Open Translators to Things(OpenT2T): http://www.opentranslatorstothings.org/#/

[12] существует: https://www.iab.org/wp-content/IAB-uploads/2016/03/OCF-oneIoTa-Overview-Paper_v3.pdf

[13] репозиторий на GitHub: https://github.com/openT2T

[14] схему: https://github.com/openT2T/translators/blob/master/org.OpenT2T.Sample.SuperPopular.TemperatureSensor/org.OpenT2T.Sample.SuperPopular.TemperatureSensor.xml

[15] формате AllSeen: https://wiki.allseenalliance.org/irb/extended_introspection_xml

[16] Примеры трансляторов: https://github.com/openT2T/translators

[17] CC2650: http://www.ti.com/product/CC2650

[18] тут: https://github.com/openT2T/translators/blob/master/org.OpenT2T.Sample.SuperPopular.TemperatureSensor/Texas%20Instruments%20SensorTag/js/thingTranslator.js

[19] тестовых: https://github.com/openT2T/sampleapps

[20] UWP С#: https://github.com/openT2T/sampleapps/tree/master/uwp

[21] Java для Android: https://github.com/openT2T/sampleapps/tree/master/android

[22] Azure IoT Hub: https://github.com/openT2T/sampleapps/tree/master/azure

[23] AWS Kinesis: https://github.com/openT2T/sampleapps/tree/master/aws

[24] Roadmap: http://www.opentranslatorstothings.org/#/roadmap

[25] этого: https://channel9.msdn.com/series/opent2t/Open-Translators-to-Things-Introduction-for-Users

[26] этого: https://channel9.msdn.com/series/opent2t/Getting-Started-with-Open-Translators-to-Things

[27] tutorial: http://www.opentranslatorstothings.org/#/gettingStarted

[28] дискуссии: https://github.com/openT2T/opent2t.github.io/issues

[29] тут: http://openconnectivity.org/

[30] тут: https://www.iab.org/activities/workshops/iotsi/

[31] стек технологий: https://github.com/openT2T/opent2t.github.io/issues/3

[32] Источник: https://geektimes.ru/post/274504/