Как Internet of Things си говорят чрез MQTT и софтуер с отворен...

31
Как Internet of Things си говорят чрез MQTT и софтуер с отворен код? Леон Анави [email protected] [email protected]

Transcript of Как Internet of Things си говорят чрез MQTT и софтуер с отворен...

Page 1: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?Леон Анави[email protected] [email protected]

Page 2: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Меню за деня

Общи приказки за Internet of Things

Суха теория за протокола MQTT

Open source MQTT брокери и клиенти

Неуспешни демонстрации

За десерт: трудни въпроси

Page 3: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Internet of Things (IoT)

Вградени устройства, свързани към Интернeт

Page 4: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Предизвикателства за IoT

Комуникация в реално време

Консумация и работа на батерии

Ниска цена за производство

Софтуер, който да е съвместим с устройства с ограничен хардуер

Page 5: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Комуникация

Page 6: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT

MQTT е съкращение от MQ Telemetry Transport

Съществува от 1999г

От 2013г започва процедура по създаване на стандарт към международния консорциум с нестопанска дейност OASIS

Page 7: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT

Лек протокол от типа publish/subscribe за комуникация между машини, изграден върху TCP/IP

Комуникация в реално време

Брокер, който да разпределя съобщенията между клиентите

Лесна имплементация и съществуващи open source библиотеки на много програмни езици

Page 8: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

OSI Модел

7. Приложен слойMQTT, HTTP, SMTP, SSH, Telnet и други

6. Представителен слойTSL, SSL и други

5. Сесиен слой

4. Транспортен слойTCP, UDP и други

3. Мрежов слойIP, ICMP, IGPM и други

2. Канален слой

1. Физически слой

Page 9: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT TCP/IP портове

Порт 1883 е резервиран за MQTT

Порт 8883 е резервиран за MQTT върху SSL

Page 10: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT

MQTT клиенти – софтуерни приложения, които се свързват към MQTT брокер. Могат да изпращат и да получават съобщения.

MQTT брокер – софтуер, които се изпълнява като демон и се грижи за разпределянето на съобщенията между клиентите.

Page 11: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT операции

Connect

Disconnect

Subscribe

Unsubscribe

Publish

Page 12: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Пример

MQTTBroker

PC(MQTT client)

Smart Phone(MQTT client)

Sensor(MQTT client)

Publish

Subscribe

PublishPublish

Subscribe

MQTT клиент се свързва с брокер и се абонира за дадена тема

Данни от сензор се изпращат по MQTT и брокерът ги доставя до заинтересуваните клиенти

Page 13: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT Publish

Topic

Payload

QoS

Retain

"hello/1"

{ "temperature": 20 }

2

false

Пример

Page 14: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT Quality of Service (QoS)

0 – съобщението ще бъде доставено най-много веднъж

1 – съобщението ще бъде доставено поне веднъж

2 – съобщението ще бъде доставено точно един единствен път

Page 15: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT заглавия

Примерно заглавие

home / kitchen / temperature Wildcards на едно ниво

home / + / temperature Wildcards на много нива

home / #

Page 16: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Last Will & Testament (LWT)

Завещание от МQTT клиент, което другите заинтересувани MQTT клиенти получават, ако връзката със завещаващия бъде прекъсната неочаквано.

Page 17: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT Сигурност

Възможност за криптиране на предаваните данни с TLS/SSL

Автентификация с потребителско име и парола

Авторизация с Access Control Lists (ACL)

Page 18: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Free and Open Source Software

Page 19: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT брокери с отворен код

Mosquitto

HiveMQ

Mosca

emqttd

VerneMQ

ActiveMQ

Page 20: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Mosquitto

MQTT брокер с отворен код, написан на програмния език C

Поддържа версии на MQTT протокола 3.1 и 3.1.1

Наличен за всички популярни GNU/Linux дистрибуции: Debian,Ubuntu, Fedora, RedHat Enterprise Linux, openSUSE, CentOS, ArchLinux, Slackware и други

Наличен също за Windows, FreeBSD и Mac

Проект на iot.eclipse.com

Page 21: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Web Socket

Функционалност, която позволява всеки модерен уеб браузър да се свързва към MQTT брокер чрез web socket

Web socket се поддържат от Mosquitto (след v1.4), HiveMQ (след v1.4), Mosca (след v0.13.0)

JavaScript имплементация на MQTT клиент с WebSocket се предоставя от open source проекта Paho:

https://www.eclipse.org/paho/clients/js/

Page 22: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Скалиране на MQTT брокери

При високи натоварвания се използва стратегия за създаване на мостове (bridges) между няколко MQTT брокера

По този начин може да се намали броя клиенти свързани към един брокер

Page 23: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Публични MQTT брокери

Server Broker Port Websocket

iot.eclipse.org Mosquitto 1883 / 8883 80 / 443

test.mosquitto.org Mosquitto 1883 / 8883 / 8884 8080 / 8081

test.mosca.io Mosca 1883 80

broker.hivemq.com HiveMQ 1883 8000

broker.mqttdashboard.com HiveMQ 1883 8000

cloudmqtt.com Mosquitto 1xxxx 3xxxx

Page 24: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

MQTT клиенти

Paho предоставя имплементации на MQTT клиенти на C/C++, Java, JavaScript, Python and C#

http://www.eclipse.org/paho/

Node.js библиотека за MQTT клиенти:

https://www.npmjs.com/package/mqtt

MQTT библиотека за Arduino:

http://pubsubclient.knolleary.net/

Page 25: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Java

Python

JavaScript

GoLang

C

.Net (C#)

Android service

Embedded C/C++

Page 26: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

За JavaScript и Node.js феновете...

Инсталация:

npm install mqtt --save

Пример:

Page 27: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Демо

Page 28: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Demo 1: Total game changer forInternet of Things ;)

Page 29: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Демо 2: Проклятието на демото

Не работи точно, когато ти трябва!

Page 30: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Демо 3: Терминалът

Page 31: Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?

Въпроси?