MQTT KNX V2: различия между версиями
Строка 131: | Строка 131: | ||
Устройство 1 и 2 связаны одним групповым адресом и образуют предварительно заданный логический канал по которому передаются определённый тип данных. | Устройство 1 и 2 связаны одним групповым адресом и образуют предварительно заданный логический канал по которому передаются определённый тип данных. | ||
=== | === Передача данных исполнительному устройству при изменении состояния датчика === | ||
[[Image: Wb-mqtt-knx-user-case-ptp.png |600px|thumb|left| Передача устройство <-> устройство ]] | [[Image: Wb-mqtt-knx-user-case-ptp.png |600px|thumb|left| Передача устройство <-> устройство ]] | ||
# Датчик при изменении своего состояния посылает исполнительному устройству KNX телеграмму с групповым адресом и APCI командой GroupValueWrite. | |||
# knxd прослушивает телеграммы на шине и пересылает полученную телеграмму своим клиентам, в числе которых wb-mqtt-knx. | |||
# wb-mqtt-knx по таблице соответствия, сформированной из файла конфигурации, находит MQTT контрол связанный с групповым адресом и конвертирует KNX данные в значение, публикуемое контролом. Преобразование данных зависит от типа датапоинта. | |||
# Изменение значения в контроле публикуется в MQTT. Подписчиками в том числе являются движок правил и пользовательский интерфейс. | |||
== Управление сервисом и просмотр журнала == | == Управление сервисом и просмотр журнала == |
Версия 16:33, 30 декабря 2021
Это черновик страницы. Последняя правка сделана 30.12.2021 пользователем RomanKochkin.
Описание
Сервис предназначен для работы с KNX и MQTT в двух режимах.
- Как сетевой мост, который обрабатывает, передаёт и принимает KNX телеграммы в MQTT в специальном формате.
- Как набор виртуальных устройств для работы с групповыми объектами и предварительной обработкой типов данных.
Для работы сервиса необходима его установка и настройка.
Режимы работы
Сетевой мост 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
Настройка
Предварительные шаги для настройки сервиса:
- Зайдите в веб-интерфейс контроллера
- Если вы работаете под обычным пользователем, то смените уровень доступа
- Перейдите Settings → Configs → KNX Group Object Configuration
Включение отладки через веб-интерфейс (выключено по умолчанию):
- Установите флажок Enable debug logging
- Нажмите на кнопку Save, чтобы сохранить настройки.
Включение возможности обрабатывать телеграммы через контрол knx/data (включено по умолчанию):
- Установите флажок Enable the KNX Gateway Device: knx/data
- Нажмите на кнопку Save, чтобы сохранить настройки.
Создать виртуальное устройство для группирования групповых объектов:
- Нажмите на кнопку + Device
- В появившемся новом устройстве укажите Device ID и опционально название Title
- Нажмите на кнопку Save, чтобы сохранить настройки.
Добавить контрол для групповых объектов в устройство:
- Укажите устройство из List of Devices в котором хотите добавить контрол.
- Нажмите на кнопку + Control
- В появившемся новом контроле укажите Control ID и опционально название Title
- Укажите групповой адрес Group Address. Может быть в формате: "1/2/34", "1/234", "1234"
- Укажите тип точки данных группового объекта Data point type из выпадающего списка. Тип точки данных определяет какой тип контрола будет создан и как KNX данные будут интерпретироваться.
- Для задания периода чтения группового объекта задайте интервал в миллисекундах: READ poll interval for Devices (ms). Если интервал равен нулю, то опрос чтения для этого группового объекта не производится.
- Для задания максимального времени отклика на запрос чтения укажите время в миллисекундах: READ poll timeout for Devices (ms). Если время равно нулю, то эта функция отключена. При превышении максимального времени отклика на запрос чтения генерируется ошибка в топик meta/error
- Для настройки контрола только на чтение установите флажок Read only
- Нажмите на кнопку Save, чтобы сохранить настройки.
Преобразование KNX данных в значение контрола в зависимости от типа точки данных группового объекта
Если у в состав типа точки данных входит несколько полей, то на каждое поле создаётся свой контрол.
Топик для приёма и отправки DataPoint типов содержащих только одно поле данных:
/devices/<knx_device_id>/controls/<knx_device_control_id>
/devices/<knx_device_id>/controls/<knx_device_control_id>/on
Топик для приёма и отправки DataPoint типов содержащих несколько полей данных:
/devices/<knx_device_id>/controls/<knx_device_control_id>_<datapoint_field>
/devices/<knx_device_id>/controls/<knx_device_control_id>_<datapoint_field>/on
где:
- knx_device_id - имя виртуальной группы групповых объектов;
- knx_device_control_id - имя группового объекта;
- datapoint_field - имя поля из DataPoint типа.
Список поддерживаемых типов точек данных
Смотрите: Список типов точек данных
Случаи использования
Структурная схема
- KNX TP - KNX сеть, витая пара
- KNX device #1, group object #n - Устройство 1 с групповым объектом n, привязанный к групповому адресу GA1, с флагами на чтение и передачу, и типом датапоинта Dpt1. Пример: датчик.
- KNX device #2, group object #m - Устройство 2 с групповым объектом m, привязанный к групповому адресу GA1, с флагами на запись, и типом датапоинта Dpt1. Пример: исполнительное устройство.
- knxd - knxd сервер в контроллере WB
- wb-mqtt-knx - сервис для преобразования групповых объектов в MQTT устройства и контролы
- representation in terms of MQTT - представление групповых объектов терминах MQTT
- Web UI/ wb-rules - пользовательский интерфейс или движок правил
- /Device1/control1 - контрол, связанный с групповым адресом и типом датапоита 1
Устройство 1 и 2 связаны одним групповым адресом и образуют предварительно заданный логический канал по которому передаются определённый тип данных.
Передача данных исполнительному устройству при изменении состояния датчика
- Датчик при изменении своего состояния посылает исполнительному устройству KNX телеграмму с групповым адресом и APCI командой GroupValueWrite.
- knxd прослушивает телеграммы на шине и пересылает полученную телеграмму своим клиентам, в числе которых wb-mqtt-knx.
- wb-mqtt-knx по таблице соответствия, сформированной из файла конфигурации, находит MQTT контрол связанный с групповым адресом и конвертирует KNX данные в значение, публикуемое контролом. Преобразование данных зависит от типа датапоинта.
- Изменение значения в контроле публикуется в MQTT. Подписчиками в том числе являются движок правил и пользовательский интерфейс.
Управление сервисом и просмотр журнала
Обычно сервис запускается автоматически при загрузке контроллера и перезапускается при сохранении файла конфигурации в веб-интерфейсе.
Также можно управлять сервисом в ручном режиме. Для выполнения команд подключитесь к контроллеру по 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