enter image description here


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


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


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


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

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


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

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


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

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


Philips Hue (взято отсюда):


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

Wink Hub (взято отсюда):


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

И так во всем.


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


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


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

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


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


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


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


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

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


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

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


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

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


  1. si1v3r
    18.04.2016 15:23

    Например, существует Open Connectivity Foundation.
    но у нее имеется фатальный недостаток. :)


    1. AlexandrSurkov
      18.04.2016 15:40

      Какой?


      1. si1v3r
        18.04.2016 15:41

        Серьезно? Не знаете мема? Первая ссылка яндекса.


        1. Trilium
          18.04.2016 18:06

          А это похоже на сайт для развлечений? Юмор может не всем понятен быть, а информацию не всю знать. Ответить по существу было бы ценнее, чем такой тип насмешки, как в вашем комментарии.


          1. si1v3r
            18.04.2016 19:43

            Да ладно Вам. Не понятно — пройдите мимо. Насмешка была на Микрософт, а не над автором.


          1. tangro
            19.04.2016 10:55

            А это похоже на сайт для развлечений?

            Да, а что? Вы тут работаете, что ли?


        1. AlexandrSurkov
          18.04.2016 18:12

          Серьезно, не знаю. Первая ссылка в яндексесайт OCF.
          Расскажите пожалуйста поподробнее.


          1. si1v3r
            18.04.2016 19:42
            -3

            Не. Искать нужно было «фатальный недостаток». Мему лет пятнадцать. О том, как Микрософт изобретает собственные версии существующих продуктов.


            1. AlexandrSurkov
              18.04.2016 21:02

              Ну, в этом есть доля шутки :) Самое интересное, что Microsoft является одной из создателей Open Connectivity Foundation наряду с Cisco, Intel, Samsung, IBM, Dell и т.д.


          1. dkv
            18.04.2016 23:42
            -2

            Всё просто. Майкрософт испокон веков занимается внедрением новых альтернативных технологий, не успев довести до ума ту, которой ещё вчера пророчила светлое будущее. Silverlight, DirectShow, недосистема для недопланшетов surface и куча велосипедов в рамках платформы .net Найдя «фатальный недостаток» в очередной своей-же технологии, Майкрософт бросается клепать альтернативу ей с нуля, полностью переворачивая всё с ног на голову ради реализации пары фич.


            1. Krey
              19.04.2016 17:00

              Совершенно согласен. Мне это настолько надоело что я вообще перестал пробовать новые технологии, если их автор Microsoft. Но в последние время мое отношение меняется в связи с тем что МС существенно двинулась в сторону open source. Надо полагать теперь технологии будут угасать не потому что их МС забрасывает, а потому что просто не взлетели. Причем они не будут исчезать совершенно, а по-тихому продолжать развиваться, если смогут собрать вокруг себя хоть какое-то community. Как и должно быть.


        1. Romiro_Orimor
          18.04.2016 19:18
          +1

          Ох, уж этот персонализированный поиск.


      1. kail
        18.04.2016 23:00

        Окей, гугл
        История программных революций от Microsoft, вкратце
        полная версия и оригинал

        Более того, и года не прошло, как была статья на хабре от всё тех же про всё то же. Цитаты:

        Одна из главных проблем, волнующих многих, это вопрос обеспечения связности и обнаружения устройств, говорящих на разных языках, протоколах и др. Эту проблему призван решить фреймворк AllJoyn
        Архитектурно это выглядит следующим образом – AllJoyn-сеть состоит из виртуальных роутеров (Routers) и приложений (Apps).
        Ничего не напоминает? :)

        На самом деле, это больше похоже на развитие идеи AllJoyn. Тем более, они схемы используют в формате из этого проекта. Но раз в данной статье AllJoyn не упомянули, то, вероятно, проекты пересекаются слабо, и см. первую ссылку :)


  1. jamakasi666
    19.04.2016 07:02

    Который раз ловлю себя на мысли что похоже я все меньше понимаю современные тенденции и новомодные языки и их проблемы. Вот учил и писал когда то на чистых С и С++, появился .Net и потихоньку ушел от него к Java которая понравилась своей консервативностью. Вот если бы встала такая задача, как та которую поставили MS, я бы сделал по интерфейсу к каждому типу датчиков и для каждого датчика реализацию конкретного интерфейса.
    Написали бы это на С или С++ сразу кроссплатформенно, к сожалению я не настолько гуру в С++ и не знаю есть ли там подобие интерфейсам явы, все бы сказали огромное спасибо, потом просто бы приликновали нужные dll\so\dylib'ы к любому языку, избежали бы кучу костылей. Вот полюбому найдутся люди котоые сделают кашу из С и какойнибудь ноды, а потом будут удивляться, а чей то у меня 1 датчик работает быстрее быстрее другого и дальше идут ошибки логики и правил работы.


  1. mrsimba
    19.04.2016 07:07
    +2

    Под заголовком «интернет всего» первое, что бросилось в глаза, это круглый унитаз… и лампочка в него )))


    1. AlexandrSurkov
      19.04.2016 07:14

      Лампочкой и унитазом, если он японский, тоже можно управлять со смартфона через Azure :)


      1. mrsimba
        19.04.2016 07:21
        +1

        Не дай бог, унитаз под управлением чего бы ни было, кроме ручного…
        А вдруг перезагрузка во время процесса или «программа выполнила недопустимую операцию и будет закрыта..» Нафиг нафиг...))


        1. foxmuldercp
          19.04.2016 10:01

          С сидящей попой закрытие унитаза чревато ранением попы пользователя. :)


  1. hdfan2
    19.04.2016 09:24

    Situation: there are 14 competing standards. Боюсь, всё кончится именно как в xkcd.


  1. Costic
    19.04.2016 13:44
    -1

    Мне кажется всем будет лучше, если Microsoft не будет лезть в область IoT.
    А то ещё заставят для каждой прошивки покупать у них цифровые подписи.