Комуникация между Internet Of Things чрез MQTT
-
Upload
leon-anavi -
Category
Technology
-
view
145 -
download
13
Transcript of Комуникация между Internet Of Things чрез MQTT
Комуникация между Internet Of Things чрез MQTTЛеон Анави[email protected] [email protected]
28 юли 2016
Съдържание
Internet of Things
MQTT
MQTT брокери с отворен код
MQTT клиенти с отворен код
Примери за употреба
28 юли 2016
Предизвикателства за IoT
Комуникация в реално време
Консумация и работа на батерии
Ниска цена за производство
Софтуер, който да е съвместим с устройства с ограничен хардуер
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
Пример
MQTTBroker
PC(MQTT client)
Smart Phone(MQTT client)
Sensor
Publish
Subscribe
PublishPublish
Subscribe
MQTT клиент се свързва с брокер и се абонира за дадена тема
Данни от сензор се изпращат по MQTT и брокерът ги доставя до заинтересуваните клиенти
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
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
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