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

Материал из Wiren Board
м (Поправил форматирование)
Строка 13: Строка 13:
* ''Драйверы интерфейсов'' (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX.
* ''Драйверы интерфейсов'' (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX.


== Установка ==
Пакет knxd установлен на всех контроллерах Wiren Board, если у вас его не оказалось, установить можно командой:  
 
Запустите консоль и введите команду:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt update && apt install knxd
apt update && apt install knxd
</syntaxhighlight>
</syntaxhighlight>
== Настройка ==
== Настройка ==


Для упрощения настройки KNXD на контроллере Wiren Board, рекомендуем воспользоваться программой [[WB-KNXD-CONFIG]]. Либо произвести настройку вручную.
{{Wbincludes:WebUI Change Access Level}}


Для правильной работы программы необходимо добавить пользователя knxd в группу <code>dialout</code>ː
Настройка knxd:
<syntaxhighlight lang="bash">
# Зайдите в [[Wiren Board Web Interface | веб-интерфейс]] и перейдите '''Settings''' → '''Configs''' → '''KNXD Configuration'''.
addgroup knxd dialout
# Укажите настройки и нажмите кнопку '''Save''', чтобы их сохранить.
</syntaxhighlight>


=== knxd.conf ===
В поле ''Other Options'' вы можете указать дополнительные опции, которые будут добавлены в конец файла настроек knxd. Например, если у вас установлено два модуля расширения [[WBE2-I-KNX KNX Extension Module | WBE2-I-KNX]], то в это поле нужно добавить строку:  
 
Далее отредактируйте файл <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">
<syntaxhighlight lang="bash">
service knxd restart
-b ncn5120:/dev/ttyKNX2
</syntaxhighlight>
</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>


Строка 151: Строка 138:


== Работа с Wiren Board ==
== Работа с Wiren Board ==
KNXD полноценно работает на контроллере Wiren Board.  
Knxd полноценно работает на контроллере Wiren Board.  


Для взаимодействия контроллера с физической шиной KNX, рекомендуем приобрести модуль [[KNX Module for WB6 (WBE2-I-KNX)]].  
Для взаимодействия контроллера с физической шиной KNX, рекомендуем приобрести модуль [[WBE2-I-KNX KNX Extension Module | WBE2-I-KNX]].  


Для взаимодействия KNXD с [[MQTT]], рекомендуем использовать мост [[MQTT_KNX]] (wb-mqtt-knx).  
Для взаимодействия Knxd с [[MQTT]], рекомендуем использовать сервис [[MQTT_KNX | wb-mqtt-knx]].  


А для написания сценариев автоматизации KNX устройств — [[Движок правил wb-rules]].
А для написания сценариев автоматизации KNX устройств — [[Движок правил wb-rules]].

Версия 11:19, 10 апреля 2022

Описание

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.

Пакет knxd установлен на всех контроллерах Wiren Board, если у вас его не оказалось, установить можно командой:

apt update && apt install knxd

Настройка

Уровень «Администратор»

Для изменения настроек контроллера вам нужен уровень доступа Администратор, который можно выставить в разделе НастройкиПрава доступа.

После завершения настроек рекомендуем поставить уровень доступа Пользователь или Оператор — это поможет не совершить случайных ошибок при ежедневной работе с веб-интерфейсом.

Настройка knxd:

  1. Зайдите в веб-интерфейс и перейдите SettingsConfigsKNXD Configuration.
  2. Укажите настройки и нажмите кнопку Save, чтобы их сохранить.

В поле Other Options вы можете указать дополнительные опции, которые будут добавлены в конец файла настроек knxd. Например, если у вас установлено два модуля расширения WBE2-I-KNX, то в это поле нужно добавить строку:

-b ncn5120:/dev/ttyKNX2

Структура параметров

Рекомендуемая структура параметров:

 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, рекомендуем приобрести модуль WBE2-I-KNX.

Для взаимодействия Knxd с MQTT, рекомендуем использовать сервис wb-mqtt-knx.

А для написания сценариев автоматизации KNX устройств — Движок правил wb-rules.