Skip to content

Clyckov34/MQTT-API-Relay

Repository files navigation

🚀 MQTT API Relay

Простая и эффективная утилита для передачи данных с MQTT-брокера на внешний HTTP API.

GitHub release License Go Status Last Commit Stars

Особенности:

  • Написана на языке Go, легковесная и производительная
  • Поддержка многопоточности для параллельной обработки сообщений
  • Не требует статического IP-адреса
  • Легко настраиваемый автозагрузчик через cron
  • Записывает Логи app.log
  • Оптимизация для работы на платформе WirenBoard 6+
  • Открытый исходный код и свободная лицензия

Зачем использовать:

  • Сбор и передача показаний датчиков в облачную инфраструктуру для умного дома и промышленного IoT
  • Простота установки и настройки

📂 Структура проекта

├── config.yaml                 # Конфигурации
├── topic.json                  # Список MQTT-топиков
├── app.log                     # Запись логов 
├── LICENSE                     # Лицензия
├── app                         # Бинарный файл приложения
└── install_autostart.sh        # Устанавливает автозапуск Cron

📥 Вариант 1: Быстрый старт

Скачайте последний релиз скрипта

unzip app.zip
cd app

# настроить конфиг
nano config.yaml

# настроить топик
nano topic.json

# Вариант 1: Запуск вручную
chmod +x app
./app

# Вариант 2: Автозапуск
sudo ./install_autostart.sh

🛠️ Вариант 2: Сборка

Платформа Команда
Wiren Board (ARMv7) GOOS=linux GOARCH=arm GOARM=7 go build -o app cmd/main.go
Linux (x64) go build -o app cmd/main.go

🔧 Настройка

1. Настройка конфигурации

Откройте файл config.yaml и укажите параметры:

    server:
    • ip - Адрес сервера куда будут отправляться показания датчиков POST
    • token - Токен клиента string
    • controller_id - Идентификатор контроллера integer
    mqtt
    • ip - IP Адрес Брокера string
    • port - IP PORT Брокера integer
    • login - Логин MQTT-сервера string Дополнительное поле
    • password - Пароль MQTT-сервера string Дополнительное поле
    • file_topic - Путь к файлу topic.json string

Пример файла окружения config.yaml

server:
  ip: "https://my_server.ru/post" 
  token: "my_token"
  controller_id: 12

mqtt:
  ip: "localhost"
  port: 1883
  login: ""
  password: ""
  file_topic: "./topic.json"

2. Настройка топиков

Файл topic.json содержит список топиков по которым будет подписываться:

{
  "topics": [
    {
      "path": "/devices/hwmon/controls/Board Temperature",
      "level_qos": 2
    },
    {
      "path": "/devices/hwmon/controls/CPU Temperature",
      "level_qos": 2
    }
  ]
}

📡 QoS уровни

Уровень Описание
QoS 0 Максимум один раз (без гарантии доставки)
QoS 1 Минимум один раз (возможны дубликаты)
QoS 2 Ровно один раз (самый надёжный, но медленный)

📤 Формат отправляемых данных

{
  "server": "https://httpbin.org/post",
  "client_id": "244235",
  "token": "Wefefor34rmcfree22svFFE",
  "controller_id": "000001",
  "sensor_readings": {
    "/devices/hwmon/controls/Board Temperature": 39.25,
    "/devices/hwmon/controls/CPU Temperature": 66.835,
    "/devices/sauna_floor_thermostat/controls/temperature": 31.9,
    "/devices/sauna_heater/controls/tempCurrent": 90.375,
    "/devices/sauna_heater_ssr/controls/tempSetpoint_ssr": 95,
    "/devices/wb-adc/controls/Vin": 50.26,
    "/devices/wb-m1w2_34/controls/External_Sensor_1": 13.3125,
    "/devices/wb-m1w2_34/controls/External_Sensor_2": 90.375,
    "/devices/wb-mr6cu_85/controls/MCU Temperature": 42.8,
    "/devices/wb-w1/controls/28-0000102149e4": 31.75,
    "/devices/wb-w1/controls/28-00001021f4a9": 32.187
  }
}

📌 Описание полей

  • server — адрес API сервера
  • client_id — идентификатор клиента
  • token — токен авторизации
  • controller_id — идентификатор устройства
  • sensor_readings — объект с данными датчиков
    • ключ — MQTT-топик
    • значение — текущее значение датчика

📜 Лицензия

MIT License

About

MQTT-API-Relay. Утилита для передачи данных с MQTT-брокера на внешний HTTP API

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors