|
|
Строка 46: |
Строка 46: |
|
| |
|
| == Формат MQTT сообщений == | | == Формат MQTT сообщений == |
| Рассмотрим два примера сообщений, которые можно послать через 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>
| |
| в данном примере:
| |
| * "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) с APCI "4" и payload "message"
| |
| 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
| |
| /devices/knx/controls/data i:0/0/0 g:9/7/55 4 message</pre>Видно что изменились только адреса:
| |
| * "g:" обозначает групповой адрес. В случае группового адреса не задается адрес источника, поэтому
| |
| * "9/7/55" групповой целевой адрес (Group To:)
| |
| * тип сообщения и payload задаются также как и в индивидуальной телеграмме
| |
|
| |
|
| Во втором сообщении также только одно изменение - адрес To: теперь групповой.
| | <pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "g:${DstAddr} ${APCI} ${Data}"</pre> |
|
| |
|
| Групповой адрес может также содержать два элемента: g:5/55.
| | Чтобы отправить индивидуальную телеграмму в KNX необходимо отправить: |
|
| |
|
| Подробнее про адресацию можно узнать в Serial Data Transmission and KNX Protocol
| | <pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "i:${SrcAddr}:${DstAddr} ${APCI} ${Data}"</pre> |
|
| |
|
| Формально исходящее сообщение имеет формат:<pre>mosquitto_pub -t '/devices/knx/controls/data/on' -m "address apci message"</pre>где address это либо<pre>i:from_addr:to_addr</pre>либо<pre>g:to_group_addr</pre>где from_addr и to_addr это индивидуальные KNX адреса, а to_group_addr это групповой адрес.
| | Все сообщения из KNX будут доставлены в MQTT топик /devices/knx/controls/data в виде: |
|
| |
|
| Входящее сообщение имеет формат:<pre>/devices/knx/controls/data "from_addr to_addr apci message"</pre>где from_addr - индивидуальный адрес источника сообщения, to_addr - групповой или индивидуальный адрес назначения.
| | <pre>i:${SrcAddr} [i,g]:${DstAddr} ${APCI} ${Data}</pre> |
| | |
| | * 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х-битное числовое значение |