новый бесплатный open-source-адаптер для KNX
Функции
- Встроенная функция импорта файлов .knxproj (ETS4, ETS5, ETS6) с поддержкой паролей.
- Чтение/запись/передача/обновление флагов из объектов ETS ComObject.
- Вывод DPT из ComObjects при отсутствии DPT на уровне GA.
- Распределение комнат (перечисление комнат) в соответствии со структурой здания ETS.
- Импорт адресов групп в формате XML в качестве резервного варианта
- Защищенное туннелирование KNX IP через файл ключа .knxkeys или пароль
- Стабильный и надежный стек KNX на базе KNXUltimate
- Автоматическое кодирование/декодирование KNX-датаграмм для большинства DPT, чтение и запись в необработанном виде для остальных.
- Поддержка чтения, записи и ответа GroupValue
- Генерация псевдонимов для объединения значков действий и статусов в единый объект ioBroker.
- Прямая связь: подключите любое состояние ioBroker к адресу группы KNX.
- Поддерживает все стили адресации групп (3-уровневый, 2-уровневый, свободный).
- Бесплатный открытый исходный код, не зависит от облачных сервисов, работает в автономном режиме.
Установка
Найдите "openknx" в списке адаптеров и установите его, нажав на символ "+".
Конфигурация адаптера

Нажмите «Сохранить и закрыть» или «Сохранить», чтобы перезапустить адаптер и применить изменения.
- Обнаружение — сканирует сеть на наличие всех доступных IP-шлюзов KNX. Рекомендуется сначала выбрать локальный сетевой интерфейс, а затем запустить обнаружение — IP-адрес, порт и физический адрес шлюза заполняются автоматически.
- Локальный сетевой интерфейс IPv4 — сетевой интерфейс сервера ioBroker, который может взаимодействовать с IP-шлюзом KNX. Выберите его перед запуском обнаружения.
- IP-адрес шлюза KNX -- IP-адрес вашего шлюза KNX. Заполняется автоматически при обнаружении.
- Порт -- обычно 3671. Заполняется автоматически по результатам обнаружения.
- Протокол -- тип подключения к IP-шлюзу KNX. Туннелирование UDP является методом по умолчанию для большинства IP-интерфейсов и маршрутизаторов KNX (например, Weinzierl, MDT, ABB). Туннелирование TCP обеспечивает более надежное соединение и поддерживается более новыми шлюзами — рекомендуется, если доступно. Многоадресная маршрутизация подключается через маршрутизацию KNXnet/IP (многоадресная группа 224.0.23.12) и предназначена для IP-маршрутизаторов KNX, выступающих в качестве линейных соединителей — туннельное соединение не устанавливается, и несколько клиентов могут одновременно получать доступ.
- Физический KNX-адрес — индивидуальный адрес, используемый адаптером на шине KNX (например, 1.1.250). Должен быть настроен как дополнительный адрес в IP-интерфейсе в ETS и не должен использоваться другим устройством.
- Минимальная задержка отправки между двумя кадрами [мс] -- защищает шину KNX от перегрузки слишком быстрыми телеграммами. Увеличьте это значение, если в журнале появляются ошибки DISCONNECT_REQUEST (например, до 80-150 мс).
- Используйте common.type boolean для однобитного перечисления вместо number -- DPT-1 (переключение) представляется в ioBroker как логический тип (true/false) вместо number (0/1). Включите эту опцию для лучшей совместимости с виджетами VIS и скриптами, которые ожидают логические значения.
- Считывание значений KNX при запуске -- все объекты с флагом авточтения считываются с шины KNX при первом подключении после запуска адаптера для синхронизации текущих состояний.
- не выдавать предупреждения по неизвестным адресам групп KNX -- подавлять записи предупреждений в журнале при получении телеграмм для групп KNX, не настроенных в адаптере. Полезно в системах с большим количеством групп KNX, где в адаптере используется только их подмножество.
- Стиль группового адреса — определяет представление группового адреса в соответствии с вашей конфигурацией ETS. Поддерживаются все 3 стиля, которые преобразуются в 3-уровневый формат для хранения: 3-уровневый (1/3/5), 2-уровневый (1/25) или свободный (300). Объединенное имя группового адреса и группы должно быть уникальным в дереве объектов ioBroker.
Импорт проекта ETS (.knxproj или .xml)
Диалоговое окно импорта принимает как файлы .knxproj (рекомендуется), так и файлы .xml.
Импорт .knxproj (рекомендуется)
Импортируйте файл проекта ETS напрямую. Это обеспечит получение наиболее полных данных:
- В ETS сохраните свой проект (Файл > Сохранить). Файл .knxproj находится в каталоге вашего проекта ETS.
- Если проект защищен паролем, введите пароль проекта в поле «Пароль» рядом с кнопкой импорта.
- Загрузите файл .knxproj в адаптер через диалоговое окно импорта.
- Импорт начинается немедленно и отображает приблизительный ход выполнения в зависимости от размера файла.
Преимущества по сравнению с импортом XML:
- Флаги чтения/записи/передачи/обновления из объектов ComObject (вместо значений по умолчанию read=true, write=true)
- Вывод DPT из ComObjects, если DPT не назначен для GA.
- Назначение комнат из структуры здания/местоположения ETS (автоматически создает перечисление комнат)
- Флаг автоматического чтения, полученный из флага ComObject ReadOnInit.
- Поддерживает проекты ETS4, ETS5 и ETS6 (включая проекты, защищенные паролем)
- В будущих версиях ETS все будет работать автоматически — обновление адаптера не требуется для новых патчей/минорных релизов ETS.
После успешного импорта файла .knxproj используйте функцию "Создать псевдонимы" ниже, чтобы связать групповые алгоритмы статуса с соответствующими групповыми алгоритмами действий.
Импорт XML (резервный вариант)
Если вы не можете использовать файл .knxproj, вы можете экспортировать адреса групп из ETS в формате XML:

- В ETS перейдите в раздел «Групповые адреса», выберите «Экспорт групповых адресов» и выберите «Экспорт XML в последней версии формата».
Формат ETS4 не поддерживается, он не содержит информации DPT.
- Загрузите XML-файл экспорта ETS в адаптер через диалоговое окно импорта.
- Импорт начинается немедленно, и по завершении предоставляется отчет о состоянии.
Подсказка: Если у вас разные подтипы DPT для GA и объектов связи, использующих его, ETS будет использовать наименьший номер DPT. Убедитесь, что все элементы используют желаемый тип данных. GA без базового типа DPT не может быть импортирован. Проекты ETS4 необходимо преобразовать в ETS5 или более позднюю версию с установленным типом DPT для GA.
Параметры импорта
- Не перезаписывать существующие объекты IOB — пропускать существующие объекты связи во время импорта, добавлять только новые.
- Удаление существующих объектов IOB, отсутствующих в файле импорта ETS -- удаление объектов из дерева ioBroker, которые больше не существуют в проекте ETS. Полезно для очистки после удаления GA в ETS.
- Удалите все существующие объекты KNX перед импортом (чистый повторный импорт) -- сначала удалите все объекты KNX, а затем импортируйте заново. Используйте это при реструктуризации проекта ETS.
KNX Secure

Адаптер поддерживает туннелирование KNX IP Secure. Настройка выполняется на вкладке "KNX Secure":
- Включить KNX Secure — установите флажок.
- Файл ключей (.knxkeys) — вставьте содержимое файла .knxkeys в текстовое поле. Файл экспортируется в ETS через Дополнительно > Экспорт KNX-ключей.
- Пароль файла ключа — пароль, устанавливаемый при экспорте связки ключей в ETS.
- Альтернативный вариант: Пароль пользователя туннеля — вместо файла ключа пароль туннеля можно ввести напрямую (из конфигурации проекта ETS IP-интерфейса).
- Пароль аутентификации устройства (ключ магистрали) — требуется только в ручном режиме (без файла ключа). Начиная с knxultimate 6.0, MAC-адрес
SESSION_RESPONSEпроверяется во время установления соединения; без этого пароля соединение понижается (соединение по-прежнему устанавливается, но в журнал записывается предупреждение). Если предоставлен файл ключа, это значение извлекается из него автоматически. - Интерфейс туннеля IA — при необходимости укажите индивидуальный адрес интерфейса туннеля (например, 1.1.254).
- Идентификатор пользователя туннеля — значение по умолчанию 2. Изменяйте его только в том случае, если на одном интерфейсе настроено несколько туннельных соединений.
Псевдонимы и миграция GA

В KNX для действий и статуса часто используются отдельные GA. Этот инструмент автоматически объединяет их в Псевдонимы ioBroker, так что чтение и запись осуществляются в одном объекте.
На вкладке предлагаются два варианта:
Вариант A: Псевдонимы (рекомендуется)
Создает объекты-псевдонимы ioBroker, объединяющие действие GA (запись) и статус GA (чтение) в один объект.
- Регулярное выражение для идентификации статусов GA — регулярное выражение для идентификации статуса GA по имени (например, с окончанием "status", "rm", "Rückmeldung"). Это же регулярное выражение используется как для генерации псевдонимов (Вариант A), так и для режима совместимости с KNX (Вариант B).
- Минимальное сходство — насколько строго алгоритм сопоставления фильтрует похожие записи (0 = приблизительное сходство, 1 = точное сходство).
- Путь к псевдонимам -- папка с объектами, где создаются псевдонимы (например,
alias.0.KNX). - Включить диапазон групп в поиск -- используйте полный путь, включая названия групп, для сопоставления, а не только название GA.
- Сгенерировать псевдонимы -- кнопка для запуска генерации псевдонимов. Адаптер должен быть запущен. По завершении отображается количество сгенерированных псевдонимов.
Вариант B: Миграция адаптера knx
Для пользователей, переходящих со старого адаптера KNX, которые хотят, чтобы существующие скрипты, проекты VIS и панели мониторинга продолжали работать без изменений.
- Режим совместимости ioBroker.knx -- внутренне связывает GA статуса с GA действия (как в старом адаптере knx) вместо создания псевдонимов. Использует то же регулярное выражение, что и вариант A.
- Целевое пространство имен -- установите значение
knx.0, чтобы повторно использовать старые пути к объектам адаптера KNX, благодаря чему существующие скрипты, проекты VIS и панели мониторинга продолжат работать без изменений. Значение по умолчанию —openknx.0.
GA-Tools / Прямая ссылка

Технология Direct Link соединяет любое состояние ioBroker (с любого адаптера) с групповым адресом KNX. Изменения во внешнем состоянии записываются в шину KNX, а значения, полученные от KNX, передаются обратно во внешнее состояние.
Выберите Google Analytics из дерева слева. На панели свойств отображаются метаданные Google Analytics (имя, адрес, DPT, флаги). Используйте карточку «Прямая ссылка» справа, чтобы связать иностранный штат.
Режимы связи
- Прямой (1:1) — каждое изменение значения передается в шину KNX без изменений. Используется для датчиков, диммеров или ползунков.
- Триггер (только ВКЛ.) -- передаются только истинные значения (ВКЛ / true / ненулевое значение), ложные значения (ВЫКЛ / false / 0) игнорируются. Используется для триггеров сцен или дверных открывателей, где источник отправляет ВКЛ/ВЫКЛ (нажатие/отпускание).
- Переключение (инвертирование KNX в положении ВКЛ) -- при каждом истинном значении считывается текущее состояние KNX и отправляется инвертированное значение. Ложные значения игнорируются. Используйте для кнопок, которые должны включать/выключать индикатор KNX.
Порог
Минимальное изменение, необходимое перед отправкой на шину KNX. Если абсолютная разница между входящим значением и текущим значением KNX меньше порогового значения, обновление незаметно отбрасывается. Это предотвращает перегрузку шины источниками, отправляющими множество небольших инкрементальных изменений (например, аналоговыми датчиками). Применяется только к числовым значениям. Оставьте поле пустым, чтобы отправлять каждое изменение.
Преобразовать выражение
Выражение JavaScript для преобразования значения перед записью в KNX. Переменная
value хранит текущее значение для записи. Примеры:!!value-- преобразует любое истинное/ложное значение в логическое.value*100-- масштабирование числа с плавающей запятой от 0 до 1 в процентное значение от 0 до 100value>0?100:0-- преобразование порогового значения в двоичный кодMath.round(value)-- округляет значения с плавающей запятой
Выражение convert применяется только в направлении от внешнего состояния к KNX. В обратном направлении (от KNX к внешнему состоянию) значения передаются без преобразования.
Переход с адаптера knx
Самый простой способ: установите целевое пространство имен в
knx.0 в настройках псевдонима. Все существующие скрипты, проекты VIS и панели мониторинга будут автоматически использовать объекты openknx — ручной поиск/замена не потребуется.Если это невозможно, ссылки на
knx.0. необходимо вручную заменить на openknx.0. в соответствующих инструментах (экспорт/импорт потоков Node Red, проекты VIS, скрипты, панели мониторинга Grafana).Концепции автобуса KNX
Флаги подтверждения (ACK) при туннельных соединениях
Приложениям не следует устанавливать флаг ack. Адаптер устанавливает флаг ack, когда данные подтверждены:
| GA — это | устройство с флагом R | устройство без флага R | не подключено |
|---|---|---|---|
| Приложение отправляет GroupValue_Write | ack | ack | no ack |
| Приложение отправляет GroupValue_Read | подтверждение | нет подтверждения | нет подтверждения |
Запись группового значения
Срабатывает при записи в коммуникационный объект в ioBroker. Также срабатывает при получении кадра записи на шине.
GroupValue Read
Может быть активировано добавлением специального комментария или флага качества:
javascript
Скопировано!
setState(myState, { val: false, ack: false, c: "GroupValue_Read" });
setState(myState, { val: false, ack: false, q: 0x10 });
Примечание: Метод комментариев не работает с адаптером JavaScript. Используйте вместо него
q: 0x10.Ответ GroupValue
Если
native.answer_groupValueResponse установлено в значение true, адаптер отвечает сообщением GroupValue_Response на полученное сообщение GroupValue_Read. Этот флаг должен быть установлен только у одного объекта на шине.Сопоставление с флагами KNX
При импорте файлов .knxproj флаги считываются непосредственно из объектов ETS ComObject. При импорте XML применяются разумные значения по умолчанию.
| Флаг | Использование адаптера (.knxproj) | Использование адаптера (импорт XML) |
|---|---|---|
| C: Коммуникация | всегда установлено | всегда установлено |
| R: Чтение | объект common.read | по умолчанию true |
| T: Передача | объект common.update | по умолчанию false |
| W: Запись | объект common.write | по умолчанию true |
| U: Обновление | собственный объект native.update | по умолчанию false |
| I: Инициализация | объект native.autoread | производный от DPT |
native.answer_groupValueResponse необходимо установить вручную при необходимости.Описание объекта ioBroker
Импорт из Google Analytics создает структуру папок в порядке основная группа/промежуточная группа. Адрес каждой группы становится объектом:
json
Скопировано!
{
"_id": "path.and.name.to.object",
"type": "state",
"common": {
"desc": "Basetype: 1-bit value, Subtype: switch",
"name": "Aussen Melder Licht schalten",
"read": true,
"role": "state",
"type": "boolean",
"unit": "",
"write": true
},
"native": {
"address": "0/1/2",
"answer_groupValueResponse": false,
"autoread": true,
"bitlength": 1,
"dpt": "DPT1.001",
"encoding": { "0": "Off", "1": "On" },
"force_encoding": "",
"signedness": "",
"valuetype": "basic"
}
}
Роли определяются на основе DPT (например, переключатель, уровень, дата). Для триггерных DPT, таких как номера сцен, параметр Autoread установлен в значение false.
Ссылка на DPT
Поддерживаемые DPT: 1-22, 26, 28, 29, 213, 222, 232, 235, 237, 238, 242, 249, 251, 275.
Неподдерживаемые DPT записываются в виде шестнадцатеричных строк (исходные данные).
| KNX DPT | Тип | Описание |
|---|---|---|
| DPT-1 | логическое значение | 1 бит, ложь/истина |
| DPT-2 | объект | {"priority":0/1, "data":0/1} |
| DPT-3 | объект | {"decr_incr":0/1, "data":0..7} |
| DPT-4 | строка | один 8-битный символ |
| DPT-5 | число | 8-битное беззнаковое (0..255); DPT-5.001: 0..100%, DPT-5.003: 0..360° |
| DPT-6 | число | 8-битное знаковое (-128..127) |
| DPT-7 | число | 16-битное беззнаковое |
| DPT-8 | число | 2-байтовый знаковый (-32768..32767) |
| DPT-9 | число | 2-байтовое число с плавающей запятой |
| DPT-10 | Дата | время (чч:мм:сс + день недели), часть даты игнорировать |
| DPT-11 | Дата | дата (дд/мм/гггг), часть времени не учитывать |
| DPT-12 | число | 4-байтовый беззнаковый |
| DPT-13 | число | 4-байтовый знаковый |
| DPT-14 | число | 4-байтовое число с плавающей запятой |
| DPT-15 | номер | 4-байтовый (данные доступа) |
| DPT-16 | строка | 14-символьная строка ASCII/ISO-8859-1 |
| DPT-17 | номер | номер сцены, не считывается автоматическим считыванием |
| DPT-18 | объект | {"save_recall":0/1, "scenenumber":0..63}, не считывается функцией авточтения |
| DPT-19 | Дата | дата + время, флаги качества не поддерживаются |
| DPT-20 | число | 1-байтовое перечисление |
| DPT-21 | объект | {"outOfService":bool, "fault":bool, "overridden":bool, ...} |
| DPT-22 | объект | статус RHCC |
| DPT-26 | строка | шестнадцатеричный код, DPT_SceneInfo, не считывается функцией авточтения |
| DPT-28 | строка | Строка Unicode UTF-8, переменной длины |
| DPT-29 | строка | 8-байтовая знаковая (строка из-за ограничений на количество символов в JavaScript) |
| DPT-213 | объект | 4-байтовый временной период (часы, минуты, секунды) |
| DPT-222 | объект | 3x 2-байтовых числа с плавающей запятой |
| DPT-232 | объект | {красный:0..255, зеленый:0..255, синий:0..255} |
| DPT-235 | объект | тарифный счетчик активной энергии |
| DPT-237 | объект | Диагностика DALI |
| DPT-238 | объект | конфигурация сцены, не считывается функцией автоматического чтения |
| DPT-242 | объект | цвет xy (CIE 1931) |
| DPT-249 | объект | переход цветовой температуры |
| DPT-251 | объект | Цвет RGBW |
| DPT-275 | объект | смещение заданного значения температуры |
| другое | строка | шестнадцатеричная строка (исходные данные), например, "0102feff" |
Примечание о DPT для даты/времени: JavaScript и KNX используют разные базовые типы. DPT-10 возвращает объект JS Date, где часть, отвечающая за дату, игнорируется. DPT-11 возвращает объект JS Date, где часть, отвечающая за время, также игнорируется.
Пример использования Node Red
Сложный тип данных DPT-2, передаваемый через функциональный узел, подключенный к выходному узлу ioBroker:
javascript
Скопировано!
msg.payload = { priority: 1, data: 0 };
return msg;
Уровень лога
Включите экспертный режим для переключения между уровнями логирования. По умолчанию — информационный.


Мониторинг
Openknx использует sentry.io для отслеживания ошибок (данные отправляются на сервер ioBroker Sentry в Германии, в псевдонимизированном виде).
Загрузка шины оценивается в объекте
info.busload.Ограничения
— Поддерживается только IPv4
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Автоматическое чтение запускает действия на шине. Проверьте в ETS, установлен ли флаг R/L для групповых объектов, подключенных к GA. Потребители сигнала не должны иметь этот флаг. При необходимости отключите автоматическое чтение для соответствующего объекта.
DISCONNECT_REQUEST при запуске Увеличьте минимальную задержку отправки между двумя кадрами.
Поддерживается ли защищенное туннелирование? Да. Защищенное туннелирование KNX IP поддерживается с помощью файла ключа .knxkeys или пароля.
Ваше мнение важно!
Помогите нам улучшить эту документацию – оставьте отзыв или предложите изменение.
Редактировать на GitHubCopyright 2014-2026 by ioBroker GmbH and ioBroker Community
Cookies
О компанииПолитика конфиденциальности