KNX Quick start: различия между версиями
Brainroot (обсуждение | вклад) |
Brainroot (обсуждение | вклад) |
||
(не показано 27 промежуточных версий 3 участников) | |||
Строка 2: | Строка 2: | ||
== Используемое оборудование == | == Используемое оборудование == | ||
Чтобы на примере показать работу с 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]]. | ||
Строка 14: | Строка 14: | ||
[[Image: KNX_connect_controller.png|300px|thumb|right| Подключение контроллера Wiren Board к шине [[KNX]] с помощью модуля [[WBE2-I-KNX KNX Extension Module | WBE2-I-KNX]], установленного в разъём '''MOD1''']] | [[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]]. | ||
# Подключите контроллер к сети используя Ethernet (Wi-Fi или Debug Network работать не будет) | |||
# Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем '''MOD1''', значит шину нужно подключить к разъёму '''mod_out_1''' по схеме: положительный провод на клемму O1, отрицательный — клемма O3. | # Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем '''MOD1''', значит шину нужно подключить к разъёму '''mod_out_1''' по схеме: положительный провод на клемму O1, отрицательный — клемма O3. | ||
# Подключите на шину блок питания KNX и термостат. | # Подключите на шину блок питания KNX и термостат. | ||
# Включите питание | # Включите питание — светодиоды на термостате начнут мигать примерно раз в секунду (1Гц). | ||
=== Компьютер === | === Компьютер === | ||
Строка 23: | Строка 24: | ||
# Установите ETS5. | # Установите ETS5. | ||
# Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX. | # Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX. | ||
# Добавьте новый интерфейс, для этого перейдите '''Системная шина''' → '''Показать интерфейсы''', выделите '''IP Tunneling''' и укажите имя из | # Добавьте новый интерфейс, для этого перейдите '''Системная шина''' → '''Показать интерфейсы''', выделите '''IP Tunneling''' и укажите имя из [[Knxd#Работа с ETS5 | настроек knxd]]. | ||
# Нажмите справа внизу кнопку '''Тест'''. Если вы получили ответ '''ОК''' — интерфейс настроен верно. | # Нажмите справа внизу кнопку '''Тест'''. Если вы получили ответ '''ОК''' — интерфейс настроен верно. | ||
# Нажмите кнопку '''Выбрать'''. | # Нажмите кнопку '''Выбрать'''. | ||
<gallery mode=" | <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 | ||
Строка 38: | Строка 39: | ||
== Теория KNX == | == Теория KNX == | ||
=== Адресация === | === Адресация === | ||
KNX | Про групповые адреса и телеграммы читайте на странице [[KNX]]. | ||
Примеры групповых адресов: | |||
* Выключатели с адресами 0.0.1 и 0.0.2 | |||
* Реле с адресом 0.0.5 | |||
=== Реализация в контроллере Wiren Board === | |||
Сервис [[MQTT_KNX | wb-mqtt-knx]] получает и отправляет телеграммы через knxd и модуль расширения [[WBE2-I-KNX_KNX_Extension_Module|WBE2-I-KNX]]. | |||
== Обнаружение KNX-устройства == | == Обнаружение KNX-устройства == | ||
Строка 78: | Строка 65: | ||
=== Диагностика неисправностей === | === Диагностика неисправностей === | ||
[[Image: ETS_search_check.png |400px|thumb|right| Управление светодиодом на устройстве из программы ETS5]] | [[Image: ETS_search_check.png |400px|thumb|right| Управление светодиодом на устройстве из программы ETS5]] | ||
В процессе обнаружения устройств, ETS5 отправляет в KNX-шину телеграммы, которые можно отследить. Для этого нужно [[MQTT#Слежение за состоянием устройства / подписка на топик|подписаться]] на топик <code>/devices/knx/controls/data</code>: | В процессе обнаружения устройств, ETS5 отправляет в KNX-шину телеграммы, которые можно отследить. Для этого нужно [[MQTT#Слежение за состоянием устройства / подписка на топик|подписаться]] на топик <code>/devices/knx/controls/data</code>: | ||
Строка 111: | Строка 95: | ||
Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств: | Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств: | ||
# Скачайте базу устройств по с [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 сайта производителя]. | ||
# Распакуйте архив и импортируйте нужные устройства. | # Распакуйте архив и импортируйте нужные устройства. | ||
Строка 121: | Строка 105: | ||
Всё, у нас есть автоматически созданное «здание», которе называется так же как проект. | Всё, у нас есть автоматически созданное «здание», которе называется так же как проект. | ||
<gallery mode="traditional" widths =" | <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 | Импорт устройств | ||
Строка 129: | Строка 113: | ||
=== Устройство === | === Устройство === | ||
Физическое размещение — это этаж, комната или строение. | Физическое размещение — это этаж, комната или строение. | ||
Строка 156: | Строка 139: | ||
Теперь в проекте есть два устройства. | Теперь в проекте есть два устройства. | ||
== Взаимодействие контроллера 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]] |
Текущая версия на 11:05, 12 июля 2024
Используемое оборудование
Чтобы на примере показать работу с KNX-устройствами мы взяли оборудование:
- Контроллер Wiren Board 6.7.
- Модуль расширения WBE2-I-KNX.
- Термостат KNX Albrecht Jung A2178.
- Выключатель двухканальный ABB US/U2.2 Universal-Schnittstelle, 2fach.
- Блок питания KNX Mean Well KNX-20E-640.
- Компьютер с ОС Windows.
Подготовка
Контроллер
![](/wiki/images/thumb/e/eb/KNX_connect_controller.png/300px-KNX_connect_controller.png)
- Установите и настройте модуль расширения WBE2-I-KNX.
- Подключите контроллер к сети используя Ethernet (Wi-Fi или Debug Network работать не будет)
- Подключите шину KNX на клеммы модуля. Например, модуль установлен в разъем MOD1, значит шину нужно подключить к разъёму mod_out_1 по схеме: положительный провод на клемму O1, отрицательный — клемма O3.
- Подключите на шину блок питания KNX и термостат.
- Включите питание — светодиоды на термостате начнут мигать примерно раз в секунду (1Гц).
Компьютер
- Скачайте программу ETS5 с официального сайта.
- Проверьте, чтобы в системе был Microsoft NET framework 4.8. Если его нет — установите. В комплекте с программой идёт Microsoft NET framework 4.6, но с ним программа работает плохо.
- Установите ETS5.
- Настройте связь с контроллером. Контроллер Wirenboard будет работать в качестве шлюза в сеть KNX.
- Добавьте новый интерфейс, для этого перейдите Системная шина → Показать интерфейсы, выделите IP Tunneling и укажите имя из настроек knxd.
- Нажмите справа внизу кнопку Тест. Если вы получили ответ ОК — интерфейс настроен верно.
- Нажмите кнопку Выбрать.
Теория KNX
Адресация
Про групповые адреса и телеграммы читайте на странице KNX.
Примеры групповых адресов:
- Выключатели с адресами 0.0.1 и 0.0.2
- Реле с адресом 0.0.5
Реализация в контроллере Wiren Board
Сервис wb-mqtt-knx получает и отправляет телеграммы через knxd и модуль расширения WBE2-I-KNX.
Обнаружение KNX-устройства
Обычно адрес нового устройства на шине неизвестен.
Но его легко обнаружить:
- Из документации на термостат видно, что есть кнопка L и светодиод K, в нормальном режиме скрытые под регулятором.
- Нажимаем отвёрткой кнопку — светодиод начнёт мигать, сигнализируя от том, что устройство перешло в режим программирования.
- В программе 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 проект.
Если это первый проект на этом компьютере, то нужно скачать и импортировать базу устройств:
- Скачайте базу устройств по с сайта производителя.
- Распакуйте архив и импортируйте нужные устройства.
После установки базы устройств:
- Создайте новый проект, для этого нажмите кнопку с зелёным плюсом «+».
- Укажите произвольное имя проекта.
- В разделе Топология оставьте TP (Twisted Pair).
Всё, у нас есть автоматически созданное «здание», которе называется так же как проект.
Устройство
Физическое размещение — это этаж, комната или строение.
Добавим новую комнату:
- В окне Задания, нажмите на стрелку рядом с названием функции.
- Из открывшегося списка выберем пункт Комнаты.
- Далее нажмите на кнопку Добавить комнату и введите наименование.
Теперь, когда у нас есть физическое размещения для устройства (комната), мы можем добавить само устройство:
- В окне Задания, в списке комнат выберите ту, где стоит устройство.
- Нажмите кнопку Добавить устройство. Откроется каталог устройств.
- В каталоге устройств выберите Производитель → Тип устройства и найдите наш термостат 2178TS. Здесь важно не ошибиться и выбрать устройство с полностью совпадающим наименованием — все буквы и цифры важны.
- Нажимаем кнопку Добавить.
- Смените адрес устройства. Зайдите в свойства устройства и в правой части экрана измените адрес. В нашем примере мы установили 1.1.4.
По алгоритму выше, добавьте второе устройство — выключатель. Он сразу есть в каталоге ETS5 и скачивать базу не нужно. Ему назначим адрес 1.1.5
Теперь в проекте есть два устройства.
Взаимодействие контроллера Wiren Board с KNX устройствами
Настройка в ETS
В нотации KNX принято индивидуальные адреса записывать через точки, а групповые — через слеши, поэтому:
- Добавьте для канала A устройства US/U2.2 индивидуальный адрес
1.1.5
. - Создайте новый групповой адрес
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.
Настройка в контроллере Wiren Board
Здесь мы рассмотрим пример, дополнительную информацию смотрите в описании сервиса 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) в состояние, указанное в телерамме.