Присоединяйтесь

Разработка

Стандарты Интернета вещей

Согласно последним отчетам в 2014 году в сеть уже было подключено порядка 1.2 миллиарда устройств, от медицинских сенсоров до термостатов. Количество их будете неуклонно расти, вплоть до 80 миллиардов уже к 2020 году. Примерно по десять устройств в каждом доме.

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

Стандарты нужны для управления четырьмя главными аспектами Интернета вещей: связи, взаимодействия, конфиденциальности и безопасности. Давайте сравним пять наиболее влиятельных союза:

The AllSeen Alliance - первая группа разработки стандартов для Интернета вещей. Была основана некоммерческой организацией Linux Foundation. На данный момент в нее входят больше 50-ти организаций, включай таких тяжеловесов как Microsoft, Qualcomm, LG, Sharp и Panasonic. AllSeen ищет способ создать универсальные фреймворки для приложений. Для передачи данных используются такие технологии как WiFi, Ethernet, Powerline, Bluetooth, 6LoWPAN, ZigBee и Z-Wave. Особый упор сделан на совместимость устройств от разных производителей, в качестве платформы будут использованы популярные операционные системы Android, iOS, Linux, OpenWRT, Windows и OS X.

AllSeen использует систему AllJoyn, с помощью которой устройства могут делиться своими возможностями друг с другом. Например, умная лампочка даст знать датчику движения, что в комнате может светить. Для обеспечения должного уровня защиты и конфиденциальности AllJoyn шифрует данные передаваемые между устройствами.

The Open Interconnect Consortium (OIC) - поддерживается Intel, Atmel, Broadcom, Dell. Главной задачей видят разработку общих требований для совместимости умных устройств. На базе этих требований уже создан фреймворк с открытым исходным кодом, получивший название IoTivity. Компании входящие в консорциум особое внимание уделяют безопасности, но пока не понятно какими средствами они добьются должного ее уровня.

Цель OIC не в том, чтобы предложить очередную версию стандартов, а сделать свою реализацию эталонной.

The Thread Group - сформирована подразделением Google Nest Labs. Включает больше восьмидесяти участников Samsung, ARM Holdings, Silicon Labs и другие. Цель этой группы всячески поощрять производителей устройств для умных домов за использование их стандартов связи по сети. В отличии от других альянсов Thread сделали ставку на радио протокол с низким уровнем потребления энергии 6LoWPAN.

HomeKit - поддерживается Apple и дает возможность производителям устройств ставить лейбл "Совместимо с iPhone". HomeKit предоставляет набор инструментов для разработчиков для создания приложений для умного дома. Устройства работающие с помощью HomeKit передают данные в зашифрованном виде.

Industrial Internet Consortium - основан Intel, Cisco, AT&T, GE и IBM. Включает более 150 участников, которые занимаются совместной разработкой стандартов связи между устройствами. ICC заключило стратегическое соглашение с OIC о широком распространении информации касающейся стандартов совместимости устройств.

Определение стандартов безопасности и конфиденциальности IIC возложило на компанию CyberX и софтварного гиганта SAP.

Пока неясно стандарты какого альянса выиграют в гонке. И уж точно это случится не в этом году. По оптимистичным прогнозам только в 2017 года станет ясно чьи разработки станут стандартом де-факто для большинства производителей.

Ubuntu встречает Интернет вещей с Acer, GE и Microsoft

Старые враги заключают союзы перед началом новой технологической эпохи - Интернет вещей. Canonical, компания создавшая самый популярный линукс дистрибутив Ubuntu Linux, начала сотрудничество с такими гигантами индустрии как Acer, DataArt, GE и Microsoft.

Canonical и Microsoft уже работали вместе над портированием Juju (инструмент для администрирования в облаке) в Windows и встраивания самого Windows в OpenStack. Теперь они вместе сотрудничают DataArt над созданием промышленного решения для контролю за состоянием оборудования. Это решение включает в себя все основные направления развития IT - Интернет вещей, облачные вычисление, BigData, машинное обучение, платформа Docker.
Чтобы совместить все это они будут использоваться Ubuntu Snappy, DeviceHive и Juju Charms. Microsoft будет использовать платформу Azure для хранения и обработки полученных с устройств данных.

"Чем устройства становятся умнее и меньше, а стоимость их падает, тем больше удивительных предложений появляется на рынке Интернета вещей", говорит технический директор Microsoft Анко Дайзер (Anko Duizer). "Современные промышленные системы могут принимать поток информации с миллионов устройств, чтобы сделать на базе неё выводы о рабочем процессе и состоянии оборудования. Использоваться для этого будет специально созданная система вертикальной экспертизы данных на базе DeviceHive от DataArt, которая может быть интегрирована с облаком Azure от Microsoft."

Snappy Ubuntu, самая маленькая и в тоже время самая защищенная версия Ubuntu. Её разработали не только для облачных или контейнерных решений, как CoreOS или Linux Atomic Host от Red Hat, но и для управления устройствами, такими как роботы, дроны, сетевые коммутаторы, мобильные станции и многое другое.

"Snappy это великолепная платформа для нового поколения разработчиков специализирующихся на облачных решениях или программирующих устройства для Интернета вещей", отмечает вице президент компании Canonical Мартин Ектор (Maarten Ectors). "Комбинация открытой платформы и хранилища приложений, работающего с широким спектром устройств, от мелких плат до сложных мобильных устройств, будет стимулировать разработчиков и предпринимателей на создание новых решений. Следующим шагом будет показать насколько разработки для Интернета вещей могут быть коммерчески выгодными".

Первая стабильная версия Snappy Ubuntu уже доступна для скачивания как часть дистрибутива Ubuntu 15.04. Этот релиз поддерживает 64-битную Intel и ARM архитектуру.

Протокол MQTT

MQTT (Message Queue Telemetry Transport) - лёгкий сетевой протокол работающий поверх TCP/IP. Используется для обмена сообщения между устройствами по принципу издатель-подписчик (publish–subscribe).

История создания

Первая версия протокола была разработан доктором Энди Станфорд-Кларком (IBM) и Арлен Ниппер (Arcom) в 1999 и опубликована под роялти-фри лицензией. Спецификация MQTT 3.1.1 была стандартизирована консорциумом OASIS в 2014 году.

Возможности

В конце девяностых, когда разрабатывался MQTT, каналы связи имели низкую пропускную способность. В результате упор был сделан на минимальную вес сообщения и высокую надежность доставки.

  • Прост в использования. Протокол представляет собой программный блок без лишней функциональности, который может быть легко встроен в любую сложную систему;
  • Паттерн проектирования издатель-подписчик удобен для большинства решений с датчиками. Дает возможность устройствам выходить на связь и публиковать сообщения, которые не были бы заранее известны или предопределены;
  • Легок в администрировании;
  • Снижена нагрузку на канал связи. Сообщения, насколько это возможно, несут в себе только полезную нагрузку;
  • Работа в условиях постоянной потери связи или других проблем на линии;
  • Нет ограничений на формат передаваемого контента.

Реализация

Брокер

Mosquitto - платформа, реализующая возможность обмена сообщениями между компонентами системы на базе стандартов протокола MQTT версии 3.1 и 3.1.1
Mosquitto написан на C и распространяется под лицензией BSD.

Устанавливаем и запускаем

$ apt-get install mosquitto
$ mosquitto

Брокеры могут быть сконфигурированы мостом. Например брокер A может перенаправлять сообщения, пришедшие на определенный канал, брокеру B. Таким образом вы можете масштабировать ваше решение.

Соединение мостом

Издатель-подписчик

Paho - реализации протокола обмена сообщений MQTT на популярных языках программирования.

  • C/C++ (Windows/Unix/Mac/embedded systems)
  • Java (J2SE Client/Android Service)
  • JavaScript Client
  • Python Client
  • Go Client
  • C# (.Net/WinRT Client)

Примеры на Python

Устанавливаем библиотеку из репозиториев pip. И запускаем брокер mosquitto на локальном хосте.

$ pip install paho-mqtt

Подписчик (Subscriber)

Этот компонент является подписчиком. Подключается к брокеру по умолчанию на порт 1883 и слушает канал (topic) в ожидании новых сообщений.

from paho.mqtt import client


def on_connect(client, userdata, rc):  
    print("Connected with result code: %s" % rc)
    client.subscribe("mqtt/paho/test")

def on_message(client, userdata, msg):  
    print("%s: %s" % (msg.topic, msg.payload))

def main():  
    subscriber = client.Client()
    subscriber.on_connect = on_connect
    subscriber.on_message = on_message

    subscriber.connect("localhost")
    subscriber.loop_forever()

if __name__ == "__main__":  
    main()

Издатель (Publisher)

Назначение этого компонента публиковать сообщения. Сообщения можно передавать списком.

from paho.mqtt import publish


def main():  
    msgs = [{'topic': "mqtt/paho/test", 'payload': "hello"},
            {'topic': "mqtt/paho/test", 'payload': "world"}]
    publish.multiple(msgs, hostname="localhost")

if __name__ == "__main__":  
    main()

Примеры использования

Наиболее известные примеры использования: