Как организовать собственный MQTT для узлов Meshtastic
Интеграция MQTT с Meshtastic расширяет возможности автономной связи, соединяя удаленные сети. Это позволяет обмениваться глобальными сообщениями, обеспечивает резервное копирование при слабых сигналах сетки и гарантирует более быструю доставку сообщений через интернет. Идеально подходит для удаленных районов и чрезвычайных ситуаций.
Зачем использовать MQTT с Meshtastic?
Meshtastic — это автономное коммуникационное устройство, которое позволяет пользователям отправлять сообщения, не полагаясь на традиционный интернет или сотовые сети. Оно использует ячеистую сеть, позволяя сообщениям переходить от одного устройства к другому, пока они не достигнут адресата. Эта возможность неоценима для связи в отдаленных районах, во время походов на природу или в чрезвычайных ситуациях, когда обычная инфраструктура связи недоступна.
Однако, несмотря на то, что Meshtastic отлично справляется с локальной автономной связью, могут возникнуть ситуации, когда вам необходимо соединить группы, географически разделенные значительными расстояниями, например, в разных частях света. Кроме того, могут возникнуть ситуации, когда у вас нет прямого сигнала к mesh сети, но вы все равно хотите общаться. Именно здесь MQTT (Message Queuing Telemetry Transport) может сыграть решающую роль.
MQTT — это легкий протокол обмена сообщениями, предназначенный для сетей с низкой пропускной способностью, высокой задержкой или ненадежностью. Интегрировав MQTT с Meshtastic, вы можете создать шлюзовое устройство, которое будет служить мостом между двумя или более удаленными сетями Meshtastic, а также обеспечивать резервный путь связи, когда сигнал сетки слаб или недоступен. Вот как это работает в деталях:
- Локальная связь: Каждая группа, используя устройства Meshtastic, может свободно общаться в пределах своей локальной ячеистой сети. Это означает, что устройства группы A (расположенные в одной части света или в отдаленном районе) могут отправлять сообщения друг другу без подключения к Интернету или Wi-Fi. То же самое относится и к группе B, находящейся в другом месте.
- Шлюзовое устройство: Чтобы соединить эти две группы, в каждой из них в качестве шлюза может быть назначено устройство/ устройства Meshtastic (для резервирования в качестве шлюза может выступать более одного устройства). Это устройство-шлюз будет иметь дополнительное подключение к Интернету или локальной сети, способное запустить MQTT-брокер.
- Интеграция MQTT: Шлюзовое устройство в группе A подключается к MQTT-брокеру (серверу, который маршрутизирует сообщения между MQTT-клиентами). Этот брокер может быть размещен на локальном сервере или в облачном сервисе. Шлюзовое устройство публикует сообщения из локальной ячеистой сети в определенную тему MQTT. Аналогично, оно подписывается на другую тему для получения сообщений от брокера MQTT.
- Ретрансляция сообщений: Брокер MQTT выступает в качестве посредника. Когда шлюзовое устройство в группе A публикует сообщение в теме MQTT, брокер MQTT получает его, а затем пересылает шлюзовому устройству в группе B, и наоборот. Это позволяет передавать сообщения между двумя группами, несмотря на значительные расстояния, разделяющие их.
- Глобальная связь: Благодаря этой настройке группа A и группа B могут общаться друг с другом так, как будто они являются частью одной локальной сети. Использование MQTT в качестве моста обеспечивает эффективную передачу сообщений между двумя удаленными группами, используя сильные стороны как Meshtastic для локальной связи, так и MQTT для передачи сообщений на большие расстояния, создавая универсальную и мощную коммуникационную сеть.\
- Резервное соединение: В случаях, когда нет сигнала к сети сетки или сигнал сетки слабый, шлюз MQTT обеспечивает надежное резервное соединение. Это обеспечивает непрерывную связь, даже когда основная сеть сетки не доступна.
- Более быстрая передача сообщений: Сообщения MQTT могут передаваться гораздо быстрее через Интернет по сравнению с сетчатой сетью. В периоды, когда доступ к интернету доступен, MQTT может разгрузить часть трафика из сети сетки, обеспечивая более быструю и эффективную доставку сообщений.
Как установить MQTT с помощью Docker
1. Установите Docker
Сначала вам нужно установить Docker. Последние инструкции доступны на сайте Docker. Кроме того, вы можете использовать следующий скрипт для установки Docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
2. Создание базовой папки для конфигурации MQTT
Создайте каталог для хранения файлов конфигурации MQTT:
mkdir mqtt5
cd mqtt5
mkdir config
В этой установке будет храниться файл mosquitto.conf и файл pwfile для управления паролями.
3. Создание файла конфигурации Mosquitto
Создайте файл конфигурации Mosquitto:
nano config/mosquitto.conf
Добавьте следующее базовое содержимое конфигурации, включая поддержку WebSocket:
allow_anonymous false
listener 1883
listener 9001
protocol websockets
persistence true
password_file /mosquitto/config/pwfile
persistence_file mosquitto.db
persistence_location /mosquitto/data/
4. Создание файла паролей Mosquitto
Создайте пустой файл паролей:
touch config/pwfile
5. Создание файла Docker-Compose
Создайте файл docker-compose.yml со следующим содержимым:
nano config/mosquitto.conf
nano docker-compose.yaml
version: «3.7»
services:
mqtt5:
image: eclipse-mosquitto
container_name: mqtt5
ports:
— «1883:1883» # Default MQTT port
— «9001:9001» # MQTT port for WebSockets
volumes:
— ./config:/mosquitto/config:rw
— ./data:/mosquitto/data:rw
— ./log:/mosquitto/log:rw
restart: unless-stopped
6. Создание и запуск контейнера Docker для MQTT
Если у вас не установлен Docker Compose, вы можете установить его с помощью
sudo apt install docker-compose
Запустите Docker-контейнер:
sudo docker-compose up -d
Проверьте, запущен ли контейнер, и запишите его идентификатор:
sudo docker ps
7. Создайте пользователя/пароль в файле pwfile
Войдите в интерактивном режиме в контейнер MQTT:
sudo docker exec -it <container-id> sh
Создайте новый файл паролей и добавьте пользователя (он запросит пароль):
mosquitto_passwd -c /mosquitto/config/pwfile user1
Чтобы добавить дополнительных пользователей (без опции -c):
mosquitto_passwd /mosquitto/config/pwfile user2
Чтобы удалить пользователя:
mosquitto_passwd -D /mosquitto/config/pwfile <user-name-to-delete>
Выйти из контейнера:
exit
Перезапустите контейнер, чтобы применить изменения:
sudo docker restart <container-id>
Как установить MQTT на Windows
1. Загрузите и установите Mosquitto
Загрузите программу установки Mosquitto с официального сайта Mosquitto. Запустите программу установки и следуйте инструкциям на экране.
2. Настройте Mosquitto
После установки настройте Mosquitto:
- Перейдите в каталог установки Mosquitto (обычно C:\Program Files\Mosquitto).
- Откройте файл mosquitto.conf в текстовом редакторе и настройте его необходимым образом. Вы можете использовать те же параметры конфигурации, что и для Docker.
allow_anonymous false
listener 1883
listener 9001
protocol websockets
persistence true
password_file /mosquitto/config/pwfile
persistence_file mosquitto.db
persistence_location /mosquitto/data/
3. Запустите Mosquitto
Запустите Mosquitto с помощью командной строки:
cd «C:\Program Files\Mosquitto»
mosquitto -c mosquitto.conf
Как установить MQTT в Linux
1. Установите Mosquitto
Установите Mosquitto с помощью менеджера пакетов:
sudo apt install mosquitto
2. Настройте Mosquitto
Отредактируйте файл конфигурации Mosquitto:
sudo nano /etc/mosquitto/mosquitto.conf
Добавьте следующую конфигурацию:
bashCopy codeallow_anonymous false
listener 1883
listener 9001
protocol websockets
persistence true
password_file /etc/mosquitto/pwfile
persistence_file mosquitto.db
persistence_location /var/lib/mosquitto/
3. Создание файла паролей
Создайте файл паролей и добавьте пользователя:
touch /etc/mosquitto/pwfile
sudo mosquitto_passwd -c /etc/mosquitto/pwfile user1
4. Запустите Mosquitto
Запустите службу Mosquitto:
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
💡 Чтобы убедиться, что вы можете подключиться к MQTT-брокеру, вам нужно знать IP-адрес или доменное имя машины, на которой запущен брокер. Кроме того, вы должны убедиться, что необходимые порты MQTT открыты и доступны
Настройки для Meshtastic
После запуска брокера MQTT настройте узлы Meshtastic для подключения к нему:
Перейдите в раздел Настройки
Затем MQTT
Включено: Включите модуль MQTT.
MQTT Proxy Enabled: Пусть устройство использует сетевое соединение телефона для подключения к серверу MQTT.
Шифрование включено: Включите эту опцию, если вам нужны зашифрованные пакеты.
JSON Disabled: Для нашего использования мы отключим поддержку пакетов JSON для упрощения интеграции с другими системами.
Map Reporting Enabled: Периодически отправлять отчет о карте на MQTT-сервер.
Map Report Publish Interval: Установите периодичность публикации отчета о карте.
Map Report Position Precision: Установка точности для позиции в отчете карты.
Корневая тема: Установка корневой темы для организации сообщений MQTT. ' msh/mymesh
Адрес сервера: Задайте адрес вашего пользовательского MQTT-сервера.
Имя пользователя: имя пользователя для вашего MQTT-сервера.
Пароль: пароль для вашего MQTT-сервера.
TLS Enabled: TLS для безопасного соединения, если вы настроили SSL-сертификаты на своем сервере. В этом руководстве мы пока отключим его.
Вернитесь в настройки
Затем Каналы
Выберите канал, для которого вы хотите включить MQTT, Включить Uplink/Downlink.
Интеграция MQTT с Meshtastic значительно расширяет возможности и универсальность автономных сетей связи. Meshtastic отлично справляется с локальной связью через ячеистые сети, обеспечивая надежную и прочную доставку сообщений даже при отсутствии традиционного интернета или сотовой связи. Однако, используя MQTT, вы можете объединить географически разнесенные сети Meshtastic, обеспечив бесперебойную глобальную связь.
MQTT — это легкий и эффективный протокол обмена сообщениями, который хорошо работает в сетях с низкой пропускной способностью и высокой задержкой. Это делает его идеальным выбором для соединения сетей Meshtastic на больших расстояниях. Интеграция включает в себя установку шлюзового устройства в каждой локальной ячеистой сети, которое подключается к MQTT-брокеру, что позволяет эффективно передавать сообщения между удаленными группами.
Такая настройка не только расширяет зону действия сетей Meshtastic, но и обеспечивает надежный резервный путь связи, когда сигнал сети слаб или недоступен. Кроме того, MQTT может ускорить доставку сообщений в периоды, когда доступ к интернету доступен, разгружая часть трафика из сети сетки и обеспечивая более быструю связь.
Используя Meshtastic и MQTT, пользователи могут поддерживать непрерывную, надежную связь в локальных и глобальных масштабах, что делает это комбинированное решение бесценным для удаленных районов, отдыха на природе и чрезвычайных ситуаций. Эта интеграция эффективно объединяет сильные стороны локальных ячеистых сетей с глобальным охватом MQTT, создавая мощную и устойчивую коммуникационную сеть.