IoT Worlds
MQTT
БлогУмное устройство

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

Со всеми доступными протоколами обмена сообщениями может быть трудно выбрать только один. И с таким количеством вариантов слишком легко оказаться в ситуации, когда вы пробуете тот, который не работает для вас или вашей команды. 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? Связаться с нами!

Related Articles

WP Radio
WP Radio
OFFLINE LIVE