Home Блог Значение MQTT для подключения устройств IoT к веб-приложениям

Значение MQTT для подключения устройств IoT к веб-приложениям

by
MQTT

Со всеми доступными протоколами обмена сообщениями может быть трудно выбрать только один. И с таким количеством вариантов слишком легко оказаться в ситуации, когда вы пробуете тот, который не работает для вас или вашей команды. Mqtt — это легкий протокол, для которого требуются только клиенты и брокеры, поэтому он идеально подходит для ситуаций, когда вы не хотите никаких хлопот. В этой статье мы рассмотрим, на что способен этот протокол и как он достигает этих целей!

Что такое MQTT?

Mqtt — это упрощенный протокол обмена сообщениями, для которого требуются только клиенты и брокеры. Он идеально подходит для ситуаций, когда вы не хотите хлопот и суеты, ведь от вас требуется так мало.

Что такое протокол обмена сообщениями?

Протокол обмена сообщениями — это набор правил, позволяющих приложениям на разных компьютерах обмениваться данными. Mqtt был специально разработан для Интернета вещей (IoT). С таким широким спектром других доступных протоколов может показаться странным создавать еще один для этой цели. Но, поскольку на это поле опирается так много устройств и сервисов, со временем мы, вероятно, будем видеть их все больше и больше!

Что хорошего в MQTT?

Mqtt действительно уникален, потому что он дает вам так много практически ничего. Вам не нужен выделенный сервер или сервер пересылки, как для многих других протоколов, что означает отсутствие проблем с инфраструктурой. Все, что вам нужно, это уже существующий брокер и любое оборудование с подключением к Интернету. Благодаря качеству своей работы и тому, насколько он легкий, этот протокол становится все более популярным. Поскольку это открытый исходный код и его можно использовать бесплатно, вы можете легко начать работу без каких-либо сборов или подписки. А благодаря поддержке брокера, встроенной в библиотеку MQTT для Arduino, мы рады видеть, какие замечательные продукты появятся на нашем пути.

Каковы особенности MQTT?

Mqtt — один из лучших примеров простого и легковесного протокола обмена сообщениями. Его основным преимуществом является простота использования — любое устройство с подключением к Интернету может воспользоваться преимуществами этого протокола. Но в этом протоколе есть нечто большее, чем просто простота использования. Давайте посмотрим, что еще вы можете ожидать от него!

Примеры использования MQTT

а. Устройства IoT на заводе, управляющие насосами и клапанами

б. Метеостанция с датчиком, отправляющим отчеты в базу данных в облаке.

в. Система сигнализации, которая сообщает, когда двери открываются или закрываются

д. Некоторые огни в офисе включаются при обнаружении движения

1. Что такое MQTT и каковы его особенности?

MQTT расшифровывается как Message Queuing Telemetry Transport, что может показаться сложным, но просто означает, что это способ для устройств IoT взаимодействовать друг с другом через Интернет. Он работает поверх TCP/IP, такого как HTTP, SMTP и т. д., но в отличие от HTTP, предназначенного для связи через Интернет, MQTT используется с устройствами, которые подключены друг к другу через сеть, обычно IP-сеть. Чаще всего он используется в IoT со встроенными устройствами с низким энергопотреблением, которые подключаются к таким вещам, как платы Raspberry Pi или Arduino.

2. Как это работает?

Это работает как электронная почта. Устройство IoT публикует сообщение в теме. Это как отправить электронное письмо кому-то, но вместо человека это название темы. Сообщение может содержать до 2 КБ данных и отправляется в виде пакета.

Второй подписчик MQTT прослушивает пакеты со своим уникальным идентификатором или идентификатором клиента. Затем он что-то делает с сообщением. Это похоже на то, как когда кто-то получает электронное письмо, он что-то с ним делает; прочитал, отправил куда-то еще и т.

MQTT имеет уровень качества обслуживания (QoS), что означает, что для сообщений могут быть разные уровни приоритета. Уровень QoS устанавливается клиентом, и каждый отправленный пакет имеет этот уровень приоритета.

3. Преимущества MQTT

Он легкий, работает на TCP/IP, меньше накладных расходов, чем HTTP.

Сообщения хранятся в очереди до тех пор, пока они не будут отправлены на устройство назначения.

Он имеет встроенную поддержку повторного подключения

Каждый клиент может иметь собственную конфигурацию безопасности для аутентификации и шифрования.

QoS позволяет различным типам сообщений иметь разные уровни приоритета.

4. Применение MQTT

Некоторые примеры того, как это используется в реальном мире, — это M2M Alliance, проект, целью которого является соединение «вещей» с безопасной платформой для передачи данных между устройствами. Другой пример использования — проект CEPH. Это облачная система хранения, которая может хранить и обмениваться файлами одновременно с несколькими пользователями. Он использует MQTT для защиты распределенного доступа путем шифрования данных, что позволяет передавать их между устройствами IoT с использованием различных шлюзов, не беспокоясь о безопасности данных.

5. Начало работы с MQTT

Первое, что нужно, это клиент MQTT; это приложение, которое отправляет и получает сообщения. У фонда Raspberry Pi есть руководство по началу работы с MQTT на вашем устройстве Pi. Существуют также другие доступные руководства, такие как это от Hackster, которое дает вам код для запуска на языке программирования Python.

Лучшие онлайн-курсы MQTT

  1. Освоение MQTT
  2. Основной протокол MQTT
  3. Разработать клиентское приложение MQTT для Android
  4. Мастер-класс по MQTT
  5. Освоение протокола MQTT: руководство от начального до продвинутого уровня
  6. Интернет вещей: MQTT с Adafruit, App Inventor и ESP8266
  7. MQTT Nodemcu (ESP8266) с Nodered, Wi-Fi и Bluetooth

TLS против SSL для создания брокера MQTT

Плюсы использования TLS:

-Безопасность: TLS обеспечивает безопасное соединение между клиентом и брокером. Это помогает защититься от атак «человек посередине» и прослушивания.

– Аутентификация: TLS обеспечивает аутентификацию брокера и клиента, помогая гарантировать, что только авторизованные клиенты могут подключаться к брокеру.

-Шифрование: TLS обеспечивает шифрование данных между клиентом и брокером, помогая защитить информацию от просмотра посторонними лицами.

Минусы использования TLS:

-Производительность: TLS может увеличить нагрузку на связь, что может снизить производительность.

-Сертификаты: чтобы использовать TLS, вам нужны сертификаты как для клиента, так и для брокера. Получить эти сертификаты может быть сложно, а их использование может быть дорогим, что может увеличить стоимость использования TLS.

Плюсы использования SSL:

-Безопасность: SSL обеспечивает безопасное соединение между клиентом и брокером, как и TLS. Это также помогает защититься от атак «человек посередине» и прослушивания.

-Сертификаты: поскольку SSL построен поверх TLS, вы можете использовать те же сертификаты для шифрования трафика.

Минусы использования SSL:

-Производительность: шифрование между клиентом и брокером увеличивает нагрузку на связь, что снижает производительность.

-Использование памяти: протокол SSL будет использовать больше памяти, чем другие протоколы, поскольку он поддерживает сеанс шифрования/дешифрования с брокером.

– Проблемы с версией: SSL — более старый протокол, и он не поддерживает некоторые функции, предоставляемые TLS (например, более новые шифры).

Как видите, и TLS, и SSL обеспечивают безопасность, аутентификацию и шифрование для связи между клиентами и брокерами; однако они делают это немного по-разному. Когда дело доходит до принятия решения о том, следует ли вам использовать TLS или SSL для вашего брокера MQTT, нет однозначного победителя, поскольку решение будет зависеть от того, что вам нужно от вашей инфраструктуры и сколько времени/денег вы можете потратить.

В заключение я бы сказал, что есть правильный ответ в зависимости от потребностей проекта. В этом случае лучше использовать TLS, так как он дает больше преимуществ, чем SSL.

5 главных причин использовать протокол MQTT в ваших IoT-проектах

MQTT — это протокол обмена сообщениями между машинами (M2M), разработанный для устройств с ограниченными ресурсами, который подключает устройства к облаку.

1. Он легкий и простой в использовании: MQTT — это протокол обмена сообщениями публикации/подписки, который разработан, чтобы быть легким и простым в использовании.

2. Он занимает мало места: MQTT использует около 1/10 пропускной способности HTTP, что делает его идеальным для приложений IoT с ограниченными сетевыми ресурсами.

3. Поддерживает QoS: MQTT поддерживает качество обслуживания (QoS), что гарантирует доставку сообщений с желаемой задержкой или качеством.

4. Он может работать в любой сети: MQTT — это кроссплатформенный протокол, который может работать в сетях Wi-Fi, Bluetooth с низким энергопотреблением (BLE) или сотовых сетях 2G/3G.

5. Он имеет несколько клиентских библиотек, доступных на многих языках программирования: есть клиентские библиотеки для C, C++, JavaScript, Arduino IDE, Python и Java.

Как настроить брокера MQTT с помощью контейнера Docker на вашем ПК или сервере VPS?

MQTT — это протокол обмена сообщениями между машинами (M2M)/IoT, разработанный как чрезвычайно легкий транспорт обмена сообщениями публикации/подписки. Это полезно для соединений с удаленными местами, где требуется небольшой объем кода и / или пропускная способность сети имеет большое значение.

В этой статье мы покажем вам, как настроить брокера MQTT с помощью контейнера Docker на вашем ПК или сервере VPS.

Docker — это механизм контейнеризации, который помогает вам легко развертывать приложения со всеми его зависимостями. Он обеспечивает согласованную среду на каждом хосте Docker, позволяет сэкономить время и повысить переносимость вашего кода между различными дистрибутивами Linux. Например, если какое-либо приложение зависит от большого количества системных библиотек или некоторых редких версий библиотек и, следовательно, не может быть легко переносимым, вы можете просто обернуть все это и развернуть как контейнер Docker.

1) Установка Docker для Windows/Mac

Docker доступен для пользователей Microsoft Windows и Mac OS X. Вы можете скачать соответствующую версию отсюда: https://docs.docker.com/docker-for-windows/install/.

2) Установка Docker-compose на ваш хост

Чтобы легко развернуть наш самодельный MQTT-брокер, мы будем использовать инструмент docker-compose. Он позволяет определять и запускать многоконтейнерные приложения Docker с помощью простого файла YAML. Вы можете узнать больше о docker-compose здесь: https://docs.docker.com/compose/.

Вы можете скачать инструмент создания докеров здесь: https://github.com/docker/compose/releases/. Как только это будет сделано, вы сможете запустить команду «docker-compose» в своем терминале и проверить ее версию или использовать любую из ее подкоманд.

Основная терминология Docker для этой статьи:

1) «Контейнер Docker» — это процесс, который запускается в фоновом режиме, когда вы запускаете образ с помощью команды запуска docker. Работающий экземпляр образа называется «контейнером» в связи с его созданием при сборке докера.

2) «Docker image» — шаблон только для чтения с инструкциями по созданию docker-контейнера. Он состоит из ряда слоев файловой системы, представляющих различные состояния конечного изображения, которое мы хотим создать.

3) Команда copy at docker build создает образ, читая его описание из Dockerfile в текущем рабочем каталоге, а затем выполняя соответствующую команду в новом слое поверх текущего образа.

4) «Тома» — это папки, которые позволяют вам сопоставлять локальные папки на вашем хост-компьютере с каталогами внутри ваших док-контейнеров. Это полезно, если, например, вы хотите сохранить некоторые данные о вашем контейнере или файлах конфигурации. Вы можете создать том, указав путь к папке из вашей хост-системы, используя docker run.

Файл YAML — это конфигурационный файл, который содержит информацию для подключения к внешней базе данных, серверу MQTT и т. д., а также информацию о том, как и какие контейнеры следует создавать. Мы создадим файл YAML для настройки нашего брокера в следующем разделе.

3) Создание файла YAML для настройки вашего брокера MQTT.

Файлы YAML обычно состоят из нескольких пар ключ-значение, которые соединяются двоеточиями (“:”). Вы можете узнать больше о YAML здесь: https://en.wikipedia.org/wiki/YAML#Syntax.

В нашем случае мы создадим файл YAML для настройки брокера MQTT следующим образом:

версия: “3”

В этом разделе YAML мы определяем имя контейнера как «homer-mqtt» и указываем образ, который следует использовать для его создания. В этом случае мы выберем образ «davidtgoldblatt/homer-mqtt» из Docker Hub отсюда: https://hub.docker.com/_/homer-mqtt/.

В нашем файле YAML мы также объявляем пару томов следующим образом:

тома:

– /var/run/docker.sock:/var/run/docker.sock

Эти тома позволят нам иметь постоянное хранилище для контейнера докеров, позволяя нашим настройкам сохраняться при перезагрузках и сбоях сервера. Вы можете узнать больше о томах здесь: https://docs.docker.com/engine/userguide/dockervolumes/.

Чтобы указать детали нашей базы данных, мы добавляем раздел «db_addresses» со следующими записями:

db_адреса:

– “host=172.17.0.2 port=3306 user=homer dbname=homer”

В приведенном выше примере мы указываем хост и порт для нашего экземпляра базы данных. Обратите внимание, что при указании пользователя необходимо добавить символ «@» перед именем пользователя. Это связано с тем, что в системах Unix имя пользователя состоит как из букв, так и из цифр. Если вы опустите это, Docker жалуется на такие ошибки:

вам нужно экранировать специальные символы, такие как @ или *

Чтобы указать учетные данные нашей базы данных, мы добавляем раздел «database_password» следующим образом:

пароль_базы_данных: “homerun1”

В приведенном выше примере вы должны использовать пароль по вашему выбору. Если вы хотите установить пароль базы данных в первый раз, вы можете ознакомиться с нашим руководством по созданию нового пользователя root без пароля здесь: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user .html

Чтобы указать детали нашего сервера MQTT, мы добавляем раздел «mqtt_server» со следующими записями:

mqtt_сервер:

– имя: mqtt хост: 172.17.0.1 порт: 8883 имя пользователя: “homerun” пароль: “homerun1”

В приведенном выше примере мы запускаем брокер на порту 8883 и используем имя пользователя «homerun» и пароль «homerun1», которые мы создали в нашей базе данных.

4) Запустите свой брокер MQTT с помощью Docker

На этом этапе мы создадим контейнер Docker из нашего файла YAML и запустим его.

Для этого перейдите в каталог, где у вас есть файл YAML, и запустите «docker-compose up» следующим образом:

$ docker-компоновать

Эта команда создаст новый контейнер докеров на основе описания в вашем файле YAML и запустит его.

Если вы хотите запустить это в фоновом режиме, вместо этого используйте «docker-compose up -d». Если вы хотите распечатать журналы вашего контейнера Docker, запустите «docker-compose logs mqttclient» следующим образом:

$ docker-compose журналы mqttclient

Вы также можете увидеть контейнер Docker в режиме реального времени, используя «docker-compose ps» следующим образом:

$ docker-compose ps

5) Запуск вашего MQTT-клиента с помощью Docker

На этом этапе мы создадим контейнер Docker из нашего файла YAML и запустим его.

Для этого перейдите в каталог, где у вас есть файл YAML, и запустите «docker-compose up» следующим образом:

$ docker-компоновать

Эта команда создаст новый контейнер докеров на основе описания в вашем файле YAML и запустит его.

Если вы хотите запустить это в фоновом режиме, вместо этого используйте «docker-compose up -d». Вы также можете увидеть контейнер Docker в режиме реального времени, используя «docker-compose ps» следующим образом:

$ docker-compose ps

6) Использование вашего MQTT-клиента с Docker

Теперь, когда наш файл YAML настроен, мы можем начать использовать наш клиент MQTT с Docker.

Для этого перейдите в каталог, где у вас есть файл YAML, и запустите «docker exec» следующим образом:

$ docker exec -it mqttclient /bin/bash

Теперь вы должны увидеть каталог с именем «/home/homerun» (который является домашним каталогом для нашего контейнера докеров), и вы должны находиться внутри этого каталога.

Теперь вы можете увидеть свои базы данных, набрав «mysql -uroot -proot» следующим образом:

$ mysql-uroot-proot

Вы должны увидеть все свои базы данных на экране. Вы можете увидеть, как создать нового пользователя root без пароля для экземпляра MySQL здесь: https://homer-mqtt.readthedocs.io/en/latest/configure_database_and_create_new_root_user.html

Чтобы запустить клиентскую команду MQTT в Docker, вам нужно ввести «sbin/mqtt» следующим образом:

$ sbin/mqtt -c /home/homerun/config.yaml

В приведенном выше примере мы указываем файл конфигурации с флагом -c, который считывает наши настройки MQTT из файла конфигурации, который мы создали в этом руководстве.

Чтобы проверить, запущен ли ваш клиент MQTT, вы можете использовать «docker-compose ps» следующим образом:

$ docker-compose ps

В приведенном выше примере наш клиент MQTT был успешно запущен. Теперь вы должны увидеть все свои базы данных на экране.

Чтобы запустить клиентскую команду MQTT в Docker, вам нужно ввести «sbin/mqtt» следующим образом:

$ sbin/mqtt -c /home/homerun/config.yaml

В приведенном выше примере мы указываем файл конфигурации с флагом -c, который считывает наши настройки MQTT из файла конфигурации, который мы создали в этом руководстве.

Чтобы проверить, запущен ли ваш клиент MQTT, вы можете использовать «docker-compose ps» следующим образом:

$ docker-compose ps

В приведенном выше примере наш клиент MQTT был успешно запущен. Теперь вы должны увидеть все свои базы данных на экране, и вы можете попробовать опубликовать несколько сообщений, чтобы проверить, все ли работает нормально:

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt publish -t ‘test’ -h 172.17.0.1 -m ‘привет, мир!’

$ docker exec -it mqttclient /bin/bash

$ sbin/mqtt подписаться -t ‘тест’ -h 172.17.0.1 -u mqttuser

7) Очистка вашего MQTT-клиента с помощью Docker

Чтобы остановить ваш док-контейнер, вам нужно запустить «docker-compose down» следующим образом:

$ docker-compose вниз

8) Очистка вашего MQTT-клиента с помощью Docker Volumes

Чтобы остановить создание базы данных mysql и пользователя mqtt, вы можете использовать флаг -v.

$ docker-compose вниз -v

Вы также можете очистить свою среду, удалив каталог, содержащий файл YAML.

База данных Mysql и пользователь mqtt успешно созданы! Они будут автоматически удалены при удалении контейнера докеров. Теперь вы можете выйти из этой оболочки, набрав «exit».

В этом руководстве мы увидели, как настроить клиент MQTT через контейнер Docker.

Заключение

MQTT — это протокол подключения между машинами (M2M) или «Интернет вещей». Он был разработан как чрезвычайно легкий транспорт обмена сообщениями публикации/подписки. MQTT полезен для подключения к облаку маломощных датчиков, носимых устройств и других крошечных устройств, подключенных к Интернету. Поскольку MQTT использует модель публикации/подписки, она идеально подходит для устройств, которым необходимо нечасто отправлять данные или где пропускная способность сети имеет большое значение.

Заинтересованы в разработке вашего решения MQTT? Связаться с нами!

You may also like

We have a big ambition: to make the world a better and peacefull place facilitating life with AI IoT technologies. Join us today to discover, learn, develop, grow and success. Contact us to get support and collaborate. Live better everywhere as you wish building with us!

IoT Worlds – All Right Reserved – 2024 

WP Radio
WP Radio
OFFLINE LIVE