MQTT KNX V.0.1.x: различия между версиями

Материал из Wiren Board
(Новая страница: «= MQTT KNX Bridge = Устройства, использующие протокол KNX. Пакет: wb-mqtt-knx. Исходный код: https://github.com/con…»)
 
м (A.Degtyarev переименовал страницу MQTT KNX в MQTT KNX V.0.1.x без оставления перенаправления: Часть переводимой страницы MQTT KNX.)
 
(не показано 12 промежуточных версий 6 участников)
Строка 1: Строка 1:
= MQTT KNX Bridge =
<languages/>
Устройства, использующие протокол KNX.
<translate>
== Описание ==
{{note|note|Здесь описан сервис wb-mqtt-knx версии 0.1.x, которая устарела и больше не поддерживается. Описание актуальной версии смотрите на странице [[MQTT_KNX_V2]].}}
<!--T:3-->


Пакет: wb-mqtt-knx. Исходный код: https://github.com/contactless/wb-mqtt-knx
wb-mqtt-knx пересылает KNX телеграммы из специализированного MQTT топика в KNX сеть и обратно. Для работы с KNX используется [[Knxd]]


wb-mqtt-knx пересылает KNX телеграммы из специализированного MQTT топика в KNX сеть и обратно. Для работы с KNX используется KNXD - https://github.com/knxd/knxd.
= Установка = <!--T:4-->
Запустите консоль и введите командуː


== Установка ==
<pre>$ apt-get update && apt-get install wb-mqtt-knx</pre>
wb-mqtt-knx в wirenboard устанавливается через apt-get:<pre>$ apt-get install wb-mqtt-knx</pre>


== Настройка ==
= Настройка = <!--T:5-->
На данный момент wb-mqtt-knx не имеет конфигурационного файла.
На данный момент wb-mqtt-knx не имеет конфигурационного файла.


Информацию по настройке knxd можно найти в конфигурационном файле /etc/knxd.conf - https://github.com/knxd/knxd/blob/master/systemd/knxd.conf и в<pre>$ knxd --help</pre>
<!--T:6-->
Информацию по настройке knxd можно найти на странице [[Knxd]]


== Работа с wb-mqtt-knx ==
= Адреса в MQTT = <!--T:7-->
При инициализации wb-mqtt-knx подписывается на MQTT топик:<pre>/devices/knx/controls/data/on</pre>и открывает Busmonitor connection на стандартный сокет (ip:localhost:6720), создаваемый knxd по умолчанию.
 
Все полученные из KNX телеграммы будут отправлены в MQTT топик:<pre>/devices/knx/controls/data</pre>
 
== Адреса в MQTT ==
<pre>
<pre>
Default MQTT topics are:
Default MQTT topics are:


<!--T:8-->
/devices/knx/meta/name wb-knx
/devices/knx/meta/name wb-knx
/devices/knx/controls/data/meta/type data
/devices/knx/controls/data/meta/type data


<!--T:9-->
Input data:
Input data:


<!--T:10-->
/devices/knx/controls/data
/devices/knx/controls/data


<!--T:11-->
Outgoing data:
<!--T:12-->
/devices/knx/controls/data/on
<!--T:13-->
Example:
Example:


<!--T:14-->
$ mosquitto_sub -t '/devices/knx/#' -v
$ mosquitto_sub -t '/devices/knx/#' -v
/devices/knx/controls/data/meta/type data
/devices/knx/controls/data/meta/type data
/devices/knx/meta/name wb-knx
/devices/knx/meta/name wb-knx


$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:0/0/1:9/7/55 4 message
<!--T:15-->
$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:0/0/1:9/7/55 GroupValueWrite 0b110111 0xcf 14 0xff"


/devices/knx/controls/data/on i:0/0/1:9/7/55 4 message
<!--T:16-->
/devices/knx/controls/data i:0/0/1 i:9/7/55 4 message
/devices/knx/controls/data/on i:0/0/1:9/7/55 GroupValueWrite 0b110111 0xcf 14 0xff
/devices/knx/controls/data i:0/0/1 i:9/7/55 GroupValueWrite 0x37 0xcf 0x0e 0xff


$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 4 message
<!--T:17-->
$ mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 GroupValueRead"


/devices/knx/controls/data/on g:9/7/55 4 message
<!--T:18-->
/devices/knx/controls/data i:0/0/0 g:9/7/55 4 message
/devices/knx/controls/data/on g:9/7/55 GroupValueRead
/devices/knx/controls/data i:0/0/0 g:9/7/55 GroupValueRead 0x00
</pre>
</pre>


== Формат MQTT сообщений ==
== Формат MQTT сообщений == <!--T:19-->
Рассмотрим два примера сообщений, которые можно послать через wb-mqtt-knx:
Чтобы отправить групповую телеграмму в KNX необходимо отправить подготовленное сообщение в MQTT топик:
1) Индивидуальная телеграмма:<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:0/0/1:9/7/55 4 message"</pre>в `mosquitto_sub -t '/devices/knx/controls/#'` придут следующие сообщения:<pre>/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</pre>в данном примере:
<!--T:20-->
* "i:" обозначает индивидуальный адрес
<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:${DstAddr} ${APCI} ${Data}"</pre>
* "0/0/1" адрес источника сообщения (From:)
 
* "9/7/55" адрес целевого устройстав (To:)
<!--T:21-->
* "4" тип KNX сообщения (ACPI)
Чтобы отправить индивидуальную телеграмму в KNX необходимо отправить:
* "message" - полезная информация (payload)
 
во втором сообщении мы видим что из сети KNX пришло сообщение(которое мы только что отправили). Оно было отправлено от устройства с индивидуальным адресом 0/0/1 (i:0/0/1) к устройству с индивидуальным адресом 9/7/55 (i:9/7/55) с ACPI "4" и payload "message"
<!--T:22-->
2) Групповая телеграмма:<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:9/7/55 4 message"</pre>в `mosquitto_sub -t '/devices/knx/controls/#'` придут следующие сообщения:<pre>/devices/knx/controls/data/on g:9/7/55 4 message
<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:${SrcAddr}:${DstAddr} ${APCI} ${Data}"</pre>
/devices/knx/controls/data i:0/0/0 g:9/7/55 4 message</pre>Видно что изменились только адреса:
* "g:" обозначает групповой адрес. В случае группового адреса не задается адрес источника, поэтому
* "9/7/55" групповой целевой адрес (Group To:)
* тип сообщения и payload задаются также как и в индивидуальной телеграмме


Во втором сообщении также только одно изменение - адрес To: теперь групповой.
<!--T:23-->
Все сообщения из KNX будут доставлены в MQTT топик /devices/knx/controls/data в виде:


Групповой адрес может также содержать два элемента: g:5/55.
<!--T:24-->
<pre>i:${SrcAddr} [i,g]:${DstAddr} ${APCI} ${Data}</pre>


Подробнее про адресацию можно узнать в Serial Data Transmission and KNX Protocol
<!--T:25-->
* SrcAddr, DstAddr - Адреса KNX устройств в формате "n/n/n" или "n/n".
* APCI - Тип сообщения: строка или 4х-битное число.
* Data - Сообщение в виде байт, разделенных пробелами. Первый байт сообщения должен иметь длину не более 6 бит.


Формально исходящее сообщение имеет формат:<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "address acpi message"</pre>где address это либо<pre>i:from_addr:to_addr</pre>либо<pre>g:to_group_addr</pre>где from_addr и to_addr это индивидуальные KNX адреса, а to_group_addr это групповой адрес.
<!--T:26-->
Поддерживаемые типы сообщений(APCI):


Входящее сообщение имеет формат:<pre>/devices/knx/controls/data "from_addr to_addr acpi message"</pre>где from_addr - индивидуальный адрес источника сообщения, to_addr - групповой или индивидуальный адрес назначения.
<!--T:27-->
* GroupValueRead
* GroupValueResponse
* GroupValueWrite
* IndividualAddrWrite
* IndividualAddrRequest
* IndividualAddrResponse
* AdcRead
* AdcResponse
* MemoryRead
* MemoryRead
* MemoryWrite
* UserMessage
* MaskVersionRead
* MaskVersionResponse
* Restart
* Escape
* любое 4х-битное числовое значение
</translate>

Текущая версия на 20:00, 8 апреля 2022

Другие языки:

Описание

Здесь описан сервис wb-mqtt-knx версии 0.1.x, которая устарела и больше не поддерживается. Описание актуальной версии смотрите на странице MQTT_KNX_V2.

wb-mqtt-knx пересылает KNX телеграммы из специализированного MQTT топика в KNX сеть и обратно. Для работы с KNX используется Knxd

Установка

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

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

Настройка

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

Информацию по настройке knxd можно найти на странице Knxd

Адреса в MQTT

Default MQTT topics are:

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

Input data:

/devices/knx/controls/data

Outgoing data:

/devices/knx/controls/data/on

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 GroupValueWrite 0b110111 0xcf 14 0xff"

/devices/knx/controls/data/on i:0/0/1:9/7/55 GroupValueWrite 0b110111 0xcf 14 0xff
/devices/knx/controls/data i:0/0/1 i:9/7/55 GroupValueWrite 0x37 0xcf 0x0e 0xff

$ 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

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

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

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

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

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

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

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

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

  • GroupValueRead
  • GroupValueResponse
  • GroupValueWrite
  • IndividualAddrWrite
  • IndividualAddrRequest
  • IndividualAddrResponse
  • AdcRead
  • AdcResponse
  • MemoryRead
  • MemoryRead
  • MemoryWrite
  • UserMessage
  • MaskVersionRead
  • MaskVersionResponse
  • Restart
  • Escape
  • любое 4х-битное числовое значение