Microsoft уже давно проявляет заметную активность в сфере Интернета вещей: Специализированные облачные сервисы, IoT-редакция Windows 10, версия .Net для микроконтроллеров, множество хакатонов и т.д. Не так давно был представлен новый проект, который, теоретически, может существенно упростить жизнь многим разработкам IoT-систем. Называется он Open Translators to Things(OpenT2T). Если в двух словах, этот проект можно описать, как "Интерфейс всего". Более подробное описание далее в этой статье. Любой, кто разрабатывал программное обеспечение для устройств, сталкивался с большим разнообразием протоколов и подходов при использовании одного и того же класса компонентов. Казалось бы, все датчики температуры работают примерно одинаково. Нужно просто считать с них показания, и все. Однако на практике видим следующее: Чтение данных с температурного датчика LM35 происходит так (взято отсюда): Для датчика TMP36 код будет такой (взято отсюда): Если же использовать термистор в 10K Ом, то может получиться такой код (взято отсюда): Вот, например, разные варианты работы с лампочкой: Philips Hue (взято отсюда): Wink Hub (взято отсюда): И так во всем. В Microsoft решили попробовать устранить данную проблему с помощью новой инициативы: Open Translators to Things(OpenT2T). Идея заключается в том, чтобы попросить самих разработчиков помочь создать "схемы работы" для разных классов устройств. Нужно сказать, что эта идея не нова. Например, существует Open Connectivity Foundation. Microsoft хочет объединить усилия подобных групп, отдельных производителей и разработчиков. Специально для этого был создан репозиторий на GitHub, благодаря которому любой желающий может присоединиться к этому процессу. Технически "интерфейсы всего" предлагается создавать на JavaScript/Node.js. Результат получается кросс-платформенным. Есть примеры для Windows, OS X, Android, Azure и AWS. Каждый "интерфейс" состоит из трех частей: Схема объединяет устройства одного и того же класса. Это и есть обобщенный "интерфейс" для одинаковых устройств. Для примера на GitHub можно найти схему для датчиков температуры. Сейчас используются схемы в формате AllSeen. Транслятор — это реализация схемы для конкретного устройства. Он должен скрывать особенности работы с устройством, что поможет разработчикам не тратить время на изучение документации, а сразу преступить к работе. Трансляторы могут быть запущены как на локальных устройствах (ПК, телефоны, планшеты, специализированные контроллеры и т.д.), так и в облаке. Все зависит от принципов работы управляемого устройства. Примеры трансляторов написаны на JavaScript с использованием Node.js. Но никто не запрещает использовать и другие языки и платформы: C++, C#, Java и т.д. Приложение — это примеры работы схемы и транслятора для разных платформ. Как же этим все пользоваться? Предположим, мы хотим считать температуру с датчика CC2650. Чтобы понять, какую помощь ожидает Microsoft от сообщества, нужно заглянуть в Roadmap. Проект сейчас находится в Alpha-стадии и разделен на несколько частей: Принять участие в этом процессе достаточно просто. Можно начать с просмотра этого и этого видео. Можно почитать tutorial. А можно поучаствовать в дискуссии на GitHub. Другие площадки для общения находятся тут и тут. Приглашаются все желающие. Подводя итог, можно отметить, что идея правильная и своевременная. Но на мой взгляд, несколько наивная. Вызывает вопросы и стек технологий. Но, учитывая ресурсы, которые Microsoft может включить в этот проект, из него может что-то и получится. В любом случае, инициатива полезна, как площадка для обсуждения проблемы и поиска ее решения. А это уже половина дела. Cloud, DevOps, Project Management.