Пересылает телеграммы из 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
,DstAddr
- Адреса KNX устройств в формате "n/n/n" или "n/n".APCI
- Тип сообщения, строка или 4х-битное число.Data
- Сообщение в виде байт, разделенных пробелами. Первый байт сообщения должен иметь длину не более 6 бит.
При отправке сообщений для полей ACPI
и Data
допускаются форматы: 0xAA
, 0XAA
, 0b10101010
, 0B10101010
, 170
Поддерживаемые типы сообщений(APCI
) при приёме телеграмм:
GroupValueRead
GroupValueResponse
GroupValueWrite
Поддерживаемые типы сообщений(APCI
) при отправке телеграмм:
GroupValueRead
GroupValueResponse
GroupValueWrite
Пример MQTT лога:
$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 GroupValueRead"
/devices/knx/controls/data/on g:9/7/55 GroupValueRead
/devices/knx/controls/data i:0/0/0 g:9/7/55 GroupValueRead 0x00
$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 GroupValueWrite 0x04"
/devices/knx/controls/data/on g:9/7/55 GroupValueWrite 0x04
/devices/knx/controls/data i:1/1/22 g:9/7/55 GroupValueWrite 0x04
$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 GroupValueWrite 0x00 0xAA 0xBB"
/devices/knx/controls/data/on g:9/7/55 GroupValueWrite 0x00 0xAA 0xBB
/devices/knx/controls/data i:1/1/23 g:9/7/55 GroupValueWrite 0xaa 0xbb
Точкой данных в KNX называется "Групповой объект" (Group Object) или сокращенно "Объект". Каждое устройство KNX содержит как минимум одну точку данных (Data Point). Групповой объект представляет собой, например, реле исполнительного механизма переключателя. [1]
К групповому объекту привязан групповой адрес. Каждый групповой объект имеет определённый логический тип точки данных. Каждый логический тип точки данных содержит как минимум одно поле данных.
Групповые объекты могут быть двух типов:
- Для каждого поля данных в MQTT создаётся контрол c соответствующим типом (switch, value, text). Все поддерживаемые типы датапоинтов описаны в: datapointformat.md
- Для определённого типа датапоинта создаётся текстовое поле в котором пересылаются JSON объекты. jsondatapoint.md
Групповые адреса группируются в логические устройства MQTT согласно конфигу.
Файл конфигурации находится по пути /etc/wb-mqtt-knx.conf
. Редактируется вручную или через web интерфейс Настройки -> Конфигурационные файлы
.
Имеет структуру:
{
// Версия конфигурации. На данный момент используется версия 1
"configVersion": 1,
// Опция debug включает или выключает отладочную печать.
// Опция -v командной строки wb-mqtt-knx также
// включает отладочную печать
"debug": true,
// Опция включает KNX gateway. Отображается как отдельное устройство в топике /devices/knx
"enableLegacyKnxDevice": true,
// Список wb-mqtt устройств
// Устройства предназначены для группирования объектов
"devices": [
{
// Уникальный идентификатор устройства в MQTT.
// Каждое устройство должено иметь уникальный ID
// topic'и, относящиеся в MQTT к данному устройству,
// имеют префикс /devices/<идентификатор топика>/...
"deviceId": "ABB_UT22",
// отображаемое имя устройства. Публикуется как
// /devices/<идентификатор топика>/meta/name в MQTT
"deviceTitle": "Universal interface",
// Список групповых объектов которым соответствуют wb-mqtt контролы устройства
"controls": [
{ ... },
{
// ID MQTT контрола группового объекта. topic'и, соответствующие каналу,
// публикуются как /devices/<идентификатор устройства>/controls/<ID группового объекта>
"controlId": "Led1WithFeedback",
// Имя группового объекта
"controlTitle": "Led 1 with feedback",
// Тип данных группового объекта
// Может быть двух видов:
// - wb-mqtt - групповой объект представлен в виде контрола в wb-mqtt конвенции
// - json - групповой объект представлен текстовым полем в котором передаётся json объект.
// Название типа имеет постфикс "_JSON"
"dataPointType": "1.xxx_B1",
// Групповой адрес группового объекта.
// Определяет групповой адрес приёма телеграмм, или групповой адрес на который передаются телеграммы
"groupAddress": "1/1/2",
// Групповой адрес сообщения статуса. Необязательная опция.
// Опция задействуется, если исполнительное KNX устроство имеет функцию отправки статуса.
// В этой опции указывается адрес, на который отправится статусное сообщение.
// Полученное статусное сообщение изменяет значение контрола
"feedbackGroupAddress": "1/1/3",
// Включение режима "только для чтения"
"readOnly": false,
// Период опроса группового объекта в миллисекундах.
// В момент опроса групповому объекту посылается KNX телеграмма с запросом на чтение,
// и ожидается ответ.
// Если значение 0, то опрос не проводится
"readPollInterval": 0,
// Максимальное время ожидания ответа от группового объекта KNX устройства при опросе.
// Если время ожидангия превышено, выдаётся ошибка для этого контрола в .../meta/error
// Если значение 0, то опция не применяется.
"readPollTimeout": 0
}
]
},
{ ... }
]
}
Для импорта из инструмента 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