IOT протоколы Иван Грохотков HackIOT, 13 ноября 2014
Jul 08, 2015
IOT протоколыИван Грохотков
HackIOT, 13 ноября 2014
HTTP
1. Поверх TCP
2. Ресурсы с URI
3. REST
4. Согласование Content-Type
2
HTTPAn HTTP Request
See RFC2616 - Hypertext Transfer Protocol v1.1
CoRE - Constrained RESTful Environments
COAP
1. Поверх UDP
2. Короткие заголовки
как и у HTTP:
3. Ресурсы с URI, REST
4. Согласование Content-Type
4
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
COAP
1. Список ресурсов/.well-known/core
2. Наблюдение
3. Передача блоков
Особенности
6
COAPЗапрос и подтверждениеObservation
See draft-ietf-core-observe
Block transfer
See draft-ietf-core-block
COAP
1. SMCP: uIP | BSD sockets https://github.com/darconeous/smcp
2. microcoap: Arduino | BSD sockets https://github.com/1248/microcoap
Библиотеки
8
MQTT
1. Поверх TCP
2. Клиенты подключаются к брокеру, publish/subscribe, topics
3. QoS
9
MQTTMQTT
Client 1
CONNECT
CONNACK
SUBSCRIBE topic=/light
SUBACKPUBLISH topic=/light
PUBACKPUBLISH topic=/light
PUBACK
MQTT Client 2
MQTT Broker
MQTT
1. Авторизация
2. Завещания
3. Сохранение последнего сообщения
Особенности
11
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
MQTT-SN
1. Поверх UDP
2. Topic indexing
13
Спасибо!
Модели(лишь несколько)
15
Датчик и облако
POST /temperature?value=42?uid=01abcdef
16
Датчик и облако
POST /temperature?value=42?uid=01abcdef
NAT16
Актуатор и облако
GET /power?uid=01abcdef
NAT
50, 55, 100, …
17
Датчики и актуаторы
NAT
18
Датчики и актуаторы
NAT
18
Спасибо!
github.com/igrr