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

Материал из Wiren Board
(не показаны 34 промежуточные версии 4 участников)
Строка 1: Строка 1:
== Описание ==
== Описание ==


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


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


* ''Локальный Unix-сокет и/или локальный TCP порт'' — создаются при установке knxd (/lib/systemd/system/knxd.socket). Порт по умолчанию '''6720''', путь к UNIX-сокет файлу на контроллере WB по умолчанию <code>/var/run/knx</code>.
'''Физическая шина KNX''' - драйвер ncn5120 или usb. Требуется физическое подключение шины KNX к контроллеру.  


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


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


* ''Драйверы интерфейсов'' (-b) — например, драйвер ncn5120 или usb для подключения физических шин KNX.
Подробнее об интерфейсах на '''[https://github.com/knxd/knxd/wiki/Command-line-parameters#interface странице github knxd/wiki]'''
 
== Установка ==
 
Запустите консоль и введите командуː
 
<pre>$ apt update && apt install knxd knxd-tools</pre>


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


{{Wbincludes:WebUI Change Access Level}}
Для упрощения настройки KNXD рекомендуем воспользоваться программой WB-KNXD-CONFIG (описание ниже на этой же странице) . Либо произвести настройку в ручнуюː
 
Для правильной работы программы необходимо добавить пользователя knxd в группу dialoutː
 
<pre>$ addgroup knxd dialout</pre>
 
=== knxd.conf ===


Настройка knxd:
Далее необходимо отредактировать конфигурационный файл /etc/knxd.conf
# Зайдите в [[Wiren Board Web Interface | веб-интерфейс]] и перейдите '''Settings''' → '''Configs''' → '''KNXD Configuration'''.
# Укажите настройки и нажмите кнопку '''Save''', чтобы их сохранить.


В поле ''Other Options'' вы можете указать дополнительные опции, которые будут добавлены в конец файла настроек knxd. Например, если у вас установлено два модуля расширения [[WBE2-I-KNX KNX Extension Module | WBE2-I-KNX]], то в это поле нужно добавить строку: <code>-b ncn5120:/dev/ttyKNX2</code>.
Содержимое этого файла необходимо заменить строкой видаː


[[Image: Knxd Confoguration.png |Настройка Knxd ]]
<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, которая делается через веб-интерфейс, но может быть полезно при нестандартных конфигурациях.
 
Рекомендуемая структура параметровː


Как указывать параметры:
<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>


Хотя эти разделы необязательные, для работы knxd в качестве маршрутизатора, нужно как минимум два вида интерфейсов.
Хотя все разделы являются необязательными, для работы knxd в качестве маршрутизатора необходимо иметь как минимум два вида интерфейсов.


=== Global-section ===
==== Global-section ====


Глобальные параметры влияют на поведение knxd и не затрагивают при этом работу интерфейсов.
Глобальные параметры влияют на поведение knxd и не затрагивают при этом работу интерфейсов.
Строка 46: Строка 52:
     -f, --error=LEVEL          set error level
     -f, --error=LEVEL          set error level


=== Address-section ===
==== Address-section ====


     -e, --eibaddr=EIBADDR            Физический KNX-адрес самого knxd (default 0.0.1)
     -e, --eibaddr=EIBADDR            Физический KNX-адрес самого knxd (default 0.0.1)
     -E, --client-addrs=ADDRSTART:n  Указывает knxd выдавать KNX-адреса узлам из IP-сети в диапазоне ADDRSTART..ADDRSTART+n  
     -E, --client-addrs=ADDRSTART:n  Указывает knxd выдавать KNX-адреса узлам из IP-сети в диапазоне ADDRSTART..ADDRSTART+n  


=== Сache-section ===
Подробное описание ключей и структуры конфиг файла можно найти на '''[https://github.com/knxd/knxd/wiki/Command-line-parameters#structure-of-parametrization странице github knxd/wiki ]'''. Перед работой с KNXD рекомендуем с ней ознакомится.  
 
    -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 создает файл <code>/lib/systemd/system/knxd.socket</code>, в котором они уже прописаны. Однако, при необходимости, можно прописать их в файл конфигурации дополнительно.
 
    -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)
 
Опции <code>-t</code> и <code>-f</code> так же могут быть использованы в качестве модификаторов интерфейсов.
 
==== Interface ====


    -b, --layer2=driver:[arg]  Layer-2 Драйвер (на пример ncn5120:/dev/ttyKNX)
Сохраните изменения и перезапустите knxdː


==== Поддерживаемые драйверы интерфейсов ====
<pre>$ service knxd restart</pre>
 
* 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 или аналогичная программа подключает их к последовательному порту).
 
Оригинальное описание ключей и структуры конфиг файла можно найти на '''[https://github.com/knxd/knxd/wiki/Command-line-parameters#structure-of-parametrization странице github knxd/wiki ]'''.


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


Примеры работы и описание тут: [[KnxTool]]
Примеры работы и описание на [https://wirenboard.com/wiki/index.php?title=KnxTool странице в вики]


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


=== Настройка шлюза ===
=== Настройка шлюза ===
Для связи программы ETS5 с KNX устройствами надо включить у knxd интерфейсы мультикаст-сервера и физической шины KNX (драйвер ncn5120) нужно в веб-интерфейсе включить опции <code>-D -T -R -S</code>.
Для того, что бы программа ETS5 могла связаться с KNX устройствами нужно что бы у knxd были включены интерфейсы мультикаст сервера и физической шины KNX (драйвер ncn5120) . Для этого в конфигурации knxd нужно указать опции -D -T -R -S и интерфейс -b ncn5120:/dev/ttyKNX. Подробнее об опциях '''-DTRS''' и '''-b''' можно причитать '''[https://github.com/knxd/knxd/wiki/Command-line-parameters#server-modifiers Тут]'''
 
[[Файл:WB-KNXD-CONFIG.png|добавление параметров]]
 
== Работа с Wiren Board ==
Пользователь работает с knxd через сервис [[MQTT_KNX | wb-mqtt-knx]], который преобразовывает KNX-телеграммы в значения MQTT-топиков.
 
Сценарии автоматизации пишутся с помощью правил [[wb-rules]] или через [[Node-Red]].

Версия 16:04, 26 мая 2020

Описание

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 

Подробное описание ключей и структуры конфиг файла можно найти на странице 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 можно причитать Тут