22
IOT протоколы Иван Грохотков HackIOT, 13 ноября 2014

IoT protocols @hackIoT

Embed Size (px)

DESCRIPTION

Описание протоколов интернета вещей c первой встречи сообщества разработчиков интернета вещей в Петербурге http://hackiot.ru

Citation preview

Page 1: IoT protocols @hackIoT

IOT протоколыИван Грохотков

HackIOT, 13 ноября 2014

Page 2: IoT protocols @hackIoT

HTTP

1. Поверх TCP

2. Ресурсы с URI

3. REST

4. Согласование Content-Type

2

Page 3: IoT protocols @hackIoT

HTTPAn HTTP Request

See RFC2616 - Hypertext Transfer Protocol v1.1

CoRE - Constrained RESTful Environments

Page 4: IoT protocols @hackIoT

COAP

1. Поверх UDP

2. Короткие заголовки

как и у HTTP:

3. Ресурсы с URI, REST

4. Согласование Content-Type

4

Page 5: IoT protocols @hackIoT

COAPNormal Response

Bits and bytes... CLIENT SERVER! | |! | ----- CON [0x7d34] GET /temperature ------> |! | |!

0 1 2 3! 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+! | 1 | 0 | 1 | GET = 1 | MID=0x7d34 |! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+! | 9 | 11 | "temperature" (11 B) ...! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+!

CLIENT SERVER! | |! | <-------- ACK [0x7d34] 2.05 Content --------- |! | |!

0 1 2 3! 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+! | 1 | 2 | 0 | 2.05=69 | MID=0x7d34 |! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+! | "22.3 C" (6 B) ...! +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Запрос и подтверждение

Request Examples

Piggy-backed Response

Confirmable Request

Non-confirmable Request

Dealing with Packet Loss

Page 6: IoT protocols @hackIoT

COAP

1. Список ресурсов/.well-known/core

2. Наблюдение

3. Передача блоков

Особенности

6

Page 7: IoT protocols @hackIoT

COAPЗапрос и подтверждениеObservation

See draft-ietf-core-observe

Block transfer

See draft-ietf-core-block

Page 8: IoT protocols @hackIoT

COAP

1. SMCP: uIP | BSD sockets https://github.com/darconeous/smcp

2. microcoap: Arduino | BSD sockets https://github.com/1248/microcoap

Библиотеки

8

Page 9: IoT protocols @hackIoT

MQTT

1. Поверх TCP

2. Клиенты подключаются к брокеру, publish/subscribe, topics

3. QoS

9

Page 10: IoT protocols @hackIoT

MQTTMQTT

Client 1

CONNECT

CONNACK

SUBSCRIBE topic=/light

SUBACKPUBLISH topic=/light

PUBACKPUBLISH topic=/light

PUBACK

MQTT Client 2

MQTT Broker

Page 11: IoT protocols @hackIoT

MQTT

1. Авторизация

2. Завещания

3. Сохранение последнего сообщения

Особенности

11

Page 12: IoT protocols @hackIoT

MQTT

1. Embedded MQTT from PahoLinux, mbed, Arduino http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.embedded-c.git/tree/MQTTClient

2. PubSubClientArduinohttps://github.com/knolleary/pubsubclient

Библиотеки

12

Page 13: IoT protocols @hackIoT

MQTT-SN

1. Поверх UDP

2. Topic indexing

13

Page 14: IoT protocols @hackIoT

Спасибо!

Page 15: IoT protocols @hackIoT

Модели(лишь несколько)

15

Page 16: IoT protocols @hackIoT

Датчик и облако

POST /temperature?value=42?uid=01abcdef

16

Page 17: IoT protocols @hackIoT

Датчик и облако

POST /temperature?value=42?uid=01abcdef

NAT16

Page 18: IoT protocols @hackIoT

Актуатор и облако

GET /power?uid=01abcdef

NAT

50, 55, 100, …

17

Page 19: IoT protocols @hackIoT

Датчики и актуаторы

NAT

18

Page 20: IoT protocols @hackIoT

Датчики и актуаторы

NAT

18

Page 21: IoT protocols @hackIoT

Спасибо!

Page 22: IoT protocols @hackIoT

github.com/igrr