Knxd

Материал из Wiren Board

Описание

KNXD - Роутер KNX данных. Позволяет перенаправлять их из одного источника в другой. На пример из физической шины KNX в KNX IP или, как в нашем случае, в локальный сокет. Поэтому для правильной работы KNXD в настройках необходимо указывать несколько интерфейсов (больше одного). Это может бытьː

Локальный сокет - создается при установке knxd (/lib/systemd/system/knxd.socket). Порт по умолчанию 6720, путь к файлу на контроллере WB по умолчанию /var/run/knx

Физическая шина KNX - драйвер ncn5120 или usb. Требуется физическое подключение шины KNX к контроллеру.

ip - knxd может подключиться к шлюзу EIBnet / IP либо к другому контроллеру с knxd.

Server (-S в настройках) - knxd может выступать в качестве мультикаст сервера, для подключения к нему KNX клиентов.

Подробнее об интерфейсах на странице github knxd/wiki

Установка

Запустите консоль и введите командуː

$ apt update && apt install knxd knxd-tools

Настройка

Для упрощения настройки 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 [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      name of the EIBnet/IP server (default is 'knxd')                               
   -D, --Discovery            enable the EIBnet/IP server to answer discovery and description requests (SEARCH, DESCRIPTION)
   -R, --Routing              enable EIBnet/IP Routing in the EIBnet/IP server
   -T, --Tunnelling           enable EIBnet/IP Tunneling in the EIBnet/IP server


Подробное описание ключей и структуры конфиг файла можно найти на странице github knxd/wiki . Перед работой с KNXD рекомендуем с ней ознакомится.

Сохраните изменения и перезапустите knxdː

$ service knxd restart

KnxTool

Полезная утилита для работы с KNXD.

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

Работа с ETS5

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

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

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