Александр Гутин. Процессоры Baikal — платформа безопасных отечественных ИТ-ре...
IoT Protocols #iotconfua
1. IoT Conf UA 2016
Стек протоколов для IoT.
Применение SNMP в IoT проектах
Александр Коваленко
kovalenko.md@gmail.com
2. Тезисы
• Открытые стандарты в мире IoT.
• Обзор стеков протоколов для IoT
• (MQTT, CoAP, SNMP).
• Применение SNMP в IoT проектах.
• Описание свойств IoT-устройства на примере термостата
• Демонстрация работы термостата.
4. Проблема стандартизации. Новый вендор – новый протокол.
Производители IoT решений используют проприетарные
протоколы, что приводит к следующим проблемам:
• Нет унифицированного стека протоколов
• Проблемы безопасности
• Нет M2M взаимодействия (machine-to-machine)
• Сложность интеграции в единую экосистему
Решение – использование открытых
протоколов и стандартизация
5. Обзор стеков протоколов для IoT
http://embedded-computing.com/articles/internet-things-requirements-protocols/
6. 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/+/temperature
https://eclipse.org/community/eclipse_newsletter/2014/february/article2.php
7. 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 для ограничения доступа к
определенным ресурсам
8. CoAP (Constrained Application Protocol) . Реализация
CoAP взят за основу в проекте IoTivity,
разрабатываемом Open Interconnect
Consortium .
23 декабря 2015 года консорциум опубликовал
спецификацию OIC v.1.0, описывающую в том
числе и унифицированный формат
именования ресурсов IoT устройства.
http://openinterconnect.org/developer-resources/specs/
9. 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
11. CoAP (Constrained Application Protocol) . Прототип.
Dev. board based on PIC18F67J60
http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F67J60
http://megadevices.com.ua/pic18f67j60-board/
8 bit microcontroller with integrated Ethernet
128 kB ROM, использовано 28,5 kB
3,8 kB RAM, использовано 1,2 kB
CPU speed – 10,5 MIPS
Реализованы методы Discovery и GET
К прототипу был подключен датчик DS18B20,
возвращающий температуру
Для работы с платой использовался плагин для
Firefox – Copper (Cu)
https://addons.mozilla.org/ru/firefox/addon/copper-270430/
12. 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
13. 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 – определяется производителем по выделенному Private
Enterprise Number, PEN для каждого производителя.
14. 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
После непродолжительной переписки с регистратором получим результат.
42908
Megadevices
Oleksandr Kovalenko
kovalenko.md&gmail.com
15. SNMP (Simple Network Management Protocol) . Реализация.
После получения PEN-кода, можно описывать структуру объектов своего
устройства. Пример для IP Thermostat
http://megadevices.com.ua/ip-thermostat/
OID Name Type/Perm. Description Default Value
1.3.6.1.4.1.42908.2.109.1.2 mdMask OctetString/rw Маска сети 255.255.255.0
1.3.6.1.4.1.42908.2.109.1.3 mdGateway OctetString/rw Адрес шлюза 192.168.1.1
1.3.6.1.4.1.42908.2.109.1.4 mdHostIP OctetString/rw Адрес станции NMS 192.168.1.1
1.3.6.1.4.1.42908.2.109.1.5 mdCommunity OctetString/rw Community string megadevices
1.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.221
1.3.6.1.4.1.42908.2.109.1.11 mdSecondInterval Integer/rw Интервал отправки, мин 3
1.3.6.1.4.1.42908.2.109.1.12 mdSecondPort Gauge/rw Порт narodmon.ru 8283
1.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 Первый порог температуры 10
1.3.6.1.4.1.42908.2.109.3.3 mdTreshold2 OctetString/rw Второй порог температуры 30
1.3.6.1.4.1.42908.2.109.4.1 mdSensorStatus OctetString/rw Состояние входов 1,1,1 (пример)
16. 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 для всех ламп должен быть одинаковым и не зависящим от
производителя лампы.
17. SNMP (Simple Network Management Protocol) . Стандартизация.
Процесс стандартизации может выглядеть так:
1. Идея. IoT RGB лампа
2. Проверка ветки IoT (1.3.6.1.6), свойство color отсутствует.
3. Производство лампы, использование приватной ветки 42908-Megadevices
4. Анонс, реклама IoT RGB лампы от Megadevices
5. Подача заявки на стандартизацию нового свойства color
6. Фаза поддержки, предоставление MIB для разработчиков приложений
7. Получение подтверждения. Новое свойство включено в IoT ветку
8. Обновление прошивки в своих устройствах для нового свойства
9. Другие производители используют стандартный идентификатор в своих лампах.
Object ID Name Description
1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness
Object ID Name Description
1.3.6.1.4.1.42908.5.3.1 color Define color of light
Object ID Name Description
1.3.6.1.6.1.1.1.1.0 brightness 0 – off, 100 – max brightness
1.3.6.1.6.1.1.1.2.0 color Define color of light
18. Полезные ссылки
Сайт конференции IoT Conf UA
http://conf.iotua.org/
MQTT Specification v.3.1
http://mqtt.org/2010/08/mqtt-v3-1-specification-available
Open Interconnect Consortium Specification
http://openinterconnect.org/developer-resources/specs/
Проект IoTivity
https://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/