MQTT KNX V2: различия между версиями
(→Контроллер групповых объектов: Заменил видео) |
|||
(не показано 96 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: | {{Draft}} | ||
{{DISPLAYTITLE: Новый MQTT KNX}} | |||
== Описание == | == Описание == | ||
[[Image: WB KNX Devices.png.png | | [[Image: WB KNX Devices.png.png |500px|thumb|right| KNX-устройства в веб-интерфейсе контроллера Wiren Board ]] | ||
Сервис <code>wb-mqtt-knx</code> предназначен для работы с KNX и MQTT в двух режимах: | |||
# Сетевой мост, который обрабатывает, передаёт и принимает KNX телеграммы в MQTT в специальном формате. | |||
# Набор виртуальных устройств для работы с групповыми объектами и предварительной обработкой типов данных. | |||
''wb-mqtt-knx'' уже предустановлен на контроллерах Wiren Board. | |||
== Режимы работы == | |||
=== Сетевой мост MQTT <=> KNX === | |||
На данный момент считается устаревшим интерфейсом. Новая функциональность более в этот интерфейс добавляться не будет. | |||
Чтобы отправить групповую телеграмму в KNX необходимо отправить подготовленное сообщение в MQTT топик: | Чтобы отправить групповую телеграмму в KNX необходимо отправить подготовленное сообщение в MQTT топик: | ||
Строка 28: | Строка 23: | ||
<pre>i:${SrcAddr} g:${DstAddr} ${APCI} ${Data}</pre> | <pre>i:${SrcAddr} g:${DstAddr} ${APCI} ${Data}</pre> | ||
* ''SrcAddr'' | * ''SrcAddr'' - Индивидуальный адрес KNX устройства отправителя в формате "n/n/n" или "n/n". | ||
* ''DstAddr'' | * ''DstAddr'' - Групповой адрес KNX в формате "n/n/n" или "n/n". | ||
* ''APCI'' | * ''APCI'' - Тип сообщения: строка или 4х-битное число. | ||
* ''Data'' | * ''Data'' - Сообщение в виде байт, разделенных пробелами. Первый байт сообщения должен иметь длину не более 6 бит. | ||
При отправке сообщений для полей ''Data'' допускаются форматы: <code>0xAA</code>, <code>0XAA</code>, <code>0b10101010</code>, <code>0B10101010</code>, <code>170</code> | При отправке сообщений для полей ''Data'' допускаются форматы: <code>0xAA</code>, <code>0XAA</code>, <code>0b10101010</code>, <code>0B10101010</code>, <code>170</code> | ||
Поддерживаемые типы сообщений (APCI): | Поддерживаемые типы сообщений(APCI): | ||
* <code>GroupValueRead</code> | * <code>GroupValueRead</code> | ||
Строка 41: | Строка 36: | ||
* <code>GroupValueWrite</code> | * <code>GroupValueWrite</code> | ||
== Контроллер групповых объектов | === Контроллер групповых объектов === | ||
=== | |||
Для группового адреса KNX создаётся индивидуально настраиваемый MQTT контрол. Это означает, что можно работать с групповым адресом как с MQTT контролом: отправлять в него и принимать из него значения, например: битов, целых знаковых и беззнаковых чисел, чисел с плавающей точкой. | |||
Тип контрола связан типом данных для группового адреса. Тип данных для конкретного группового адреса можно настроить в веб редакторе конфигурационных файлов. | |||
Несколько групповых адресов группируются в одно или несколько произвольных логических MQTT устройств. | |||
На данный момент поддерживаются 14 типов данных групповых адресов и один с возможностью обработки сырых данных: | |||
< | * <code>Raw_Value</code> - обработка сырых данных: массив данных в виде строки (APDU payload); | ||
* <code>1.xxx_B1</code> - 1-битовое значение; | |||
* <code>2.xxx_B2</code> - 2-битовое значение; | |||
* <code>3.xxx_B1U3</code> - составное: 1-битовое значение + 3-битовое целое без знака; | |||
</ | * <code>4.xxx_Character_Set</code> - один ASCII символ | ||
* <code>5.xxx_8-Bit_Unsigned_Value</code> - 8-битовое целое без знака; | |||
* <code>6.xxx_V8</code> - 8-битовое целое со знаком; | |||
* <code>7.xxx_2-Octet_Unsigned_Value</code> - 16-битовое целое без знака; | |||
* <code>8.xxx_2-Octet_Signed_Value</code> - 16-битовое целое со знаком; | |||
* <code>9.xxx_2-Octet_Float_Value</code> - 2-байтовое значение с плавающей точкой. | |||
* <code>12.001_4-Octet_Unsigned_Value</code> - 32-битовое целое без знака; | |||
* <code>13.xxx_4-Octet_Signed_Value</code> - 16-битовое целое со знаком; | |||
* <code>14.xxx_4-Octet_Float_Value</code> - 4-байтовое значение с плавающей точкой в формате IEEE 754 | |||
* <code>20.xxx_N8</code> - 8-битовое целое без знака; | |||
== Настройка == | |||
[[Image: WB KNX Settings.png |300px|thumb|right| Пример настройки KNX-устройства в веб-интерфейсе контроллера Wiren Board ]] | |||
Предварительные шаги для настройки сервиса: | |||
[[ | # Зайдите в веб-интерфейс контроллера | ||
# Если вы работаете под обычным пользователем, то смените [[RS-485:Configuration via Web Interface#Смена уровня доступа к веб-интерфейсу| уровень доступа]] | |||
# Перейдите '''Settings''' → '''Configs''' → '''KNX Group Object Configuration''' | |||
Включите отладку через [[Wiren Board Web Interface|веб-интерфейс]] (выключено по умолчанию): | |||
# Установите флажок '''Enable debug logging''' | |||
# Нажмите на кнопку '''Save''', чтобы сохранить настройки. | |||
Если выключено, то включите возможность обрабатывать телеграммы через контрол knx/data (включено по умолчанию): | |||
# Установите флажок '''Enable the KNX Gateway Device: knx/data''' | # Установите флажок '''Enable the KNX Gateway Device: knx/data''' | ||
# Нажмите на кнопку '''Save''', чтобы сохранить настройки. | # Нажмите на кнопку '''Save''', чтобы сохранить настройки. | ||
Создайте виртуальное устройство для группировки групповых объектов: | |||
# Нажмите на кнопку ''' + Device''' | # Нажмите на кнопку ''' + Device''' | ||
# В появившемся новом устройстве укажите '''Device ID''' и опционально название '''Title'''. | # В появившемся новом устройстве укажите '''Device ID''' и опционально название '''Title''' | ||
# | # Нажмите на кнопку '''Save''', чтобы сохранить настройки. | ||
Добавьте контрол для групповых объектов в устройство: | |||
# Укажите устройство из '''List of Devices''' в котором хотите добавить контрол. | |||
# Нажмите на кнопку ''' + Control''' | |||
# В появившемся новом контроле укажите '''Control ID''' и опционально название '''Title''' | |||
# Укажите групповой адрес '''Group Address'''. Может быть в формате: <code>1/2/34</code>, <code>1/234</code>, <code>1234</code> | |||
# Укажите тип точки данных группового объекта '''Data point type''' из выпадающего списка. Тип точки данных определяет какой тип контрола будет создан и как KNX данные будут интерпретироваться. | |||
# Для задания периода чтения группового объекта задайте интервал в миллисекундах: '''READ poll interval for Devices (ms)'''. Если интервал равен нулю, то опрос чтения для этого группового объекта не производится. | |||
# Для задания максимального времени отклика на запрос чтения укажите время в миллисекундах: '''READ poll timeout for Devices (ms)'''. Если время равно нулю, то эта функция отключена. При превышении максимального времени отклика на запрос чтения генерируется ошибка в топик '''meta/error''' | |||
# Для настройки контрола только на чтение установите флажок '''Read only''' | |||
# Нажмите на кнопку '''Save''', чтобы сохранить настройки. | |||
== Преобразование KNX данных в значение контрола в зависимости от типа точки данных группового объекта == | |||
Если у в состав типа точки данных входит несколько полей, то на каждое поле создаётся свой контрол. | |||
Топик для приёма и отправки DataPoint типов содержащих только одно поле данных: | |||
<code>/devices/<knx_device_id>/controls/<knx_device_control_id></code> | |||
<code>/devices/<knx_device_id>/controls/<knx_device_control_id>/on</code> | |||
Топик для приёма и отправки DataPoint типов содержащих несколько полей данных: | |||
<code>/devices/<knx_device_id>/controls/<knx_device_control_id>_<datapoint_field></code> | |||
<code>/devices/<knx_device_id>/controls/<knx_device_control_id>_<datapoint_field>/on</code> | |||
где: | где: | ||
* '''knx_device_id''' | * '''knx_device_id''' - имя виртуальной группы групповых объектов; | ||
* '''knx_device_control_id''' | * '''knx_device_control_id''' - имя группового объекта; | ||
* '''datapoint_field''' | * '''datapoint_field''' - имя поля из DataPoint типа. | ||
Список поддерживаемых типов точек данных | == Список поддерживаемых типов точек данных == | ||
Смотрите: [[MQTT_KNX_V2_DatapointTypes| Список типов точек данных]] | |||
== Случаи использования == | == Случаи использования == | ||
=== Структурная схема взаимодействия === | === Структурная схема взаимодействия === | ||
Устройства ''KNX device #1'' и ''KNX device #2'' связаны одним групповым адресом и образуют предварительно заданный логический канал по которому | Устройства ''KNX device #1'' и ''KNX device #2'' связаны одним групповым адресом и образуют предварительно заданный логический канал по которому передаются определённый тип данных. | ||
Подробнее про KNX флаги групповых объектов можно почитать в статье [https://support.knx.org/hc/en-us/articles/115003188089-Flags Flags на сайте knx.org]. | Подробнее про KNX флаги групповых объектов можно почитать в статье [https://support.knx.org/hc/en-us/articles/115003188089-Flags Flags на сайте knx.org]. | ||
Строка 144: | Строка 128: | ||
Пояснения к схеме: | Пояснения к схеме: | ||
* '''KNX TP''' — KNX сеть, витая пара | * '''KNX TP''' — KNX сеть, витая пара | ||
* '''KNX device #1, group object #n''' — Групповой объект | * '''KNX device #1, group object #n''' — Групповой объект n устройства 1, привязанный к групповому адресу GA1, с флагами на чтение и передачу, и типом датапоинта Dpt1. Пример: датчик. | ||
* '''KNX device #2, group object #m''' — Групповой объект | * '''KNX device #2, group object #m''' — Групповой объект m устройства 2, привязанный к групповому адресу GA1, с флагами на запись, и типом датапоинта Dpt1. Пример: исполнительное устройство. | ||
* '''knxd''' — knxd сервер в контроллере | * '''knxd''' — knxd сервер в контроллере WB | ||
* '''wb-mqtt-knx''' — сервис для преобразования групповых объектов в MQTT устройства и контролы | * '''wb-mqtt-knx''' — сервис для преобразования групповых объектов в MQTT устройства и контролы | ||
* '''representation in terms of MQTT''' — представление групповых объектов | * '''representation in terms of MQTT''' — представление групповых объектов терминах MQTT | ||
* '''Web UI/ wb-rules''' — пользовательский интерфейс или движок правил | * '''Web UI/ wb-rules''' — пользовательский интерфейс или движок правил | ||
* '''/Device1/control1''' — контрол, связанный с групповым адресом и типом данных | * '''/Device1/control1''' — контрол, связанный с групповым адресом и типом датапоита 1 | ||
=== Случай 1. Передача данных исполнительному устройству при изменении состояния датчика === | |||
[[Image: Wb-mqtt-knx-user-case-ptp.png |600px|thumb|center| Передача датчик -> исполнительное устройство ]] | |||
Как это работает: | Как это работает: | ||
# Датчик при изменении своего состояния посылает исполнительному устройству KNX телеграмму с групповым адресом и APCI командой GroupValueWrite. | # Датчик при изменении своего состояния посылает исполнительному устройству KNX телеграмму с групповым адресом и APCI командой GroupValueWrite. | ||
# knxd прослушивает телеграммы на шине и пересылает полученную телеграмму своим клиентам, в числе которых wb-mqtt-knx. | # knxd прослушивает телеграммы на шине и пересылает полученную телеграмму своим клиентам, в числе которых wb-mqtt-knx. | ||
# wb-mqtt-knx по таблице соответствия, сформированной из файла конфигурации, находит MQTT контрол связанный с групповым адресом и конвертирует KNX данные в значение, публикуемое контролом. Преобразование зависит от типа | # wb-mqtt-knx по таблице соответствия, сформированной из файла конфигурации, находит MQTT контрол связанный с групповым адресом и конвертирует KNX данные в значение, публикуемое контролом. Преобразование данных зависит от типа датапоинта. | ||
# Изменение значения в контроле публикуется в MQTT. Подписчиками, в том числе являются движок правил и пользовательский интерфейс. | # Изменение значения в контроле публикуется в MQTT. Подписчиками, в том числе являются движок правил и пользовательский интерфейс. | ||
[[Image: Wb-mqtt-knx-user-case- | === Случай 2. Управление исполнительным устройством через движок правил или пользовательский интерфейс === | ||
[[Image: Wb-mqtt-knx-user-case-utp.png |600px|thumb|center| Передача интерфейс пользователя → исполнительное устройство ]] | |||
Как это работает: | Как это работает: | ||
# Изменяется значение контрола, посредством публикации значения в топик | # Изменяется значение контрола, посредством публикации значения в топик '''/devices/Device1/controls/control1/on''', что приводит к публикации значения в топик '''/devices/Device1/controls/control1/'''. | ||
# Значение из топика | # Значение из топика '''/on''' преобразуются в данные для KNX телеграммы в зависимости от типа датапоинта, связанного с контролом. # Формируется KNX телеграмма с KNX данными, адресом получателя GA1 и APCI командой GroupWalueWrite. Адрес получателя равен групповому адресу связанному с контролом. | ||
# Формируется KNX телеграмма с KNX данными, адресом получателя GA1 и APCI командой | |||
# KNX телеграмма передаётся всем клиентам knxd и в KNX TP сеть. | # KNX телеграмма передаётся всем клиентам knxd и в KNX TP сеть. | ||
# KNX телеграмму получают устройства 1 и 2. Обработка пакета c командой | # KNX телеграмму получают устройства 1 и 2. Обработка пакета c командой GroupValueWrite происходит только в групповом объекте m в устройстве 2, из-за того что в нём выставлен флаг W. | ||
=== Случай 3. Периодическое чтение группового объекта === | |||
[[Image: Wb-mqtt-knx-user-case- | [[Image: Wb-mqtt-knx-user-case-t2p2u.png |600px|thumb|center| Передача интерфейс пользователя → исполнительное устройство ]] | ||
Как это работает: | Как это работает: | ||
# После начала работы сервиса и при заданном для контрола периоде опроса отличном от нуля сервис wb-mqtt-knx рассылает телеграммы с запросом на чтение с APCI командой | # После начала работы сервиса и при заданном для контрола периоде опроса отличном от нуля сервис wb-mqtt-knx рассылает телеграммы с запросом на чтение с APCI командой GroupValueRead на соответствующие групповые адреса. | ||
# Если групповой объект имеет флаг R и групповой адрес, равный запрашиваемому, он отсылает в KNX TP ответ с текущим своим значением и ACPI командой | # Если групповой объект имеет флаг R и групповой адрес, равный запрашиваемому, он отсылает в KNX TP ответ с текущим своим значением и ACPI командой GroupValueResponse. | ||
# Это телеграмму получает wb-mqtt-knx сервис и отправляет значение в контрол со связанным групповым адресом. | # Это телеграмму получает wb-mqtt-knx сервис и отправляет значение в контрол со связанным групповым адресом. | ||
# Далее значение контрола публикуется в топике | # Далее значение контрола публикуется в топике '''/devices/Device1/controls/control1/''' | ||
== Управление сервисом и просмотр журнала == | == Управление сервисом и просмотр журнала == | ||
Строка 205: | Строка 187: | ||
можно воспользоваться консольной утилитой <code>wb-knx-ets-tool</code>, которая идёт в комплекте с <code>wb-mqtt-knx</code>. | можно воспользоваться консольной утилитой <code>wb-knx-ets-tool</code>, которая идёт в комплекте с <code>wb-mqtt-knx</code>. | ||
Утилита принимает на вход XML файлы экспорта из инструмента ETS версии 5 и 6 | Утилита принимает на вход XML файлы экспорта из инструмента ETS версии 5 и 6. | ||
Использование: | |||
<pre>$ wb-knx-ets-tool ETS_CONFIG WB_MQTT_KNX_CONFIG</pre> | <pre>$ wb-knx-ets-tool ETS_CONFIG WB_MQTT_KNX_CONFIG</pre> | ||
* ''ETS_CONFIG'' - путь к XML файлу экспорта групповых объектов | |||
* | * ''WB_MQTT_KNX_CONFIG'' - путь к файлу конфигурации для работы с групповыми объектами <code>wb-mqtt-knx.conf</code> | ||
* | |||
Версия 18:23, 17 января 2022
Это черновик страницы. Последняя правка сделана 17.01.2022 пользователем A.Degtyarev.
Описание
Сервис wb-mqtt-knx
предназначен для работы с KNX и MQTT в двух режимах:
- Сетевой мост, который обрабатывает, передаёт и принимает KNX телеграммы в MQTT в специальном формате.
- Набор виртуальных устройств для работы с групповыми объектами и предварительной обработкой типов данных.
wb-mqtt-knx уже предустановлен на контроллерах Wiren Board.
Режимы работы
Сетевой мост 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 устройств.
На данный момент поддерживаются 14 типов данных групповых адресов и один с возможностью обработки сырых данных:
Raw_Value
- обработка сырых данных: массив данных в виде строки (APDU payload);1.xxx_B1
- 1-битовое значение;2.xxx_B2
- 2-битовое значение;3.xxx_B1U3
- составное: 1-битовое значение + 3-битовое целое без знака;4.xxx_Character_Set
- один ASCII символ5.xxx_8-Bit_Unsigned_Value
- 8-битовое целое без знака;6.xxx_V8
- 8-битовое целое со знаком;7.xxx_2-Octet_Unsigned_Value
- 16-битовое целое без знака;8.xxx_2-Octet_Signed_Value
- 16-битовое целое со знаком;9.xxx_2-Octet_Float_Value
- 2-байтовое значение с плавающей точкой.12.001_4-Octet_Unsigned_Value
- 32-битовое целое без знака;13.xxx_4-Octet_Signed_Value
- 16-битовое целое со знаком;14.xxx_4-Octet_Float_Value
- 4-байтовое значение с плавающей точкой в формате IEEE 75420.xxx_N8
- 8-битовое целое без знака;
Настройка
Предварительные шаги для настройки сервиса:
- Зайдите в веб-интерфейс контроллера
- Если вы работаете под обычным пользователем, то смените уровень доступа
- Перейдите 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 device #1 и KNX device #2 связаны одним групповым адресом и образуют предварительно заданный логический канал по которому передаются определённый тип данных.
Подробнее про KNX флаги групповых объектов можно почитать в статье Flags на сайте knx.org.
Пояснения к схеме:
- KNX TP — KNX сеть, витая пара
- KNX device #1, group object #n — Групповой объект n устройства 1, привязанный к групповому адресу GA1, с флагами на чтение и передачу, и типом датапоинта Dpt1. Пример: датчик.
- KNX device #2, group object #m — Групповой объект m устройства 2, привязанный к групповому адресу GA1, с флагами на запись, и типом датапоинта Dpt1. Пример: исполнительное устройство.
- knxd — knxd сервер в контроллере WB
- wb-mqtt-knx — сервис для преобразования групповых объектов в MQTT устройства и контролы
- representation in terms of MQTT — представление групповых объектов терминах MQTT
- Web UI/ wb-rules — пользовательский интерфейс или движок правил
- /Device1/control1 — контрол, связанный с групповым адресом и типом датапоита 1
Случай 1. Передача данных исполнительному устройству при изменении состояния датчика
Как это работает:
- Датчик при изменении своего состояния посылает исполнительному устройству KNX телеграмму с групповым адресом и APCI командой GroupValueWrite.
- knxd прослушивает телеграммы на шине и пересылает полученную телеграмму своим клиентам, в числе которых wb-mqtt-knx.
- wb-mqtt-knx по таблице соответствия, сформированной из файла конфигурации, находит MQTT контрол связанный с групповым адресом и конвертирует KNX данные в значение, публикуемое контролом. Преобразование данных зависит от типа датапоинта.
- Изменение значения в контроле публикуется в MQTT. Подписчиками, в том числе являются движок правил и пользовательский интерфейс.
Случай 2. Управление исполнительным устройством через движок правил или пользовательский интерфейс
Как это работает:
- Изменяется значение контрола, посредством публикации значения в топик /devices/Device1/controls/control1/on, что приводит к публикации значения в топик /devices/Device1/controls/control1/.
- Значение из топика /on преобразуются в данные для KNX телеграммы в зависимости от типа датапоинта, связанного с контролом. # Формируется KNX телеграмма с KNX данными, адресом получателя GA1 и APCI командой GroupWalueWrite. Адрес получателя равен групповому адресу связанному с контролом.
- KNX телеграмма передаётся всем клиентам knxd и в KNX TP сеть.
- KNX телеграмму получают устройства 1 и 2. Обработка пакета c командой GroupValueWrite происходит только в групповом объекте m в устройстве 2, из-за того что в нём выставлен флаг W.
Случай 3. Периодическое чтение группового объекта
Как это работает:
- После начала работы сервиса и при заданном для контрола периоде опроса отличном от нуля сервис wb-mqtt-knx рассылает телеграммы с запросом на чтение с APCI командой GroupValueRead на соответствующие групповые адреса.
- Если групповой объект имеет флаг R и групповой адрес, равный запрашиваемому, он отсылает в KNX TP ответ с текущим своим значением и ACPI командой GroupValueResponse.
- Это телеграмму получает wb-mqtt-knx сервис и отправляет значение в контрол со связанным групповым адресом.
- Далее значение контрола публикуется в топике /devices/Device1/controls/control1/
Управление сервисом и просмотр журнала
Обычно сервис запускается автоматически при загрузке контроллера и перезапускается при сохранении файла конфигурации в веб-интерфейсе.
Также можно управлять сервисом в ручном режиме. Для выполнения команд подключитесь к контроллеру по 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
, которая идёт в комплекте с wb-mqtt-knx
.
Утилита принимает на вход 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