Skip to content

Интеграция с MQTT и публикация телеметрии ​

В RUSEON Core встроен высокопроизводительный паблишер MQTT 3.1.1 / 5.0 (internal/events/mqtt.go), предназначенный для интеграции с IoT-платформами, SCADA, системами умного города и промышленной автоматизацией.

Для защиты видеопайплайна от задержек сети паблишер использует Lock-Free кольцевой буфер с неблокирующей очередью сообщений.


1. Иерархия топиков и формат сообщений ​

RUSEON Core публикует структурированные JSON-сообщения в стандартизированное дерево топиков:

Шаблон топикаСобытиеПример JSON-сообщения
ruseon/cameras/{id}/statusПодключение / обрыв камеры{"status":"online","fps":25.0,"bitrate_kbps":4096,"timestamp":1786802400}
ruseon/cameras/{id}/eventsДетекция движения / пересечение линии{"event_type":"motion_detected","zone":"gate_1","score":0.88}
ruseon/cameras/{id}/metadataAI-детекции в реальном времени{"pts":1786802400120000,"detections":[{"class":"car","confidence":0.96}]}
ruseon/system/probesРегулярная проверка здоровья{"storage_free_percent":82.4,"active_streams":48,"goroutines":112}

2. Конфигурация в config.yaml ​

yaml
mqtt:
  enabled: true
  broker: "tcp://broker.emqx.io:1883"
  client_id: "ruseon_server_prod_01"
  topic_prefix: "ruseon"
  
  # Учётные данные
  username: "ruseon_publisher"
  password: "secure_password_here"
  
  # Уровень сервиса (QoS: 0, 1 или 2)
  qos: 1
  retain_status: true

  # Ёмкость буфера для изоляции от сетевых задержек
  queue_capacity: 5000
  
  # Параметры шифрования TLS
  tls:
    enabled: false
    ca_file: "/etc/ruseon/ca.crt"
    cert_file: "/etc/ruseon/client.crt"
    key_file: "/etc/ruseon/client.key"

3. Архитектура Lock-Free буфера ​

Модуль internal/buffer/lockfree.go обеспечивает:

  • Неблокирующее добавление: Публикация событий выполняется через атомарные CAS-операции.
  • Отсутствие блокировок: Горутины видеостриминга никогда не блокируются на мьютексах при отправке MQTT-событий.
  • Защита от переполнения: При обрыве связи с брокером буфер плавно перезаписывает старые сообщения, исключая утечки памяти.

Связанная документация ​

Released under the MIT License.