Простая и эффективная утилита для передачи данных с MQTT-брокера на внешний HTTP API.
- Написана на языке Go, легковесная и производительная
- Поддержка многопоточности для параллельной обработки сообщений
- Не требует статического IP-адреса
- Легко настраиваемый автозагрузчик через cron
- Записывает Логи
app.log - Оптимизация для работы на платформе WirenBoard 6+
- Открытый исходный код и свободная лицензия
- Сбор и передача показаний датчиков в облачную инфраструктуру для умного дома и промышленного IoT
- Простота установки и настройки
├── config.yaml # Конфигурации
├── topic.json # Список MQTT-топиков
├── app.log # Запись логов
├── LICENSE # Лицензия
├── app # Бинарный файл приложения
└── install_autostart.sh # Устанавливает автозапуск Cron
Скачайте последний релиз скрипта
unzip app.zip
cd app
# настроить конфиг
nano config.yaml
# настроить топик
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.yaml и укажите параметры:
-
server:
ip- Адрес сервера куда будут отправляться показания датчиковPOSTtoken- Токен клиентаstringcontroller_id- Идентификатор контроллераinteger
-
mqtt
ip- IP Адрес Брокераstringport- IP PORT Брокераintegerlogin- Логин MQTT-сервераstringДополнительное полеpassword- Пароль MQTT-сервераstringДополнительное полеfile_topic- Путь к файлу topic.jsonstring
Пример файла окружения 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"
Файл 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-топик
- значение — текущее значение датчика
