Как internet of things си говорят чрез mqtt и софтуер с отворен...

Post on 16-Jan-2017

893 Views

Category:

Technology

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Как Internet of Things си говорят чрез MQTT и софтуер с отворен код?Леон Анавиleon.anavi@konsulko.com leon@anavi.org

Меню за деня

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

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

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

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

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

Internet of Things (IoT)

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

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

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

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

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

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

Комуникация

MQTT

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

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

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

MQTT

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

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

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

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

OSI Модел

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

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

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

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

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

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

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

MQTT TCP/IP портове

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

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

MQTT

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

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

MQTT операции

Connect

Disconnect

Subscribe

Unsubscribe

Publish

Пример

MQTTBroker

PC(MQTT client)

Smart Phone(MQTT client)

Sensor(MQTT client)

Publish

Subscribe

PublishPublish

Subscribe

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

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

MQTT Publish

Topic

Payload

QoS

Retain

"hello/1"

{ "temperature": 20 }

2

false

Пример

MQTT Quality of Service (QoS)

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

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

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

MQTT заглавия

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

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

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

home / #

Last Will & Testament (LWT)

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

MQTT Сигурност

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

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

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

Free and Open Source Software

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

Mosquitto

HiveMQ

Mosca

emqttd

VerneMQ

ActiveMQ

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

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/

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

При високи натоварвания се използва стратегия за създаване на мостове (bridges) между няколко 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

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/

Java

Python

JavaScript

GoLang

C

.Net (C#)

Android service

Embedded C/C++

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

Инсталация:

npm install mqtt --save

Пример:

Демо

Demo 1: Total game changer forInternet of Things ;)

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

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

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

Въпроси?

top related