iot conf ua 2016
TRANSCRIPT
IoT Conf UA 2016Стек протоколов для IoT.
Применение SNMP в IoT проектах
Александр Коваленко[email protected]
Тезисы
• Открытые стандарты в мире IoT.
• Обзор стеков протоколов для IoT
• (MQTT, CoAP, SNMP).
• Применение SNMP в IoT проектах.
• Описание свойств IoT-устройства на примере термостата
• Демонстрация работы термостата.
Уровневые модели и место IoT протоколов в стеке
Проблема стандартизации. Новый вендор – новый протокол.
Производители IoT решений используют проприетарныепротоколы, что приводит к следующим проблемам:• Нет унифицированного стека протоколов• Проблемы безопасности• Нет M2M взаимодействия (machine-to-machine)• Сложность интеграции в единую экосистемуРешение – использование открытых протоколов и стандартизация
Обзор стеков протоколов для IoT
http://embedded-computing.com/articles/internet-things-requirements-protocols/
MQTT (Message Queue Telemetry Transport)Облегченный протокол для М2М взаимодействия по принципу publisher/subscriberДанные передаются по TCP через центральный узел, называемый Broker.Ориентирован на передачу сообщений. Каждое сообщение публикуется на адрес (Topic)Каждый клиент, который подписывается на topic, получает все сообщения, отправленные в этот topic.
Broker
Client B
Client C
subscribe“temperature”
subscribe“temperature”
Client A
Broker
Client B
Client C
“temperature” = “22.5”
Client A
publish“temperature” “22.5” “temperature” = “22.5”
Topic может иметь иерархическую структуру, поддерживает wildcard-маски: kitchen/oven/temperature, kitchen/+/temperaturehttps://eclipse.org/community/eclipse_newsletter/2014/february/article2.php
CoAP (Constrained Application Protocol). Описание
Протокол разрабатывался специально для М2М и IoT приложенийОформлен в виде стандарта RFC 7252 в июне 2014 годаhttps://tools.ietf.org/html/rfc7252
Имплементирует REST модель доступа к ресурсам через URLРаботает поверх UDP (port 5683)Реализованы методы GET, PUT, POST, DELETE
Формат сообщенияCoAP Discovery
Безопасность достигается использованием DTLS (PSK, Raw Public Key, Cert.)Поддерживаются листы доступа ACL для ограничения доступа к определенным ресурсам
CoAP (Constrained Application Protocol) . Реализация
CoAP взят за основу в проекте IoTivity, разрабатываемом Open Interconnect Consortium .23 декабря 2015 года консорциум опубликовал спецификацию OIC v.1.0, описывающую в том числе и унифицированный формат именования ресурсов IoT устройства.http://openinterconnect.org/developer-resources/specs/
CoAP (Constrained Application Protocol) . Реализация
Ресурсы согласно спецификации OIC унифицированы и имеют иерархическую структуру
URI Resource type Interaction/oic/res Default Discovery
/oic/p Platform Discovery
/oic/d Device Discovery
/oic/rts Resource Type Discovery
/oic/ifs Interface Discovery
/oic/con Configuration Device Management
/oic/mon Monitoring Device Management
/oic/mnt Maintenance Device Management
CoAP (Constrained Application Protocol) . Реализация
Пример обмена сообщениями
CoAP (Constrained Application Protocol) . Прототип.Dev. board based on PIC18F67J60http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F67J60http://megadevices.com.ua/pic18f67j60-board/
8 bit microcontroller with integrated Ethernet128 kB ROM, использовано 28,5 kB3,8 kB RAM, использовано 1,2 kBCPU speed – 10,5 MIPS
Реализованы методы Discovery и GETК прототипу был подключен датчик DS18B20, возвращающий температуруДля работы с платой использовался плагин для Firefox – Copper (Cu)https://addons.mozilla.org/ru/firefox/addon/copper-270430/
SNMP (Simple Network Management Protocol) . Описание.
Протокол разрабатывался для контроля и управления сетевыми устройствамиОформлен в виде стандарта RFC 1157 в мае 1990 года, позже дополнялсяhttps://tools.ietf.org/html/rfc1157
На контролируемом устройстве запускается SNMP-AgentРесурсы описываются в иерархическом дереве MIB (Management Information Base)Работает поверх UDP (port 161, 162)Базовые методы GET, SET, WALK, TRAP
SNMP (Simple Network Management Protocol) . MIB.
Структура MIB (Management Information Base)
http://www.networkmanagementsoftware.com/snmp-tutorial-part-2-rounding-out-the-basics/
Современная структура содержит две ветки объектов:• 1.3.6.1.2 – mgmt – общая для всех SNMP-enabled устройств• 1.3.6.1.4 – private – определяется производителем по выделенному PrivateEnterprise Number, PEN для каждого производителя.
SNMP (Simple Network Management Protocol) . MIB.
Базовые свойства ветки mgmt (1.3.6.1.2):OID Name Type/Permission Description
1.3.6.1.2.1.1.1 sysDescr OctetString/rw Описание устройства1.3.6.1.2.1.1.2 sysObjectID OID/ro Идентификатор устройства1.3.6.1.2.1.1.3 sysUpTime TimeTicks/ro Время работы1.3.6.1.2.1.1.4 sysContact OctetString/rw Контакты администратора1.3.6.1.2.1.1.5 sysName OctetString/rw Имя устройства1.3.6.1.2.1.1.6 sysLocation OctetString/rw Расположение
Ветка производителя private (1.3.6.1.4) содержит отдельную ветку с кодомPrivate Enterprise Number для каждого отдельного производителя:http://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
9 – ciscoSystems (.1.3.6.1.4.1.9)63 - Apple Computer, Inc. (.1.3.6.1.4.1.63)171 – D-Link Systems, Inc. (.1.3.6.1.4.1.171)236 - Samsung Electronics Co., LTD. (.1.3.6.1.4.1.236)42908 - Megadevices (.1.3.6.1.4.1.42908)
Да, да, зарегистрировать свой Enterprise Number можно совершеннобесплатно через форму http://pen.iana.org/pen/PenApplication.pageПосле непродолжительной переписки с регистратором получим результат.
42908MegadevicesOleksandr Kovalenko
kovalenko.md&gmail.com
SNMP (Simple Network Management Protocol) . Реализация.
После получения PEN-кода, можно описывать структуру объектов своегоустройства. Пример для IP Thermostathttp://megadevices.com.ua/ip-thermostat/
OID Name Type/Perm. Description Default Value1.3.6.1.4.1.42908.2.109.1.2 mdMask OctetString/rw Маска сети 255.255.255.01.3.6.1.4.1.42908.2.109.1.3 mdGateway OctetString/rw Адрес шлюза 192.168.1.11.3.6.1.4.1.42908.2.109.1.4 mdHostIP OctetString/rw Адрес станции NMS 192.168.1.11.3.6.1.4.1.42908.2.109.1.5 mdCommunity OctetString/rw Community string megadevices1.3.6.1.4.1.42908.2.109.1.6 mdUseTrap Integer/rw Разрешить отправку SNMP-Trap 0 - нет1.3.6.1.4.1.42908.2.109.1.7 mdUseDHCP Integer/rw ИспользоватьDHCP 1 - да1.3.6.1.4.1.42908.2.109.1.8 mdLeaseStatus Integer/ro Время аренды адреса1.3.6.1.4.1.42908.2.109.1.9 mdUseSecond Integer/rw Разрешить отправку данных 0 - нет1.3.6.1.4.1.42908.2.109.1.10 mdSecondIP OctetString/rw Адрес narodmon.ru 94.19.113.2211.3.6.1.4.1.42908.2.109.1.11 mdSecondInterval Integer/rw Интервал отправки, мин 31.3.6.1.4.1.42908.2.109.1.12 mdSecondPort Gauge/rw Порт narodmon.ru 82831.3.6.1.4.1.42908.2.109.2.1 mdOut1Set Integer/rw Управление/состояние реле 1 (пример)1.3.6.1.4.1.42908.2.109.3.1 mdTempStatus OctetString/rw Значение температуры +27,5 (пример)1.3.6.1.4.1.42908.2.109.3.2 mdTreshold1 OctetString/rw Первый порог температуры 101.3.6.1.4.1.42908.2.109.3.3 mdTreshold2 OctetString/rw Второй порог температуры 301.3.6.1.4.1.42908.2.109.4.1 mdSensorStatus OctetString/rw Состояние входов 1,1,1 (пример)
SNMP (Simple Network Management Protocol) . Стандартизация.
SNMP для IoT - включение в стандарт отдельной ветки для свойств IoTустройств.
Ветка 1.3.6.1.6 для Internet of Things. Позволяющая описывать один и тотже объект в устройствах разных производителей :
1.3.6.1.6.1.xxx.nn.y.z, гдеxxx – superclass: 1 – smarthome, 2 – smartcar, 3 – smartcity etc.nn – class of devices: 1 – lamp, 2 – thermostat, 3 – conditioner etc.y,z – parameters.
Пример: snmp set для ID 1.3.6.1.6.1.1.1.1.0 со значением 60 установитяркость лампы в 60%. Значение 0 выключит лампу.
ID для всех ламп должен быть одинаковым и не зависящим отпроизводителя лампы.
SNMP (Simple Network Management Protocol) . Стандартизация.
Процесс стандартизации может выглядеть так:
1. Идея. IoT RGB лампа2. Проверка ветки IoT (1.3.6.1.6), свойство color отсутствует.
3. Производство лампы, использование приватной ветки 42908-Megadevices
4. Анонс, реклама IoT RGB лампы от Megadevices5. Подача заявки на стандартизацию нового свойства color6. Фаза поддержки, предоставление MIB для разработчиков приложений7. Получение подтверждения. Новое свойство включено в IoT ветку
8. Обновление прошивки в своих устройствах для нового свойства9. Другие производители используют стандартный идентификатор в своих лампах.
Object ID Name Description1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness
Object ID Name Description1.3.6.1.4.1.42908.5.3.1 color Define color of light
Object ID Name Description1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness1.3.6.1.6.1.1.1.2.0 color Define color of light
Полезные ссылки
Сайт конференции IoT Conf UAhttp://conf.iotua.org/
MQTT Specification v.3.1http://mqtt.org/2010/08/mqtt-v3-1-specification-available
Open Interconnect Consortium Specificationhttp://openinterconnect.org/developer-resources/specs/
Проект IoTivityhttps://www.iotivity.org/
Сайт регистратора IANA (Internet Assigned Numbers Authority)http://www.iana.org
Megadevices. Mega-устройства на micro-контроллерахhttp://megadevices.com.ua/https://www.facebook.com/megadevices/
Народный мониторинг. Сервис для визуализации данных с IoT устройствhttp://narodmon.ru/
Just for fun – IT Museum. Музей ретро компьютеров, гаджетов и игровых приставокhttps://www.instagram.com/itmuseum/https://www.facebook.com/itmuseum/