Настройка телеметрии IoT через MQTT-брокер на VPS: мой путь с нуля

ГлавнаяНастройка телеметрии IoT через MQTT-брокер на VPS: мой путь с нуля

Содержание

Я никогда не думала, что буду возиться с “умными” штуками, но как-то раз на даче мне надоело гадать, работает ли отопление в доме зимой. Так родилась идея собрать простую систему мониторинга на основе ESP32, датчика температуры и VPS-сервера с MQTT-брокером. Ни облаков, ни подписок — только своё, с полным контролем.


Что вообще такое MQTT и зачем он IoT?

Если вы впервые слышите про MQTT — не пугайтесь. Это лёгкий протокол обмена сообщениями, идеально подходящий для устройств с низким энергопотреблением. Представьте себе WhatsApp для датчиков: одно устройство публикует сообщение (“температура 21.5°C”), другое подписано на эту тему и тут же получает данные. Всё это работает через MQTT-сервер — он же брокер.


Почему я выбрала VPS?

Бесплатные MQTT-серверы существуют, но они:

  • часто нестабильны;
  • имеют лимиты на соединения;
  • и главное — доверять им свои данные… ну, такое.

На VPS можно развернуть собственный MQTT-брокер (я использовала Mosquitto), защитить его паролем и шифрованием, подключить мониторинг через Grafana — и всё это без абонентки и в любое время суток. IoT server, который под контролем.


Как всё запускалось: по шагам

1. Установка MQTT-брокера (Mosquitto) на Ubuntu 22.04:
sudo apt update sudo apt install mosquitto mosquitto-clients sudo systemctl enable mosquitto
2. Настройка безопасности

Я добавила парольную защиту через

mosquitto_passwd
и включила TLS. Без этого MQTT легко слушать сниффером.

3. Получение данных

Мой ESP32 отправляет данные каждые 30 секунд в топик

iot/temperature
. Сообщения можно видеть так:

mosquitto_sub -h localhost -t "iot/#" -u "имя" -P "пароль"
4. Визуализация в Grafana через Telegraf + InfluxDB

Вот тут стало красиво. Прямо в браузере вижу график температуры за день, неделю, месяц. Если вдруг всё пропадает — значит, либо датчик лёг, либо что-то с брокером. В любом случае, я первая узнаю.


Полезные мелочи, которые выручали:

  • 🔧
    sudo journalctl -u mosquitto -f
    — помогает отлавливать ошибки подключения;
  • 🔐 Всегда включайте SSL — MQTT без шифрования = открытая книжка;
  • 🛑 Ограничьте доступ к порту 1883 (или 8883) через
    ufw
    , не пускайте всех подряд.

А как же нагрузка?

На VPS с 1 ядром и 1 ГБ ОЗУ брокер Mosquitto ест меньше 20 МБ RAM и почти не грузит процессор. Даже с десятком устройств нагрузка мизерная. MQTT — это не тяжёлый

grafana mqtt stack
, он работает даже на слабых VPS.


Итого: стоит ли оно того?

Если вы собираете IoT-систему — умный дом, погодную станцию, контроль температуры в серверной или даже ферму — запускать свой MQTT-сервер на VPS логичнее, чем лепить всё в облако. Получаете гибкость, безопасность и независимость от чужих API. А ещё — отличный повод разобраться в сетях и linux dns basic’ах.