MQTT KNX V2: различия между версиями

→‎Описание: Исправлена опечатка
(→‎Описание: Исправлена опечатка)
Метки: правка с мобильного устройства правка из мобильной версии Расширенная мобильная правка
 
(не показано 27 промежуточных версий 1 участника)
Строка 2: Строка 2:
== Описание ==
== Описание ==
[[Image: WB KNX Devices.png.png |300px|thumb|right| KNX-устройства в веб-интерфейсе контроллера Wiren Board ]]
[[Image: WB KNX Devices.png.png |300px|thumb|right| KNX-устройства в веб-интерфейсе контроллера Wiren Board ]]
Здесь описан сервис версии 1.4.x и новее, [[MQTT KNX V.0.1.x | описание устаревшей версии 0.1.x]].
О том, что такое KNX и особенности адресации читайте в статье [[KNX]].


За работу с KNX-устройствами в контроллерах Wiren Board отвечает установленный с завода сервис [https://github.com/wirenboard/wb-mqtt-knx wb-mqtt-knx], который может работать в двух режимах:
За работу с KNX-устройствами в контроллерах Wiren Board отвечает установленный с завода сервис [https://github.com/wirenboard/wb-mqtt-knx wb-mqtt-knx], который может работать в двух режимах:
# Сетевой мост, который обрабатывает, передаёт и принимает  KNX телеграммы в MQTT в специальном формате. Оставлен для обратной совместимости, новые функции в этот режим внедрятся не будут.
# ''Сетевой мост'', который обрабатывает, передаёт и принимает  KNX телеграммы в MQTT в специальном формате. Оставлен для обратной совместимости, новые функции в этот режим внедряться не будут.
# Контроллер групповых объектов. Это набор виртуальных устройств для работы с групповыми объектами KNX и предварительной обработкой типов данных.
# ''Контроллер групповых объектов''. Это набор виртуальных устройств для работы с групповыми объектами KNX и предварительной обработкой типов данных.


Сервис хранит настройки в файле <code>wb-mqtt-knx.conf</code>, который редактируется из веб-интерфейса контроллера или генерируется на основе проекта из ETS.
Сервис хранит настройки в файле <code>wb-mqtt-knx.conf</code>, который редактируется из веб-интерфейса контроллера или генерируется на основе проекта из ETS.
Строка 12: Строка 16:


== Сетевой мост ==
== Сетевой мост ==
В режиме сетевого моста сервис пересылает телеграммы из MQTT в KNX и обратно.
В режиме сетевого моста сервис пересылает телеграммы из [[MQTT]] в KNX и обратно.
 
Перед началом работы, настройте knxd по [[Knxd#Настройка | инструкции]].


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


== Контроллер групповых объектов ==
== Контроллер групповых объектов ==
{{YouTube|link=https://youtu.be/VjpN_-8SA-Q|text=Вебинар про импорт проектов из ETS, типы групповых адресов и настройку FeedBack}}
=== Описание ===
=== Описание ===
 
Чтобы представить групповой адрес в веб-интерфейсе контроллера Wiren Board, нужно создать контрол виртуального [[MQTT]]-устройства с параметрами, заданными объекту в программе ETS: типом данных и групповым адресом. Несколько групповых адресов можно объединять в одно или несколько произвольных MQTT-устройств.
Иерархия объектов, принятая в протоколе KNX:
* KNX-устройства имеют заранее заданные групповые объекты.
* Когда вы настраиваете устройство в программе ETS, то назначаете групповым объектам групповые адреса и выбираете для них тип данных. Тип данных — это структура с одним или несколькими полями. [[KNX_Quick_start |Пример настройки KNX-устройства в программе ETS]].
 
Таким образом, групповые объекты представлены в KNX-шине групповыми адресами, с которыми происходит обмен телеграммами. А телеграммы содержат данные, структура которых определяется типом данных.
 
Чтобы представить групповой адрес в веб-интерфейсе контроллера Wiren Board, нужно создать контрол виртуального MQTT-устройства с параметрами, заданными объекту в программе ETS: типом данных и групповым адресом. Несколько групповых адресов можно объединять в одно или несколько произвольных MQTT-устройств.


Далее вы можете работать с групповым адресом так же, как с обычным контролом: писать и читать из него текст, биты, целые знаковые и беззнаковые числа, числа с плавающей точкой.
Далее вы можете работать с групповым адресом так же, как с обычным контролом: писать и читать из него текст, биты, целые знаковые и беззнаковые числа, числа с плавающей точкой.
Строка 50: Строка 50:
Каждый контрол MQTT-устройства может работать в двух режимах:
Каждый контрол MQTT-устройства может работать в двух режимах:
# ''MQTT'' — данные представляются в виде готовых к обработке значений и публикуются в контролы нужного типа: value, switch и т.п. Поддерживаются только типы данных, которые можно представить в виде контролов MQTT-устройства, список можно посмотреть по ссылке [https://github.com/wirenboard/wb-mqtt-knx/blob/master/datapointformat.md#%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-datapoint-%D1%82%D0%B8%D0%BF%D0%BE%D0%B2 Представление DataPoint типов].
# ''MQTT'' — данные представляются в виде готовых к обработке значений и публикуются в контролы нужного типа: value, switch и т.п. Поддерживаются только типы данных, которые можно представить в виде контролов MQTT-устройства, список можно посмотреть по ссылке [https://github.com/wirenboard/wb-mqtt-knx/blob/master/datapointformat.md#%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-datapoint-%D1%82%D0%B8%D0%BF%D0%BE%D0%B2 Представление DataPoint типов].
# ''JSON'' — данные преобразовываются в JSON-сообщения, которые в виде текста помещаются в контрол и могут быть обработаны с помощью [[wb-rules]]. В этом режиме можно работать со специфичными для KNX типами, например, дата с днём недели.
# ''JSON'' — данные преобразовываются в JSON-сообщения, которые в виде текста помещаются в контрол и могут быть обработаны с помощью [[wb-rules]]. В этом режиме можно работать со специфичными для KNX типами, например, дата с днём недели. {{SupportedSinceRelease|release= wb-2204|nobanner= true}}


При настройке устройства в ETS старайтесь выбирать базовые типы, сервис поддерживает только их, например, <code>1.*1-bit</code> — это <code>1.xxx_B1</code> или <code>1.xxx_B1_JSON</code>, зависит от выбранного режима контрола MQTT-устройства.
При настройке устройства в ETS старайтесь выбирать базовые типы, сервис поддерживает только их, например, <code>1.*1-bit</code> — это <code>1.xxx_B1</code> или <code>1.xxx_B1_JSON</code>, зависит от выбранного режима контрола MQTT-устройства.


Если нужного вам типа не оказалось, используйте в режиме MQTT специальный тип ''Raw_Value'' — это полученный массив байт, представленный в виде шестнадцатеричного числа, которое вы сможете самостоятельно преобразовать с помощью [[wb-rules]] и руководства [https://www.knx.org/wAssets/docs/downloads/Certification/Interworking-Datapoint-types/03_07_02-Datapoint-Types-v02.02.01-AS.pdf Datapoint-Types-v02.02.01-AS].
Если нужного вам типа не оказалось, используйте в режиме MQTT специальный тип ''Raw_Value'' — это полученный массив байт, представленный в виде шестнадцатеричного числа, которое вы сможете самостоятельно преобразовать с помощью [[wb-rules]] и руководства [https://www.knx.org/wAssets/docs/downloads/Certification/Interworking-Datapoint-types/03_07_02-Datapoint-Types-v02.02.01-AS.pdf Datapoint-Types-v02.02.01-AS].
<gallery mode="traditional" widths="260px" caption="Настройка и работа с KNX-устройством">
Image: ETS Group Object Config.png | Настройка группового объекта в программе ETS
Image: KNX MQTT Control Config.png | Настройка контрола MQTT-устройства в веб-интерфейсе контроллера Wiren Board
Image: KNX Switch WebUI.png  | Представление устройства в веб-интерфейсе контроллера Wiren Board
</gallery>


=== Настройка ===
=== Настройка ===
Для настройки Контроллера групповых адресов вы можете импортировать готовый проект из ETS, или настроить всё мышкой в [[Wiren Board Web Interface | веб-интерфейсе контроллера]] Wiren Board. Инструкцию по импорту смотрите в разделе [[#Импорт из ETS | Импорт из ETS]].
Для настройки Контроллера групповых адресов вы можете импортировать готовый проект из ETS, или настроить всё мышкой в [[Wiren Board Web Interface | веб-интерфейсе контроллера]] Wiren Board. Инструкцию по импорту смотрите ниже на этой странице, в разделе «Импорт из ETS».


{{Wbincludes:WebUI Change Access Level}}
{{Wbincludes:WebUI Change Access Level}}
[[Image: WB KNX Settings.png |300px|thumb|right| Пример настройки KNX-устройства в веб-интерфейсе контроллера Wiren Board ]]
[[Image: WB KNX Settings.png |300px|thumb|right| Пример настройки KNX-устройства в веб-интерфейсе контроллера Wiren Board ]]
Активация сервиса:
 
Первичная настройка:
# Настройте knxd по [[Knxd#Настройка | инструкции]].
# Перейдите '''Settings''' → '''Configs''' → '''KNX Group Object Configuration'''.
# Перейдите '''Settings''' → '''Configs''' → '''KNX Group Object Configuration'''.
# Установите флажок '''Enable the KNX Gateway Device: knx/data'''
# Установите флажок '''Enable the KNX Gateway Device: knx/data'''
Строка 126: Строка 134:


=== Структурная схема взаимодействия ===
=== Структурная схема взаимодействия ===
Устройства ''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].
Строка 133: Строка 141:


Пояснения к схеме:
Пояснения к схеме:
* '''KNX TP''' — KNX сеть, витая пара
* '''KNX TP''' — KNX сеть, витая пара.
* '''KNX device #1, group object #n''' — Групповой объект n устройства 1, привязанный к групповому адресу GA1,  с флагами на чтение и передачу, и типом датапоинта Dpt1. Пример: датчик.
* '''KNX device #1, group object #n''' — Групповой объект '''n''' устройства 1, привязанный к групповому адресу GA1,  с флагами на чтение и передачу, и типом данных Dpt1, например, датчик.
* '''KNX device #2, group object #m''' — Групповой объект m устройства 2, привязанный к групповому адресу GA1,  с флагами на запись, и типом датапоинта Dpt1. Пример: исполнительное устройство.
* '''KNX device #2, group object #m''' — Групповой объект '''m''' устройства 2, привязанный к групповому адресу GA1,  с флагами на запись, и типом данных Dpt1, например, исполнительное устройство.
* '''knxd''' — knxd сервер в контроллере WB
* '''knxd''' — knxd сервер в контроллере Wiren Board.
* '''wb-mqtt-knx''' — сервис для преобразования групповых объектов в MQTT устройства и контролы
* '''wb-mqtt-knx''' — сервис для преобразования групповых объектов в MQTT устройства и контролы.
* '''representation in terms of MQTT''' — представление групповых объектов терминах MQTT
* '''representation in terms of MQTT''' — представление групповых объектов в терминах MQTT.
* '''Web UI/ wb-rules''' — пользовательский интерфейс или движок правил
* '''Web UI/ wb-rules''' — пользовательский интерфейс или движок правил.
* '''/Device1/control1''' — контрол, связанный с групповым адресом и типом датапоита 1
* '''/Device1/control1''' — контрол, связанный с групповым адресом и типом данных 1.


=== Передача данных исполнительному устройству при изменении состояния датчика ===
=== Передача данных исполнительному устройству при изменении состояния датчика ===
Строка 146: Строка 154:
# Датчик при изменении своего состояния посылает исполнительному устройству 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. Подписчиками, в том числе являются движок правил и пользовательский интерфейс.


Строка 157: Строка 165:
Как это работает:
Как это работает:
# Изменяется значение контрола, посредством публикации значения в топик <code>/devices/Device1/controls/control1/on</code>, что приводит к публикации значения в топик <code>/devices/Device1/controls/control1/</code>.
# Изменяется значение контрола, посредством публикации значения в топик <code>/devices/Device1/controls/control1/on</code>, что приводит к публикации значения в топик <code>/devices/Device1/controls/control1/</code>.
# Значение из топика <code>/on</code> преобразуются в данные для KNX телеграммы в зависимости от типа датапоинта, связанного с контролом. # Формируется KNX телеграмма с KNX данными, адресом получателя GA1 и APCI командой ''GroupWalueWrite''. Адрес получателя равен групповому адресу связанному с контролом.
# Значение из топика <code>/on</code> преобразуются в данные для KNX телеграммы в зависимости от типа данных, связанного с контролом.  
# Формируется KNX телеграмма с KNX данными, адресом получателя GA1 и APCI командой ''GroupWalueWrite''. Адрес получателя равен групповому адресу связанному с контролом.
# KNX телеграмма передаётся всем клиентам knxd и в KNX TP сеть.
# KNX телеграмма передаётся всем клиентам knxd и в KNX TP сеть.
# KNX телеграмму получают устройства 1 и 2. Обработка пакета c командой ''GroupValueWrite'' происходит только в групповом объекте m в устройстве 2, из-за того что в нём выставлен флаг W.
# KNX телеграмму получают устройства 1 и 2. Обработка пакета c командой ''GroupValueWrite'' происходит только в групповом объекте m в устройстве 2, из-за того что в нём выставлен флаг W.
Строка 201: Строка 210:


== Полезные ссылки ==
== Полезные ссылки ==
* [[KNX | О KNX]]
* [https://github.com/wirenboard/wb-mqtt-knx Описание сервиса wb-mqtt-knx на GitHub]
* [https://github.com/wirenboard/wb-mqtt-knx Описание сервиса wb-mqtt-knx на GitHub]
* [[KNX_Quick_start | Инструкция по настройке KNX-устройств]]
* [[KNX_Quick_start | Инструкция по настройке KNX-устройств]]
* [[knxd | Описание и настройка роутера Knxd]]
* [[WBE2-I-KNX_KNX_Extension_Module | Модуль расширения WBE2-I-KNX]]
* [[WBE2-I-KNX_KNX_Extension_Module | Модуль расширения WBE2-I-KNX]]
wb_editors
31

правка