Використання протоколу MQTT з Raspberry Pi

Характеристика протоколу MQTT: історія створення, можливості і методи. Загальний формат повідомлення та принцип роботи протоколу. Переваги MQTT. Бездротова комунікація між Raspberry Pi через брокера/клієнта MQTT. Обмін даними Raspberry Pi MQTT з Python.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык украинский
Дата добавления 10.04.2020
Размер файла 712,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Використання протоколу MQTT з Raspberry Pi

Вступ

протокол mott комунікація raspberry

Актуальність теми полягає в тому, що протокол Message Queuing Telemetry Transport (MQTT) використовується протягом багатьох років, але зараз він особливо актуальний завдяки вибуховому зросту IoT: і споживчі, і промислові пристрої впроваджують розподілені мережі й граничні обчислення (edge computing), а пристрої з постійною трансляцією даних стають частиною повсякденного життя. Це означає, що легкі, відкриті та доступні протоколи з часом стануть ще важливіше.

Метою даної роботи є концептуальне занурення в протокол MQTT: як він працює і як використовується зараз з Raspberry Pi; реалізація обміну даними Raspberry Pi MQTT з Python.

У зв'язку з метою завданнями є:

o вивчення літератури з теми даної роботи;

o формулювання основних термінів, що стосуються теми даної роботи;

o встановлення брокера MQTT на Raspberry Pi;

o виконати обмін даними Raspberry Pi MQTT з Python.

Предмет дослідження: метод реалізації протоколу MQTT з Raspberry Pi.

Реферат викладено на 17 сторінках друкованого тексту, складається з вступу, двох частин, висновку та списку використаних джерел, що включає 5 найменувань. У вступі обґрунтована актуальність теми, сформульовані: мета та завдання дослідження. В першій частині розглянуто теоретичні відомості протоколу MQTT: історія створення, можливості та методи, загальний формат повідомлення та принцип роботи протоколу MQTT. В другій частині: встановлення брокера MQTT на Raspberry Pi, тестування Mosquitto та написання коду для обміну даними Raspberry Pi MQTT з Python.

1. Теоретичні відомості протоколу MQTT

Що таке MQTT?

MQTT (англ. Message Queue Telemetry Transport) -- це легкий, компактний і відкритий протокол обміну даними створений для передачі даних на віддалених локаціях, де потрібний невеликий розмір коду і є обмеження до пропускної здатності каналу.

Cпрощений мережевий протокол працює на TCP / IP. Використовується для обміну повідомленнями між пристроями за принципом видавець-передплатник.

Історія створення

Перша версія протоколу була розроблена доктором Енді Станфорд-Кларком (IBM) та Арлен Ніппер (Arcom) 1999 року і опублікована під роялті-фрі ліцензією. Специфікація MQTT 3.1.1 була стандартизована консорціумом OASIS 2014 року.

Можливості MQTT

· Простий у використанні. Протокол є програмним блоком без зайвої функціональності, що може бути легко вбудований в будь-яку складну систему.

· Зручний для більшості рішень з датчиками. Дає можливість пристроям виходити на зв'язок і публікувати повідомлення, які не були заздалегідь відомі або визначені.

· Легкий в адмініструванні.

· Низьке навантаження на канал зв'язку.

· Робота в умовах постійної втрати зв'язку або інших проблем на лінії.

· Немає обмежень на формат переданого контенту.

Методи MQTT

MQTT визначає методи (так звані «дієслова»), щоб вказати бажану дію, яка повинна виконуватися на ідентифікованому ресурсі. Чим є цей ресурс, будь то вже існуючі дані або дані, що генеруються динамічно, залежить від реалізації сервера. Часто ресурс відповідає файлу або результату виконання якогось файлу, розміщеного на сервері.

Connect. З'єднати: Чекає установки з'єднання з сервером.

Disconnect. Роз'єднати: Чекає доки клієнт MQTT закінчить будь-яку роботу, що має зробити, і доки роз'єднається TCP/IP сесія.

Subscribe. Підписатися: Чекає на завершення методу Subscribe чи UnSubscribe.

UnSubscribe. Відписатися: просить сервер відписати клієнта від одного або кількох тем.

Publish. Публікувати: негайно повертається в потік додатку після того, як передасть запит клієнту MQTT.

Загальний формат повідомлення та принцип роботи протоколу MQTT

На рисунку 1.1 представлений загальний формат повідомлень проколу MQTT. Повідомлення складається з двох заголовків:

· MQTT Fixed Header - заголовок фіксованої довжини;

· Variable Length Header - заголовок змінної довжини (в залежності від типу повідомлення);

· Variable Length Message Payload - поля корисного навантаження змінної довжини.

До заголовка фіксованої довжини входять такі поля:

· Message Type - тип повідомлення,

· DUP - прапор дублювання повідомлення,

· QoS Level - рівень якості обслуговування,

· Retain - спеціальний прапор збереження останнього прийнятого брокером повідомлення,

· Remaining Length - залишкова довжина,

Спрощений процес роботи протоколу MQTT:

Видавець передає повідомлення з певними даними (наприклад, інформація з датчиків вологості) на брокера, вказуючи при цьому тему (Topic), до якої ці дані відносяться (наприклад, "вологість").(див. рис. 1.2)

Брокер аналізує, які із передплатників мають підписку на певні теми, в даному випадку - на тему "вологість".

Передплатникам, які підписані на тему "вологість", брокером буде відправлено повідомлення з інформацією від датчиків вологості.

Таким чином, безліч передплатників можуть бути підписані на різноманітні теми та в залежності від цих підписок отримувати необхідну їм інформацію, не спілкуючись з видавцем безпосередньо. На рис. 1.2 зображено схему передачі інформації за принципом "видавець-передплатник".

Рисунок 1.2 Принцип роботи протоколу MQTT

Переваги MQTT

Мережа MQTT (Message Queue Telemetry Transport), через властивості своєї структури, має низку переваг перед мережами інших видів для IoT:

o Можливість використовувати будь-які форми фізичного зв'язку між станціями та вузлами.

o Якість і швидкість з'єднання не має особливого значення -- поспішати при передачі нікуди, а оскільки вона періодична -- навіть регулярна втрата контакту не впливає на доставлення інформації.

o Періодичність завантаження \ вивантаження інформації дає можливість працювати асинхронно. Тобто не перебувати постійно в єдиній мережі для обміну.

o Маленькі розміри пакетів.

o Висока швидкість, як обміну, так і обробки, яка практично не залежить від властивостей самого каналу.

o Використання TCP/IP -- дає можливість розподілення трафіку по пріоритетах обробки інформації, що відправляється фізичними пристроями брокера, які закладено в QoS. Ця технологія призначена в першу чергу гарантовано забезпечити контакт між вузлами мережі, навіть якщо виникли своєрідні «затори».

o Конфігурація та адресація пристроїв динамічна.

o Здатний працювати через шлюзи NAT, які здійснюють перетворення мережевої адреси.

Рисунок 1.3 Один із видів безпеки

Окремо варто згадати захист переданої інформації, характерну для цієї мережі:

o ідентифікація через логін \ пароль;

o з'єднання з сервером через механізми TLS і SSL;

o контроль можливості підключення пристрою через ідентифікатор або MAC-адресу.

2. Бездротова комунікація між Raspberry Pi через брокера / клієнта MQTT

Рисунок 2.1 Один з вбудованих контролерів - основа більшості апаратури мережі

Будь-який мікрокомп'ютер може використовуватися в якості брокера, аби його можливостей було досить для підняття сервера TCP \ IP html і розуміння протоколів MQTT. Оскільки підпрограми роботи з мережею уніфіковані з можливостями ОС linux, то буде досить для цього і Raspberry PI.

Що стосується датчиків і контролерів (видавців і передплатників, в термінології мережі), що працюють через MQTT, то на ринку їх представлено дуже багато. Це прилади на основі мікросхем RAK473, RAK476, SIM7020C, ESP8266 та інших.

Їх характерна риса - наявність модулів (найчастіше WIFI) зв'язку і самої управляючої логіки з додатковими фізичними каналами. Причому установку параметрів, перепрограмування й інші сервісні функції по ним можна здійснювати через web-інтерфейс, підключаючись до вже прошитого чіпу.

Встановлення брокера MQTT на Raspberry Pi та тестування Mosquitto

Щоб налаштувати нашу систему MQTT, нам потрібен брокер. Для Raspberry Pi, ми будемо використовувати «Mosquitto». Перш ніж ми встановимо його, потрібно оновити наш Raspberry Pi.

sudo apt-get update

sudo apt-get upgrade

Тепер встановлюємо брокер «Mosquitto» і клієнта MQTT на Raspberry Pi, наприклад, для тестування системи:

sudo apt-get install mosquito

sudo apt-get sudo mosquitto-clients

Після інсталяції сервер «Mosquitto» запускається автоматично.

Відкриваємо передплатника в каналі «test_channel» в очікуванні повідомлень:

mosquitto_sub -h localhost -v -t test_channel

Канал виступає в ролі частоти. Наприклад, різні дані можуть відправлятися по різних каналах (наприклад, температура, вологість, яскравість і т. д.).

Для того, щоб просто передавати дані, ми можемо використовувати один і той же Raspberry Pi (потрібно відкрити новий термінал / з'єднання SSH) або відправити дані з іншого Pi. Якщо використовуємо той же Raspberry Pi, то ми відправляємо тестове повідомлення (як видавця) по тому ж каналу:

mosquitto_pub -h localhost -t test_channel -m "Hello

Raspberry Pi"

В іншому випадку потрібно вказати внутрішню IP-адресу (наприклад, 192.168.1.5) одержувача замість "localhost".

Обмін даними Raspberry Pi MQTT з Python

Спілкування дуже просте, як ми вже побачили. Щоб ми могли користуватися цим, потрібно зробити його доступним для Python. Для цього ми спочатку встановлюємо бібліотеку через менеджера пакетів Python (для Python3 також використовуйте pip3):

sudo pip install paho-mqtt

У якості альтернативних варіантів (наприклад, якщо пакет неправильно встановлений), його можна встановити вручну:

Git clone https://github.com/eclipse/paho.mqtt.python.git

cd paho.mqtt.python

python setup.py install

Тепер в першому вікні терміналу створюємо файл передплатника.

sudo nano mqtt_subscriber.py

Цей код вставляємо в файл передплатника.

import paho.mqtt.client as mqtt

MQTT_SERVER = "localhost"

MQTT_PATH = "test_channel"

# Зворотний виклик, коли клієнт отримує з сервера

відповідь про з'єднання.

def on_connect(client, userdata, flags, rc):

print("Connected with result code "+str(rc))

# on_connect () означає, що якщо ми втратимо з'єднання

і знову під'єднаємось, підписки будуть відновлені.

client.subscribe(MQTT_PATH)

# Зворотний дзвінок, коли з сервера надходить

повідомлення PUBLISH.

def on_message(client, userdata, msg):

print(msg.topic+" "+str(msg.payload))

# більше зворотних дзвінків

client = mqtt.Client()

client.on_connect = on_connect

client.on_message = on_message

client.connect(MQTT_SERVER, 1883, 60)

# Блокування виклику, який обробляє мережевий трафік,

розсилає зворотні дзвінки та обробляє повторно

з'єднання.

# Доступні інші функції циклу loop * (), які надають

потоковий інтерфейс та ручний інтерфейс.

client.loop_forever()

Після збереження та закриття (CTRL + O, CTRL + X) запускаємо цей код, використовуючи:

sudo python mqtt_subscriber.py

Налаштування нашого передплатника завершене. Щоб налаштувати видавця, відправляємо команду, як зазвичай, за допомогою Shell Command, або ми також створюємо відправника / видавця Python. Відкриваємо нове вікно терміналу і створюємо файл видавця, використовуючи:

sudo nano mqtt_publisher.py

Наведений нижче код прописуємо в файлі видавця.

import paho.mqtt.publish as publish

MQTT_SERVER = "localhost"

MQTT_PATH = "test_channel"

publish.single(MQTT_PATH,"Hello World!",

hostname=MQTT_SERVER)

І запускаємо його, використовуючи:

sudo python mqtt_publisher.py

Отже, ми успішно відправили дані від Pi за допомогою MQTT Server.

Висновок

Отже, підбиваючи підсумки, можна констатувати наступне, MQTT -- це протокол обміну повідомленнями за шаблоном видавець-передплатник (pub / sub). Первинну версію в 1999 році опублікували Енді Стенфорд-Кларк з IBM і Арлен Ніппер з Cirrus Link. Вони розглядали MQTT як спосіб підтримки зв'язку між машинами в мережах з обмеженою пропускною спроможністю або непередбачуваним зв'язком. Одним з перших варіантів його використання було забезпечення контакту фрагментів нафтопроводу один з одним і з центральними ланками через супутники.

З урахуванням суворих умов експлуатації протокол зроблений маленьким і легким. Він ідеальний для пристроїв слабкої потужності та з обмеженим часом автономної роботи. До їх числа зараз відносяться смартфони та число датчиків, що постійно зростає.

Таким чином, MQTT став протоколом для потокової передачі даних між пристроями з обмеженою потужністю CPU і / або часом автономної роботи, а також для мереж з дорогою або низькою пропускною здатністю, непередбачуваною стабільністю або високою затримкою. Саме тому MQTT відомий як ідеальний транспорт для IoT. Він побудований на протоколі TCP / IP, але є відгалуження MQTT-SN для роботи по Bluetooth, UDP, ZigBee і в інших мережах IoT, відмінних від TCP / IP.

Мінімальний обсяг службової інформації, наявність класів обслуговування та ієрархічна структура є незаперечними перевагами протоколу MQTT, що підтверджується великою різноманітністю як клієнтського, так і серверного програмного забезпечення, в тому числі відкритого ПЗ. Однак архітектура "видавець-передплатник" висуває вимоги до нового мережевого об'єкта -- брокера, який по суті своїй забезпечує маршрутизацію інформації для користувачів. Таким чином, ми спостерігаємо зрушення парадигми від маршрутизації на транспортному рівні до маршрутизації на прикладному.

MQTT -- не єдиний у своєму роді протокол обміну повідомленнями

pub / sub в реальному часі, але він вже набув широкого поширення в різних середовищах, які залежать від зв'язку між машинами. Серед його однолітків: Web Application Messaging Protocol, Streaming Text-Oriented Messaging Protocol і Alternative Message Queueing Protocol.

MQTT -- логічний вибір для розробників, які хочуть створювати додатки з надійною функціональністю і широкою сумісністю з підключеними до інтернету пристроями та додатками, включаючи браузери, смартфони й пристрої IoT.

Список літератури

протокол mott комунікація raspberry

1. Bryan Boyd et al. Building Real-time Mobile Solutions with MQTT and IBM MessageSight. IBM Redbooks, 2014

2. Jeff Mesnil. Mobile and Web Messaging. O'Reilly Media, Inc., 2014 ISBN 978-1-4919-4480-6 -- II. MQTT

3. Вікіпедія [Електронний ресурс] - Режим доступу до ресурсу: https://uk.wikipedia.org/wiki/MQTT

4. Raspberry Pi tutorials [Електронний ресурс] - Режим доступу до ресурсу: https://tutorials-raspberrypi.com/raspberry-pi-mqtt-broker-client-wireless-communication/

5. IoT Design Pro [Електронний ресурс] - Режим доступу до ресурсу: https://iotdesignpro.com/projects/how-to-connect-raspberry-pi-with-mqtt

Размещено на Allbest.ru


Подобные документы

  • Распространение одноплатных компьютеров. Основные преимущества материнской платы ATX по сравнению с SBC. Поддержка ЖК-панелей. Оптимизированные свободные операционные системы. Технические характеристики Raspberry Pi, Oval Elephant, Waysmall Silverlode.

    курсовая работа [1,9 M], добавлен 01.04.2013

  • Разработка программно-аппаратного модуля, предназначающегося для сбора и анализа собранных данных в беспроводной сенсорной сети. Изготовление макета устройства. Внесение собираемых данных в базу. Расположение протокола MQTT в модели OSI приложения.

    дипломная работа [3,9 M], добавлен 18.11.2017

  • Сутність понять "криптологія", "криптографія" і "криптоаналіз"; огляд існуючих алгоритмів криптографічних систем. Аналіз протоколу мережевої аутентифікації Kerberos, його властивості, безпека; розробка і реалізація програмного продукту на базі протоколу.

    дипломная работа [1,8 M], добавлен 09.06.2013

  • Ведення протоколу роботи комп’ютера. Розробка програми для створення списку розширень файлів і занесення часу і дати доступу до них на мові програмування Асемблер. Виклик переривання 21h код-функції та занесення до регістрів. Алгоритм та лістинг програми.

    курсовая работа [14,1 K], добавлен 08.08.2009

  • Стандартизація опису мережних специфікацій та технологій організації взаємодії пристроїв у мережі. Характеристика та призначення фізичного рівня еталонної моделі OSI. Характеристика протоколу ІСМР, обмін керуючими повідомленнями, повідомлення про помилки.

    контрольная работа [32,6 K], добавлен 23.10.2009

  • Інтернет пейджер типу ICQ: можливості, специфікація протоколу, комунікація між сервером та клієнтом. Загальний вигляд алгоритму додатка сервера. Вибір мови та середовища програмування. Потокові та дейтаграмні сокети. Бібліотеки, використані в програмі.

    курсовая работа [2,0 M], добавлен 06.08.2013

  • Міжрівневі взаємодії - передача даних по мережі з одного місця в інше. Характеристика та призначення протоколу ARP. Визначення фізичної адреси локального та віддаленного вузла. Взаємодія мережних пристроїв через фізичні адреси. Способи визначення адрес.

    контрольная работа [18,2 K], добавлен 20.09.2009

  • Загальна характеристика існуючих методів обміну даними між компонентами MS Office, їх властивості та напрямки використання. Формат даних, що вставляються з буфера обміну. Відмінності у властивостях створених, впроваджених та вставлених даних.

    курсовая работа [190,2 K], добавлен 07.02.2003

  • Установка VirtualBox. Создание двух виртуальных машин с операционной системой CentOS. Настройка сетевых интерфейсов в режиме bridgeс и хоста как маршрутизатора для сети. Установка www-сервера. Настройка динамической маршрутизации по протоколу RIP.

    курсовая работа [807,5 K], добавлен 14.07.2012

  • Аутентификация в Windows 2000. Преимущества аутентификации по протоколу Kerberos. Стандарты аутентификации по протоколу Kerberos. Расширения протокола и его обзор. Управление ключами, сеансовые билеты. Аутентификация за пределами домена, подпротоколы.

    курсовая работа [369,2 K], добавлен 17.12.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.