Knxd: различия между версиями
м (Поправил форматирование) |
|||
(не показано 6 промежуточных версий этого же участника) | |||
Строка 13: | Строка 13: | ||
* ''Драйверы интерфейсов'' (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX. | * ''Драйверы интерфейсов'' (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX. | ||
== Установка == | |||
Запустите консоль и введите команду: | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
apt update && apt install knxd | apt update && apt install knxd | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Настройка == | == Настройка == | ||
Для упрощения настройки KNXD на контроллере Wiren Board, рекомендуем воспользоваться программой [[WB-KNXD-CONFIG]]. Либо произвести настройку вручную. | |||
Для правильной работы программы необходимо добавить пользователя knxd в группу <code>dialout</code>ː | |||
<syntaxhighlight lang="bash"> | |||
addgroup knxd dialout | |||
</syntaxhighlight> | |||
=== knxd.conf === | |||
Далее отредактируйте файл <code>/etc/knxd.conf</code>, содержимое этого файла нужно заменить строкой вида: | |||
== | <pre> KNXD_OPTS=" -e 1.1.255 -E 1.1.5:50 -D -T -R -n WirenboardKNX -S 224.0.23.12:3671 -b ncn5120:/dev/ttyKNX " </pre> | ||
{{note|info| Важен порядок параметров, иначе, KNXD может работать не правильно или не работать вовсе.}} | |||
После изменения конфигурационного файла сохраните изменения и перезапустите knxdː | |||
<syntaxhighlight lang="bash"> | |||
service knxd restart | |||
</syntaxhighlight> | |||
== Структура параметров == | |||
Рекомендуемая структура параметров: | |||
<pre> knxd [global-section] [address-section] [cache-section] [multicast-server-section] [local-listener-section] [interface-sections]</pre> | <pre> knxd [global-section] [address-section] [cache-section] [multicast-server-section] [local-listener-section] [interface-sections]</pre> | ||
Строка 131: | Строка 143: | ||
=== Настройка шлюза === | === Настройка шлюза === | ||
Для связи программы ETS5 с KNX устройствами надо включить у knxd интерфейсы мультикаст-сервера и физической шины KNX (драйвер ncn5120) | Для связи программы ETS5 с KNX устройствами надо включить у knxd интерфейсы мультикаст-сервера и физической шины KNX (драйвер ncn5120). Укажите в конфигурации knxd опции <code>-D -T -R -S</code> и интерфейс <code>-b ncn5120:/dev/ttyKNX</code>. Подробнее об опциях '''-DTRS''' и '''-b''' '''[https://github.com/knxd/knxd/wiki/Command-line-parameters#server-modifiers тут]''' | ||
[[Файл:WB-KNXD-CONFIG.png|добавление параметров]] | Сделать можно двумя способами: | ||
* с использованием [[WB-KNXD-CONFIG]]: | |||
*:[[Файл:WB-KNXD-CONFIG.png|500px|center|добавление параметров]] | |||
* редактированием файла конфигурации [[Knxd#knxd.conf|knxd.conf]] | |||
== Работа с Wiren Board == | == Работа с Wiren Board == | ||
KNXD полноценно работает на контроллере Wiren Board. | |||
Для взаимодействия контроллера с физической шиной KNX, рекомендуем приобрести модуль [[KNX Module for WB6 (WBE2-I-KNX)]]. | |||
Для взаимодействия KNXD с [[MQTT]], рекомендуем использовать мост [[MQTT_KNX]] (wb-mqtt-knx). | |||
А для написания сценариев автоматизации KNX устройств — [[Движок правил wb-rules]]. |
Версия 20:45, 25 июня 2021
Описание
KNXD — роутер KNX данных. Перенаправляет их из одного источника в другой. Например, из физической шины KNX в KNX IP или, как в нашем случае, в локальный сокет. Поэтому для правильной работы KNXD в настройках надо указывать больше одного интерфейса.
Это может быть:
- Локальный Unix-сокет и/или локальный TCP порт — создаются при установке knxd (/lib/systemd/system/knxd.socket). Порт по умолчанию 6720, путь к UNIX-сокет файлу на контроллере WB по умолчанию
/var/run/knx
.
- ip — knxd может подключиться к шлюзу EIBnet/IP, либо к другому контроллеру с knxd.
- Server (-S в настройках) — knxd может выступать в качестве мультикаст-сервера, для подключения к нему EIBnet/IP-клиентов.
- Драйверы интерфейсов (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX.
Установка
Запустите консоль и введите команду:
apt update && apt install knxd
Настройка
Для упрощения настройки KNXD на контроллере Wiren Board, рекомендуем воспользоваться программой WB-KNXD-CONFIG. Либо произвести настройку вручную.
Для правильной работы программы необходимо добавить пользователя knxd в группу dialout
ː
addgroup knxd dialout
knxd.conf
Далее отредактируйте файл /etc/knxd.conf
, содержимое этого файла нужно заменить строкой вида:
KNXD_OPTS=" -e 1.1.255 -E 1.1.5:50 -D -T -R -n WirenboardKNX -S 224.0.23.12:3671 -b ncn5120:/dev/ttyKNX "
Важен порядок параметров, иначе, KNXD может работать не правильно или не работать вовсе. После изменения конфигурационного файла сохраните изменения и перезапустите knxdː
service knxd restart
Структура параметров
Рекомендуемая структура параметров:
knxd [global-section] [address-section] [cache-section] [multicast-server-section] [local-listener-section] [interface-sections]
Хотя эти разделы необязательные, для работы knxd в качестве маршрутизатора, нужно как минимум два вида интерфейсов.
Global-section
Глобальные параметры влияют на поведение knxd и не затрагивают при этом работу интерфейсов.
-d, --daemon[=FILE] Запустить программу в виде демона. Вывод будет записан в файл (если указан). Не указывайте этот параметр в knxd.conf, так как knxd.service и так запускает программу в фоновом режиме. -p, --pid-file=FILE Записать PID процесса в файл. Не используйте этот параметр в knxd.conf. Используйте systemctl для работы с knxd. -t, --trace=MASK set trace flags (bitmask) -f, --error=LEVEL set error level
Address-section
-e, --eibaddr=EIBADDR Физический KNX-адрес самого knxd (default 0.0.1) -E, --client-addrs=ADDRSTART:n Указывает knxd выдавать KNX-адреса узлам из IP-сети в диапазоне ADDRSTART..ADDRSTART+n
Сache-section
-c, --GroupCache Включить кэширование групповой сети
Multicast-server-section
Этот раздел состоит из двух частейː [server modifiers] — модификаторы сервера и [server] — сервер.
Server modifiers
Модификаторы сервера изменяют поведение мультикаст-сервера, указываются перед параметром --Server
--allow-forced-broadcast Treat routing counter 7 as per KNX spec (dangerous) -n, --Name=SERVERNAME Произвольное имя сервера в сети (default is 'knxd') -D, --Discovery Разрешить серверу отвечать на запросы на обнаружение и описание в сети. -R, --Routing Включить маршрутизацию EIBnet/IP на сервере -T, --Tunnelling Включить туннелирование EIBnet/IP на сервере
Server
Параметр --Server указывается после модификаторов сервера [server modifiers].
-S, --Server[=ip[:port]] Запустить EIBnet/IP мультикаст сервер (default address:port 224.0.23.12:3671)
Local-listener-section
В отличие от мультикаст-сервера, локальный слушатель не имеет широковещательного адреса и не вещает о себе в сеть. Требуется прямое подключение клиентов. Возможно использование нескольких TCP и/или UNUX-сокетов. При установке knxd создает файл /lib/systemd/system/knxd.socket
, в котором они уже прописаны. Однако, при необходимости, можно прописать их в файл конфигурации дополнительно.
-i, --listen-tcp[=PORT] Слушать TCP порт (default 6720) -u, --listen-local[=FILE] Слушать локальный Unix-сокет файл (default /var/run/knx)
Interface-sections
Для каждого интерфейса возможно использование модификаторов и параметров. Можно использовать несколько физических интерфейсов. Так же как мультикаст-сервер, параметры интерфейсов состоят из двух частей: модификаторы интерфейса [interface modifiers] и сам interface.
Interface modifiers
-N, --no-monitor the next Layer2 interface may not enter monitor mode --no-emi-send-queuing wait for L_Data_ind while sending (for all EMI based backends) --no-tunnel-client-queuing do not assume KNXnet/IP Tunneling bus interface can handle parallel cEMI requests --tpuarts-ack-all-group tpuarts backend should generate L2 acks for all group telegrams --tpuarts-ack-all-individual tpuarts backend should generate L2 acks for all individual telegrams --tpuarts-disch-reset tpuarts backend should use a full interface reset (for Disch TPUART interfaces)
Опции -t
и -f
так же могут быть использованы в качестве модификаторов интерфейсов.
Interface
-b, --layer2=driver:[arg] Layer-2 Драйвер (на пример ncn5120:/dev/ttyKNX)
Поддерживаемые драйверы интерфейсов
- ft12 — Подключается через Serial порт без какого-либо драйвера по протоколу FT1.2 к BCU 2.
- ip — Подключается по протоколу маршрутизации EIBnet / IP с использованием мультикаст-адреса (на пример к шлюзу EIBnet / IP или другому knxd). Шлюз должен быть настроен на маршрутизацию необходимых адресов.
- ipt — Подключается по протоколу туннелирования EIBnet / IP через IP шлюз. Шлюз должен быть настроен на маршрутизацию необходимых адресов.
- tpuarts — Подключается к KNX через TPUART (через последовательный интерфейс).
- usb — Подключается через USB-интерфейс KNX.
- ncn5120 — Подключается к KNX через NCN5120.
- dummy — Не рабочий драйвер. Используется только для тестирования.
- tpuarttcp & ncn5120tcp — Используются тот же драйвера, что и их не-TCP-аналоги, но подключается к удаленному хосту (где socat или аналогичная программа подключает их к последовательному порту).
Оригинальное описание ключей и структуры конфиг файла можно найти на странице github knxd/wiki .
KnxTool
Полезная утилита для работы с KNXD.
Примеры работы и описание тут: KnxTool
Работа с ETS5
Правильно настроенный knxd позволяет использовать контроллер в качестве KNX-шлюза для настройки физических устройств KNX через программу ETS5. Настроен как шлюз по умолчанию, редактировать обычно не требуется.
Настройка шлюза
Для связи программы ETS5 с KNX устройствами надо включить у knxd интерфейсы мультикаст-сервера и физической шины KNX (драйвер ncn5120). Укажите в конфигурации knxd опции -D -T -R -S
и интерфейс -b ncn5120:/dev/ttyKNX
. Подробнее об опциях -DTRS и -b тут
Сделать можно двумя способами:
- с использованием WB-KNXD-CONFIG:
- редактированием файла конфигурации knxd.conf
Работа с Wiren Board
KNXD полноценно работает на контроллере Wiren Board.
Для взаимодействия контроллера с физической шиной KNX, рекомендуем приобрести модуль KNX Module for WB6 (WBE2-I-KNX).
Для взаимодействия KNXD с MQTT, рекомендуем использовать мост MQTT_KNX (wb-mqtt-knx).
А для написания сценариев автоматизации KNX устройств — Движок правил wb-rules.