Простая и эффективная утилита для передачи данных с MQTT-брокера на внешний HTTP API.
- Написана на языке Go, легковесная и производительная
- Поддержка многопоточности для параллельной обработки сообщений
- Не требует статического IP-адреса
- Легко настраиваемый автозагрузчик через cron
- Записывает Логи
app.log - Оптимизация для работы на платформе WirenBoard 6+
- Открытый исходный код и свободная лицензия
- Сбор и передача показаний датчиков в облачную инфраструктуру для умного дома и промышленного IoT
- Простота установки и настройки
├── config.env # Переменные окружения
├── topic.json # Список MQTT-топиков
├── app.log # Запись логов
├── LICENSE # Лицензия
├── app # Бинарный файл приложения
└── install_autostart.sh # Устанавливает автозапуск Cron
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
| Платформа | Команда |
|---|---|
| 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 |
Откройте файл config.env и укажите параметры:
SERVER- Адрес сервера куда будут отправляться показания датчиковstringметодPOSTCONTROLLER_ID- Идентификатор контроллераintegerCLIENT_ID- Идентификатор клиентаintegerCLIENT_TOKEN- Токен клиентаstringMQTT_SERVER- URL (IP) адрес MQTT cервераstringMQTT_PORT- Порт MQTT-сервераintegerMQTT_TOPIC_FILE- Путь к файлу topic.jsonstringMQTT_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"
Файл topic.json содержит список топиков по которым будет подписываться:
{
"topics": [
{
"path": "/devices/hwmon/controls/Board Temperature",
"level_qos": 2
},
{
"path": "/devices/hwmon/controls/CPU Temperature",
"level_qos": 2
}
]
}| Уровень | Описание |
|---|---|
| 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-топик
- значение — текущее значение датчика
