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

Материал из Wiren Board
(Поменял displaytitle, форматирование и немного поправил текст)
(→‎Используемое оборудование: Исправлена опечатка)
Метки: правка с мобильного устройства правка из мобильной версии Расширенная мобильная правка
 
(не показаны 42 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{Draft}}
{{DISPLAYTITLE: Быстрый старт работы с KNX на контроллере Wiren Board}}
{{DISPLAYTITLE: Быстрый старт работы с KNX на контроллере Wiren Board}}


== Используемое оборудование ==
== Используемое оборудование ==
Чтобы на примере показать работу с KNX-устрйоствами мы взяли оборудование:
Чтобы на примере показать работу с KNX-устройствами мы взяли оборудование:
* Контроллер [[Wiren Board | Wiren Board 6.7]].
* Контроллер [[Wiren Board | Wiren Board 6.7]].
* Модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]].
* Модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]].
Строка 13: Строка 12:
== Подготовка ==
== Подготовка ==
=== Контроллер ===
=== Контроллер ===
[[Файл:KNX_connect_controller.png|200px|thumb|right|Подключение шины к клеммам модуля расширения]]
[[Image: KNX_connect_controller.png|300px|thumb|right| Подключение контроллера Wiren Board к шине [[KNX]] с помощью модуля [[WBE2-I-KNX KNX Extension Module | WBE2-I-KNX]], установленного в разъём '''MOD1''']]
# Установите и настройте модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]].
# Установите и настройте модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]].
# Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем '''MOD1''', значит шину нужно подключить к разъёму '''mod_out_1''' по схеме: положительный провод на клемму O1, отрицательный — клемма O3.
# Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем '''MOD1''', значит шину нужно подключить к разъёму '''mod_out_1''' по схеме: положительный провод на клемму O1, отрицательный — клемма O3.
# Подключите на шину блок питания KNX и термостат.
# Подключите на шину блок питания KNX и термостат.
# Включите питание на БД — на светодиоды термостате начнут мигать примерно раз в секунду (1Гц).
# Включите питание — светодиоды на термостате начнут мигать примерно раз в секунду (1Гц).


=== Компьютер ===
=== Компьютер ===
Строка 24: Строка 23:
# Установите ETS5.
# Установите ETS5.
# Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX.
# Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX.
# Добавьте новый интерфейс, для этого перейдите '''Системная шина''' → '''Показать интерфейсы''', выделите '''IP Tunneling''' и укажите имя из файла конфигурации [Knxd#Работа с ETS5 | knxd]].
# Добавьте новый интерфейс, для этого перейдите '''Системная шина''' → '''Показать интерфейсы''', выделите '''IP Tunneling''' и укажите имя из [[Knxd#Работа с ETS5 | настроек knxd]].
# Нажмите справа внизу кнопку '''Тест'''. Если вы получили ответ '''ОК''' — интерфейс настроен верно.
# Нажмите справа внизу кнопку '''Тест'''. Если вы получили ответ '''ОК''' — интерфейс настроен верно.
# Нажмите кнопку '''Выбрать'''.
# Нажмите кнопку '''Выбрать'''.


<gallery mode="traditional " widths ="400px" heights="250px">
<gallery mode="packed " heights="150px">
Image: ETS_setup_0.png | Установка ETS5 — архив с программой
Image: ETS_setup_0.png | Установка ETS5 — архив с программой
Image: ETS_setup_1.png | Установка ETS5
Image: ETS_setup_1.png | Установка ETS5
Image: ETS_setup_2.png | Установка ETS5
Image: ETS_setup_2.png | Установка ETS5
</gallery>
<gallery mode="traditional " widths ="450px" heights="300px">
Image: ETS_start_0.png | Первый запуск
Image: ETS_start_0.png | Первый запуск
Image: ETS_config_0.png | Добавление интерфейса
Image: ETS_config_0.png | Добавление интерфейса
Строка 42: Строка 38:
== Теория KNX ==
== Теория KNX ==
=== Адресация ===
=== Адресация ===
KNX-устройства на шине могут иметь адреса от 0.0.1 до 15.15.255, в протоколе под адрес отведено 16 бит. При назначении адресов устройствам обычно использует схему «область-линия-устройство».
Про групповые адреса и телеграммы читайте на странице [[KNX]].


Все устройства на шине равноправны могут передавать телеграммы.
Примеры групповых адресов:
* Выключатели с адресами 0.0.1 и 0.0.2
* Реле с адресом 0.0.5


Протокол KNX предусматривает два режима:
=== Реализация в контроллере Wiren Board ===
* Системный — это режим, в котором устройства передают телеграммы напрямую друг другу. Используется для программирования при настройке системы.
* Основной или рабочий — в этом режиме устройства передают телеграммы на «групповые адреса».


'''Групповые адреса''' — это виртуальные, то есть отсутствующие физически «функции».
Сервис [[MQTT_KNX | wb-mqtt-knx]] получает и отправляет телеграммы через knxd и модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]].
'''Телеграмма''' — это единица обмена информацией в протоколе KNX.


Пример:
Есть выключатели с адресами 0.0.1 и 0.0.2
Реле с адресом 0.0.5
{{note|warn| Нужно завершить мысль '''У выключателей…'''}}
== Обнаружение KNX-устройства ==
== Обнаружение KNX-устройства ==
Обычно адрес нового устройства на шине неизвестен.
Обычно адрес нового устройства на шине неизвестен.
Строка 67: Строка 57:
# После того, как устройство будет найдено — нажмите кнопку Стоп, чтобы не занимать шину.
# После того, как устройство будет найдено — нажмите кнопку Стоп, чтобы не занимать шину.


<gallery mode="traditional " widths ="450px" heights="300px">
<gallery mode="traditional" widths ="250px" heights="195px">
Image: Program_button_KNX_A_2178.png | Фрагмент инструкции на термостат KNX Albrecht Jung
Image: Program_button_KNX_A_2178.png | Фрагмент инструкции на термостат KNX Albrecht Jung
Image: ETS_search_program.png | Окно поиска устройств в режиме программирования
Image: ETS_search_program.png | Окно поиска устройств в режиме программирования
Строка 104: Строка 94:


Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств:
Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств:
# Скачайте базу устройств по с [https://www.jung.de/en/750/downloads/general-downloads/?%7E%5B3112%5D%5Bselection%5D%5B0%5D=11 | сайта производителя].
# Скачайте базу устройств по с [https://www.jung.de/en/750/downloads/general-downloads/?%7E%5B3112%5D%5Bselection%5D%5B0%5D=11 сайта производителя].
# Распакуйте архив и импортируйте нужные устройства.
# Распакуйте архив и импортируйте нужные устройства.


Строка 114: Строка 104:
Всё, у нас есть автоматически созданное «здание», которе называется так же как проект.
Всё, у нас есть автоматически созданное «здание», которе называется так же как проект.


<gallery mode="traditional " widths ="300px" heights="250px">
<gallery mode="traditional" widths ="180px">
Image: ETS_Jung_database.png | Файл базы устройств
Image: ETS_Jung_database.png | Файл базы устройств
Image: ETS_Jung_database_import.png | Импорт устройств
Image: ETS_Jung_database_import.png | Импорт устройств
Строка 122: Строка 112:


=== Устройство ===
=== Устройство ===
Физическое размещение — это этаж, комната или строение.
Физическое размещение — это этаж, комната или строение.


Строка 137: Строка 126:
# Смените адрес устройства. Зайдите в свойства устройства и в правой части экрана измените адрес. В нашем примере мы установили 1.1.4.
# Смените адрес устройства. Зайдите в свойства устройства и в правой части экрана измените адрес. В нашем примере мы установили 1.1.4.


<gallery mode="traditional " widths ="300px" heights="250px">
<gallery mode="traditional " widths ="250px" heights="200px">
Image: ETS_createProject_03.png | Добавление комнаты
Image: ETS_createProject_03.png | Добавление комнаты
Image: ETS_createProject_04.png | Добавление устройств
Image: ETS_createProject_04.png | Добавление устройств
Строка 149: Строка 138:
Теперь в проекте есть два устройства.
Теперь в проекте есть два устройства.


== Телеграммы ==
== Взаимодействие контроллера Wiren Board с KNX устройствами==
=== Настройка в ETS ===
В нотации KNX принято индивидуальные адреса записывать через точки, а групповые — через слеши, поэтому:
# Добавьте для '''канала A''' устройства '''US/U2.2''' индивидуальный адрес <code>1.1.5</code>.
# Создайте новый групповой адрес <code>1/1/55</code>.
 
<gallery mode="packed" heights="150px" caption="Настройка адресов">
Image: ETS sampleProject_config_A.png | Конфигурирование '''канала А''' как кнопки
Image: ETS sampleProject_create_group_address.png | Создание группового адреса
</gallery>
 
После настройки загрузите модуль в прикладную программу и проверьте, что при замыкании '''входа A''' отправляются телеграммы на указанный выше групповой адрес:
<syntaxhighlight lang="console">
# knxtool vbusmonitor1 local:/var/run/knx
L_Busmon: BC 11 05 09 37 E1 00 81 09 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 01
L_Busmon: BC 11 05 09 37 E1 00 80 08 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 00
L_Busmon: BC 11 05 09 37 E1 00 81 09 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 01
</syntaxhighlight>
То же самое вы сможете наблюдать при мониторинге шины в ETS.
 
[[Image: ETS sampleProject_bus monitor.png |900px|Мониторинг шины в ETS]]
=== Настройка в контроллере Wiren Board ===
[[Image: ETS sampleProject_wb-mqtt-knx.conf_01.png.png |400px|thumb|right| Создание контрола с группововым адресом]]
[[Image: ETS sampleProject_devices switch.png.png |400px|thumb|right| Групповой адрес в Devices]]
 
Здесь мы рассмотрим пример, дополнительную информацию смотрите в [[MQTT_KNX_V2 | описании сервиса wb-mqtt-knx]].
 
Настраиваем устройство в веб интерфейсе:
* '''Device ID''' будет именем '''устройства''', то есть частью пути к MQTT топику
* '''Title''' - именем окна в Devices, произвольное
* '''Control ID''' - именем канала устройства
* '''Title''' именем канала в Devices, произвольное
 
В '''Devices''' групповой адрес контрола можно узнать, если навести курсор мыши на его название.
 
=== Взаимодействие с правилами ===
[[Image: ETS sampleProject devices rule.png |300px|thumb|right| Вывод сообщений в лог]]
 
Изменение состояния контрола '''1.1.5/SwitchA''' можно использовать для управления любыми устройствами, подключенными к контроллеру, в том числе и другими KNX устройствами.
 
Допустим, нужно включать и выключать выход [[Wiren_Board#Универсальные входы/выходы A1-A4|A1]] контроллера Wiren Board в зависимости от состояние контрола '''1.1.5/SwitchA''', тогда правило на [[wb-rules | wb-rules]] будет примерно таким:
<syntaxhighlight lang="bash">
//KNX_integration_01.js
var KNXdev = "1.1.5/SwitchA"
var WBdev ="wb-gpio/A1_OUT"
 
defineRule("SwitchKNX_01", {
  whenChanged: KNXdev, //при изменении переключателя
  then: function (newValue, devName, cellName) { //выполняй следующие действия
    log.info("Устройство", devName, "контрол", cellName, "новое значение", newValue)
    dev[WBdev] = newValue;
  }
});
</syntaxhighlight>
 
Правило будет вызываться при любом изменении контрола (при приходе телеграммы) и устанавливать устройство '''wb-gpio/A1_OUT''' (выход A1) в состояние, указанное в телерамме.
 
== Полезные ссылки ==
* [[MQTT_KNX_V2 | Описание сервиса wb-mqtt-knx в Вики]]
* [[WBE2-I-KNX_KNX_Extension_Module | Модуль расширения WBE2-I-KNX]]

Текущая версия на 14:50, 27 декабря 2023


Используемое оборудование

Чтобы на примере показать работу с KNX-устройствами мы взяли оборудование:

Подготовка

Контроллер

Подключение контроллера Wiren Board к шине KNX с помощью модуля WBE2-I-KNX, установленного в разъём MOD1
  1. Установите и настройте модуль расширения WBE2-I-KNX.
  2. Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем MOD1, значит шину нужно подключить к разъёму mod_out_1 по схеме: положительный провод на клемму O1, отрицательный — клемма O3.
  3. Подключите на шину блок питания KNX и термостат.
  4. Включите питание — светодиоды на термостате начнут мигать примерно раз в секунду (1Гц).

Компьютер

  1. Скачайте программу ETS5 с официального сайта.
  2. Проверьте, чтобы в системе был Microsoft NET framework 4.8. Если его нет — установите. В комплекте с программой идёт Microsoft NET framework 4.6, но с ним программа работает плохо.
  3. Установите ETS5.
  4. Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX.
  5. Добавьте новый интерфейс, для этого перейдите Системная шинаПоказать интерфейсы, выделите IP Tunneling и укажите имя из настроек knxd.
  6. Нажмите справа внизу кнопку Тест. Если вы получили ответ ОК — интерфейс настроен верно.
  7. Нажмите кнопку Выбрать.

Теория KNX

Адресация

Про групповые адреса и телеграммы читайте на странице KNX.

Примеры групповых адресов:

  • Выключатели с адресами 0.0.1 и 0.0.2
  • Реле с адресом 0.0.5

Реализация в контроллере Wiren Board

Сервис wb-mqtt-knx получает и отправляет телеграммы через knxd и модуль расширения WBE2-I-KNX.

Обнаружение KNX-устройства

Обычно адрес нового устройства на шине неизвестен.

Но его легко обнаружить:

  1. Из документации на термостат видно, что есть кнопка L и светодиод K, в нормальном режиме скрытые под регулятором.
  2. Нажимаем отвёрткой кнопку — светодиод начнёт мигать, сигнализируя от том, что устройство перешло в режим программирования.
  3. В программе ETS5 переходим Системная шинаДиагностированиеИндивидуальные адресаРежим программирования и нажимаем кнопку Старт.
  4. После того, как устройство будет найдено — нажмите кнопку Стоп, чтобы не занимать шину.

Диагностика неисправностей

Управление светодиодом на устройстве из программы ETS5

В процессе обнаружения устройств, ETS5 отправляет в KNX-шину телеграммы, которые можно отследить. Для этого нужно подписаться на топик /devices/knx/controls/data:

mosquitto_sub -v -t /devices/knx/#
/devices/knx/controls/data/meta/type data
/devices/knx/meta/name wb-knx
/devices/knx/controls/data i:0/0/36 g:0/0/0 IndividualAddrRequest 0x00
/devices/knx/controls/data i:15/15/255 g:0/0/0 IndividualAddrResponse 0x00
/devices/knx/controls/data i:0/0/36 g:0/0/0 IndividualAddrRequest 0x00
/devices/knx/controls/data i:15/15/255 g:0/0/0 IndividualAddrResponse 0x00
/devices/knx/controls/data i:0/0/36 g:0/0/0 IndividualAddrRequest 0x00
/devices/knx/controls/data i:15/15/255 g:0/0/0 IndividualAddrResponse 0x00
/devices/knx/controls/data i:0/0/36 g:0/0/0 IndividualAddrRequest 0x00
/devices/knx/controls/data i:15/15/255 g:0/0/0 IndividualAddrResponse 0x00

Также для диагностики можно вывести телеграммы из шины с помощью knxtool:

knxtool vbusmonitor1 local:/var/run/knx 
L_Busmon: B0 00 18 00 00 E1 01 00 B7 :L_Data system from 0.0.24 to 0/0/0 hops: 06 T_Data_Broadcast A_IndividualAddress_Read
L_Busmon: B0 FF FF 00 00 E1 01 40 EF :L_Data system from 15.15.255 to 0/0/0 hops: 06 T_Data_Broadcast A_IndividualAddress_Response

Ещё можно управлять светодиодом K из ETS5, для этого перейдите в меню Системная шинаДиагностированиеИндивидуальные адресаПроверка индивидуального адреса

Создание проекта

Новый проект

Создадим в программе ETS5 проект.

Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств:

  1. Скачайте базу устройств по с сайта производителя.
  2. Распакуйте архив и импортируйте нужные устройства.

После установки базы устройств:

  1. Создайте новый проект, для этого нажмите кнопку с зелёным плюсом «+».
  2. Укажите произвольное имя проекта.
  3. В разделе Топология оставьте TP (Twisted Pair).

Всё, у нас есть автоматически созданное «здание», которе называется так же как проект.

Устройство

Физическое размещение — это этаж, комната или строение.

Добавим новую комнату:

  1. В окне Задания, нажмите на стрелку рядом с названием функции.
  2. Из открывшегося списка выберем пункт Комнаты.
  3. Далее нажмите на кнопку Добавить комнату и введите наименование.

Теперь, когда у нас есть физическое размещения для устройства (комната), мы можем добавить само устройство:

  1. В окне Задания, в списке комнат выберите ту, где стоит устройство.
  2. Нажмите кнопку Добавить устройство. Откроется каталог устройств.
  3. В каталоге устройств выберите ПроизводительТип устройства и найдите наш термостат 2178TS. Здесь важно не ошибиться и выбрать устройство с полностью совпадающим наименованием — все буквы и цифры важны.
  4. Нажимаем кнопку Добавить.
  5. Смените адрес устройства. Зайдите в свойства устройства и в правой части экрана измените адрес. В нашем примере мы установили 1.1.4.

По алгоритму выше, добавьте второе устройство — выключатель. Он сразу есть в каталоге ETS5 и скачивать базу не нужно. Ему назначим адрес 1.1.5

Теперь в проекте есть два устройства.

Взаимодействие контроллера Wiren Board с KNX устройствами

Настройка в ETS

В нотации KNX принято индивидуальные адреса записывать через точки, а групповые — через слеши, поэтому:

  1. Добавьте для канала A устройства US/U2.2 индивидуальный адрес 1.1.5.
  2. Создайте новый групповой адрес 1/1/55.

После настройки загрузите модуль в прикладную программу и проверьте, что при замыкании входа A отправляются телеграммы на указанный выше групповой адрес:

# knxtool vbusmonitor1 local:/var/run/knx
L_Busmon: BC 11 05 09 37 E1 00 81 09 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 01 
L_Busmon: BC 11 05 09 37 E1 00 80 08 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 00 
L_Busmon: BC 11 05 09 37 E1 00 81 09 :L_Data low from 1.1.5 to 1/1/55 hops: 06 T_Data_Group A_GroupValue_Write (small) 01

То же самое вы сможете наблюдать при мониторинге шины в ETS.

Мониторинг шины в ETS

Настройка в контроллере Wiren Board

Создание контрола с группововым адресом
Групповой адрес в Devices

Здесь мы рассмотрим пример, дополнительную информацию смотрите в описании сервиса wb-mqtt-knx.

Настраиваем устройство в веб интерфейсе:

  • Device ID будет именем устройства, то есть частью пути к MQTT топику
  • Title - именем окна в Devices, произвольное
  • Control ID - именем канала устройства
  • Title именем канала в Devices, произвольное

В Devices групповой адрес контрола можно узнать, если навести курсор мыши на его название.

Взаимодействие с правилами

Вывод сообщений в лог

Изменение состояния контрола 1.1.5/SwitchA можно использовать для управления любыми устройствами, подключенными к контроллеру, в том числе и другими KNX устройствами.

Допустим, нужно включать и выключать выход A1 контроллера Wiren Board в зависимости от состояние контрола 1.1.5/SwitchA, тогда правило на wb-rules будет примерно таким:

//KNX_integration_01.js
var KNXdev = "1.1.5/SwitchA"
var WBdev ="wb-gpio/A1_OUT"

defineRule("SwitchKNX_01", {
  whenChanged: KNXdev, //при изменении переключателя
  then: function (newValue, devName, cellName) { //выполняй следующие действия
    log.info("Устройство", devName, "контрол", cellName, "новое значение", newValue)
    dev[WBdev] = newValue;
  }
});

Правило будет вызываться при любом изменении контрола (при приходе телеграммы) и устанавливать устройство wb-gpio/A1_OUT (выход A1) в состояние, указанное в телерамме.

Полезные ссылки