Новый MQTT KNX

Материал из Wiren Board

Это черновик страницы. Последняя правка сделана 22.12.2021 пользователем RomanKochkin.


Сервис предназначен для работы с KNX и MQTT в двух режимах.

  1. Как сетевой мост, который обрабатывает, передаёт и принимает KNX телеграммы в MQTT в специальном формате.
  2. Как набор виртуальных устройств для работы с групповыми объектами и предварительной обработкой типов данных.

Для работы сервиса необходима его установка и настройка.

Режимы работы

Сетевой мост MQTT <=> KNX

Чтобы отправить групповую телеграмму в KNX необходимо отправить подготовленное сообщение в MQTT топик:

mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:${DstAddr} ${APCI} ${Data}"

Все сообщения из KNX будут доставлены в MQTT топик /devices/knx/controls/data в виде:

i:${SrcAddr} g:${DstAddr} ${APCI} ${Data}
  • SrcAddr - Индивидуальный адрес KNX устройства отправителя в формате "n/n/n" или "n/n".
  • DstAddr - Групповой адрес KNX в формате "n/n/n" или "n/n".
  • APCI - Тип сообщения: строка или 4х-битное число.
  • Data - Сообщение в виде байт, разделенных пробелами. Первый байт сообщения должен иметь длину не более 6 бит.

При отправке сообщений для полей Data допускаются форматы: 0xAA, 0XAA, 0b10101010, 0B10101010, 170

Поддерживаемые типы сообщений(APCI):

  • GroupValueRead
  • GroupValueResponse
  • GroupValueWrite

Контроллер групповых объектов

Для группового адреса KNX создаётся индивидуально настраиваемый MQTT контрол. Это означает, что можно работать с групповым адресом как с MQTT контролом: отправлять в него и принимать из него значения, например: битов, целых знаковых и беззнаковых чисел, чисел с плавающей точкой.

Тип контрола связан типом данных для группового адреса. Тип данных для конкретного группового адреса можно настроить в веб редакторе конфигурационных файлов.

Несколько групповых адресов группируются в одно или несколько произвольных логических MQTT устройств.

На данный момент поддерживаются пять типов данных групповых адресов и один с возможностью обработки сырых данных:

  • Raw_Value - обработка сырых данных: массив данных в виде строки (APDU payload);
  • 1.xxx_B1 - 1-битовое значение;
  • 2.xxx_B2 - 2-битовое значение;
  • 5.xxx_8-Bit_Unsigned_Value - 8-битовое целое без знака;
  • 6.xxx_V8 - 8-битовое целое со знаком;
  • 9.xxx_2-Octet_Float_Value - 2-байтовое значение с плавающей точкой.

Установка

Запустите консоль и введите командуː

$ apt-get update && apt-get install wb-mqtt-knx

Настройка

Предварительные шаги для настройки сервиса:

  1. Зайдите в веб-интерфейс контроллера
  2. Если вы работаете под обычным пользователем, то смените уровень доступа
  3. Перейдите SettingsConfigsKNX Group Object Configuration

Включение отладки через веб-интерфейс (выключено по умолчанию):

  1. Установите флажок Enable debug logging
  2. Нажмите на кнопку Save, чтобы сохранить настройки.

Включение возможности обрабатывать телеграммы через контрол knx/data (включено по умолчанию):

  1. Установите флажок Enable the KNX Gateway Device: knx/data
  2. Нажмите на кнопку Save, чтобы сохранить настройки.

Создать виртуальное устройство для группирования групповых объектов:

  1. Нажмите на кнопку + Device
  2. В появившемся новом устройстве укажите Device ID и опционально название Title
  3. Нажмите на кнопку Save, чтобы сохранить настройки.

Дабавить контрол для групповых объектов в устройство:

  1. Укажите устройство из List of Devices в котором хотите добавить контрол.
  2. Нажмите на кнопку + Control
  3. В появившемся новом контроле укажите Control ID и опционально название Title
  4. Укажите групповой адрес Group Address. Может быть в формате: "1/2/34", "1/234", "1234"
  5. Укажите тип точки данных группового объекта Data point type из выпадающего списка. Тип точки данных определяет какой тип контрола будет создан и как KNX данные будут интерпретироваться.
  6. Для задания периода чтения группового объекта задайте интервал в миллисекундах: READ poll interval for Devices (ms). Если интервал равен нулю, то опрос чтения для этого группового объекта не производится.
  7. Для задания максимального времени отклика на запрос чтения укажите время в миллисекундах: READ poll timeout for Devices (ms). Если время равно нулю, то эта функция отключена. При превышении максимального времени отклика на запрос чтения генерируется ошибка в топик meta/error
  8. Для настройки контрола только на чтение установите флажок Read only
  9. Нажмите на кнопку Save, чтобы сохранить настройки.


Управление сервисом и просмотр журнала

Обычно сервис запускается автоматически при загрузке контроллера и перезапускается при сохранении файла конфигурации в веб-интерфейсе.

Также можно управлять сервисом в ручном режиме. Для выполнения команд подключитесь к контроллеру по SSH. Доступны команды:

$ systemctl stop wb-mqtt-knx # остановить
$ systemctl start wb-mqtt-knx # запустить
$ systemctl restart wb-mqtt-knx # перезапустить

Для просмотра служебного журнала сервиса:

$ journalctl -u wb-mqtt-knx

Экспорт из ETS

Для импорта из инструмента ETS в файл конфигурации для работы с групповыми объектами wb-mqtt-knx.conf, можно воспользоваться консольной утилитой wb-knx-ets-tool. Утилита принимает на вход XML файлы экспорта из инструмента ETS версии 5 и 6.

Использование:

$ wb-knx-ets-tool ETS_CONFIG WB_MQTT_KNX_CONFIG
  • ETS_CONFIG - путь к XML файлу экспорта групповых объектов
  • WB_MQTT_KNX_CONFIG - путь к файлу конфигурации для работы с групповыми объектами wb-mqtt-knx.conf