Участник:Y.usishchev

Материал из Wiren Board
Это утверждённая версия страницы. Она же — наиболее свежая версия.

MQTT KNX Bridge

Устройства, использующие протокол KNX.

Пакет: wb-mqtt-knx. Исходный код: https://github.com/contactless/wb-mqtt-knx

wb-mqtt-knx пересылает KNX телеграммы из специализированного MQTT топика в KNX сеть и обратно. Для работы с KNX используется KNXD - https://github.com/knxd/knxd.

Установка

wb-mqtt-knx в wirenboard устанавливается через apt-get:

$ apt-get install wb-mqtt-knx

Настройка

На данный момент wb-mqtt-knx не имеет конфигурационного файла.

Информацию по настройке knxd можно найти в конфигурационном файле /etc/knxd.conf - https://github.com/knxd/knxd/blob/master/systemd/knxd.conf и в

$ knxd --help

Работа с wb-mqtt-knx

При инициализации wb-mqtt-knx подписывается на MQTT топик:

/devices/knx/controls/data/on

и открывает Busmonitor connection на стандартный сокет (ip:localhost:6720), создаваемый knxd по умолчанию. Все полученные из KNX телеграммы будут отправлены в MQTT топик:

/devices/knx/controls/data

Адреса в MQTT

Default MQTT topics are:

/devices/knx/meta/name wb-knx
/devices/knx/controls/data/meta/type data

Input data:

/devices/knx/controls/data

Example:

$ mosquitto_sub -t '/devices/knx/#' -v
/devices/knx/controls/data/meta/type data
/devices/knx/meta/name wb-knx

$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:0/0/1:9/7/55 4 message

/devices/knx/controls/data/on i:0/0/1:9/7/55 4 message
/devices/knx/controls/data i:0/0/1 i:9/7/55 4 message

$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 4 message

/devices/knx/controls/data/on g:9/7/55 4 message
/devices/knx/controls/data i:0/0/0 g:9/7/55 4 message

Формат MQTT сообщений

Рассмотрим два примера сообщений, которые можно послать через wb-mqtt-knx:

1) Индивидуальная телеграмма:

mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:0/0/1:9/7/55 4 message"

в `mosquitto_sub -t '/devices/knx/controls/#'` придут следующие сообщения:

/devices/knx/controls/data/on i:0/0/1:9/7/55 4 message
/devices/knx/controls/data i:0/0/1 i:9/7/55 4 message

в данном примере:

  • "i:" обозначает индивидуальный адрес
  • "0/0/1" адрес источника сообщения (From:)
  • "9/7/55" адрес целевого устройстав (To:)
  • "4" тип KNX сообщения (ACPI)
  • "message" - полезная информация (payload)

во втором сообщении мы видим что из сети KNX пришло сообщение(которое мы только что отправили). Оно было отправлено от устройства с индивидуальным адресом 0/0/1 (i:0/0/1) к устройству с индивидуальным адресом 9/7/55 (i:9/7/55) с ACPI "4" и payload "message"

2) Групповая телеграмма:

mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 4 message"

в `mosquitto_sub -t '/devices/knx/controls/#'` придут следующие сообщения:

/devices/knx/controls/data/on g:9/7/55 4 message
/devices/knx/controls/data i:0/0/0 g:9/7/55 4 message

Видно что изменились только адреса:

  • "g:" обозначает групповой адрес. В случае группового адреса не задается адрес источника, поэтому
  • "9/7/55" групповой целевой адрес (Group To:)
  • тип сообщения и payload задаются также как и в индивидуальной телеграмме

Во втором сообщении также только одно изменение - адрес To: теперь групповой.

Групповой адрес может также содержать два элемента: g:5/55.

Подробнее про адресацию можно узнать в Serial Data Transmission and KNX Protocol

Формально исходящее сообщение имеет формат:

mosquitto_pub -t '/devices/knx/controls/data/on' -m "address acpi message"

где address это либо

i:from_addr:to_addr

либо

g:to_group_addr

где from_addr и to_addr это индивидуальные KNX адреса, а to_group_addr это групповой адрес. Входящее сообщение имеет формат:

/devices/knx/controls/data "from_addr to_addr acpi message"

где from_addr - индивидуальный адрес источника сообщения, to_addr - групповой или индивидуальный адрес назначения.