Skip to content

Clyckov34/MQTT-API-Relay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.env                  # Переменные окружения
├── topic.json                  # Список MQTT-топиков
├── app.log                     # Запись логов 
├── LICENSE                     # Лицензия
├── app                         # Бинарный файл приложения
└── install_autostart.sh        # Устанавливает автозапуск Cron

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

wget https://github.com/Clyckov34/MQTT-API-Relay/releases/download/app-2.4.0/app.zip
unzip app.zip
cd app

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

# настроить топик
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.env и укажите параметры:

  • SERVER - Адрес сервера куда будут отправляться показания датчиков string метод POST
  • CONTROLLER_ID - Идентификатор контроллера integer
  • CLIENT_ID - Идентификатор клиента integer
  • CLIENT_TOKEN - Токен клиента string
  • MQTT_SERVER - URL (IP) адрес MQTT cервера string
  • MQTT_PORT - Порт MQTT-сервера integer
  • MQTT_TOPIC_FILE - Путь к файлу topic.json string
  • MQTT_USERNAME - Логин MQTT-сервера string Дополнительное поле
  • MQTT_PASSWORD - Пароль MQTT-сервера string Дополнительное поле

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

SERVER = "https://my_server_cloud.ru/post"
CONTROLLER_ID = 121

CLIENT_ID = 3241234
CLIENT_TOKEN = "qWeRtYuIoPaDfGHhkfwelwfk"

# MQTT
MQTT_SERVER = "localhost"
MQTT_PORT = 1883
MQTT_USERNAME = ""
MQTT_PASSWORD = ""
MQTT_TOPIC_FILE = "./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