- PVSM.RU - https://www.pvsm.ru -
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. Каждый "интерфейс" состоит из трех частей:
Схема объединяет устройства одного и того же класса. Это и есть обобщенный "интерфейс" для одинаковых устройств. Для примера на GitHub можно найти схему [14] для датчиков температуры. Сейчас используются схемы в формате AllSeen [15].
Транслятор — это реализация схемы для конкретного устройства. Он должен скрывать особенности работы с устройством, что поможет разработчикам не тратить время на изучение документации, а сразу преступить к работе. Трансляторы могут быть запущены как на локальных устройствах (ПК, телефоны, планшеты, специализированные контроллеры и т.д.), так и в облаке. Все зависит от принципов работы управляемого устройства. Примеры трансляторов [16] написаны на JavaScript с использованием Node.js. Но никто не запрещает использовать и другие языки и платформы: C++, C#, Java и т.д.
Приложение — это примеры работы схемы и транслятора для разных платформ.
Как же этим все пользоваться? Предположим, мы хотим считать температуру с датчика CC2650 [17].
Чтобы понять, какую помощь ожидает Microsoft от сообщества, нужно заглянуть в Roadmap [24]. Проект сейчас находится в Alpha-стадии и разделен на несколько частей:
Принять участие в этом процессе достаточно просто. Можно начать с просмотра этого [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/
Нажмите здесь для печати.