Knxd: различия между версиями

Материал из Wiren Board
Строка 33: Строка 33:
<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>
<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>


Порядок параметров Важен. При не правильном расположении KNXD может работать не правильно или не работать вовсе.
Порядок параметров Важен. При неправильном расположении KNXD может работать не правильно или не работать вовсе.


После изменения конфиг файла сохраните изменения и перезапустите knxdː
После изменения конфиг файла сохраните изменения и перезапустите knxdː

Версия 20:58, 26 мая 2020

Описание

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 рекомендуем воспользоваться программой 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.

Примеры работы и описание на странице в вики

Работа с ETS5

Правильно настроенный knxd позволяет использовать контроллер в качестве KNX шлюза для настройки физических устройств KNX через программу ETS5.

Настройка шлюза

Для того, что бы программа ETS5 могла связаться с KNX устройствами нужно что бы у knxd были включены интерфейсы мультикаст сервера и физической шины KNX (драйвер ncn5120) . Для этого в конфигурации knxd нужно указать опции -D -T -R -S и интерфейс -b ncn5120:/dev/ttyKNX. Подробнее об опциях -DTRS и -b можно причитать Тут