Комуникация между Internet Of Things чрез MQTT

31
Комуникация между Internet Of Things чрез MQTT Леон Анави [email protected] [email protected]

Transcript of Комуникация между Internet Of Things чрез MQTT

Комуникация между Internet Of Things чрез MQTTЛеон Анави[email protected] [email protected]

28 юли 2016

Съдържание

Internet of Things

MQTT

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

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

Примери за употреба

28 юли 2016

Internet of Things (IoT)

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

28 юли 2016

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

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

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

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

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

28 юли 2016

Комуникация

28 юли 2016

MQTT

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

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

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

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

28 юли 2016

Историята на MQTT

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

Измислен е през 1999г

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

28 юли 2016

MQTT TCP/IP портове

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

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

28 юли 2016

MQTT

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

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

28 юли 2016

MQTT операции

Connect

Disconnect

Subscribe

Unsubscribe

Publish

28 юли 2016

Пример

MQTTBroker

PC(MQTT client)

Smart Phone(MQTT client)

Sensor

Publish

Subscribe

PublishPublish

Subscribe

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

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

28 юли 2016

MQTT Publish

Topic

Payload

QoS

Retain

"hello/1"

{ "temperature": 20 }

2

false

Example

28 юли 2016

MQTT заглавия

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

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

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

home / #

28 юли 2016

Last Will & Testament (LWT)

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

28 юли 2016

MQTT Сигурност

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

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

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

28 юли 2016

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

Mosquitto

HiveMQ

Mosca

emqttd

VerneMQ

ActiveMQ

28 юли 2016

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/

28 юли 2016

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

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

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

28 юли 2016

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

28 юли 2016

Публични 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

28 юли 2016

Най-популярни езици за вградени устройства към 2016*

* Според информация от IEEE Spectrum

28 юли 2016

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/

28 юли 2016

28 юли 2016

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

Инсталация:

npm install mqtt –save

Пример:

Хардуер

28 юли 2016

ESP8266

микроконтролер с WiFi

Поддържани програмни езици: C и Lua

Съвместим с Arduino IDE и неговите библиотеки

Разнообразни платки за разработчици на ниски цени (~ 2–6 USD за бройка)

28 юли 2016

Raspberry Pi

Компютър с размерите на кредитна карта

Версии: 0, 1, 2, 3

Broadcom ARM SoC

Много популярна платка

Raspbian GNU/Linux дистрибуция

Поддържа и много други дистрибуции

Слой meta-raspberrypi за създаване на собствена GNU/Linux distributions чрез Yocto/OE

28 юли 2016

A20/A10-OlinuXino

Open source hardware платка от Olimex

Allwinner A10/A20 SoC

Добра софтуерна поддръжка

Поддържа Android, Debian

и други популярни GNU/Linux дистрибуции

Слой meta-sunxi за създаване на GNU/Linux дистрибуции с Yocto/OE

Демо

28 юли 2016

Total game changer for the IoT ;)

28 юли 2016

Въпроси?