Если вы не знакомы с системами автоматизации и стандартом KNX, то нужную информацию можете получить в гугле или с официальных сайтов. Если же вы работаете с данным стандартом — то многие вещи вам будут понятны, и, возможно, вас, как и меня, давно интересует вопрос каким же образом можно получить доступ к физической шине KNX, минуя IP роутеры. Далее я покажу каким образом я решил для себя эту задачу, используя Raspberry Pi и модуль KNX BAOS 838 kBerry от Weinzierl.  Стандарт KNX подразумевает собой децентрализованную систему, работоспособную в отсутствии центрального контроллера ПЛК. Децентрализация обеспечивает надежность, но отсутствие ПЛК в системе лишает нас необходимой нам гибкости. Можно использовать различные IP шлюзы, и общаться по UPD с сервера, но это решение не рассматривал, поскольку доступ напрямую к шине выглядит надежнее. На рынке можно найти решения для данной задачи, со следующими из них я плотно работал: Некоторые решения хороши, но отталкивает цена, плюс хотелось бы использовать больше гибкости в программировании. Задача решилась с использованием Raspberry Pi и модуль Weinzierl KNX BAOS Module 838 kBerry.
Стоимость модуля ~70 евро, в сумме с Raspberry Pi + блок питания, корпус на DIN рейку выходит около 150 евро. В качестве среды выполнения используется nodejs, из зависимостей модуль "serialport" для общения с UART. Наше приложение подключается по серийному порту к модулю BAOS 838 и общается посредством ObjectServer protocol, описание которого можно найти по ссылке в конце статьи. Фрейм с данными заключается в протокол FT1.2 следующим образом: Также есть фреймы с постоянной длиной, такие как reset request, reset indication, acknowledge frame. Reset request отправляется при открытие соединения, reset indication отправляется с модуля baos 838 к Raspberry Pi при сбросе модуля, acknowledge отправляет каждая сторона при приеме данных.  Данные data состоят из следующих полей: Схема коммуникации: Модуль подключается к GPIO контактам платы Raspberry Pi, более подробно можно узнать по ссылкам в конце статьи. Как и любое KNX устройство, BAOS 838 module конфигурируется через ETS. Аппликация в данном случае используется "KNX BAOS 830", ее можно скачать с официального сайта производителя. Устройство поддерживает до 1000 групповых адресов. Первым делом устанавливаем raspbian-stretch-lite, настраиваем доступ по ssh. Далее, настраиваем UART интерфейс. Для Raspberry Pi 3: Из /boot/cmdline.txt убираем запись console=serial0,115200 Добавляем пользователя в группу dialout: Перезагружаемся Устанавливаем nodejs, git: Подготовка закончена, переходим к нашему проекту. Для тестирования можно использовать простой интерфейс для командной строки. Устанавливаем: Запускаем: Далее мы открываем порт командой open. По умолчанию открывается соединение с устройством /dev/ttyAMA0, если в системе другой интерфейс, используем опцию -p, --port. Далее, мы можем получить информацию о сконфигурированных датапоинтах: В моем случае первый — датчик температуры, далее идет несколько однобайтных значения, несколько однобитных, и строковое значение dpt16. Получаем значения: Значения возвращаются в непреобразованном виде, для преобразования можно использовать библиотеку knx-dpts-baos, поддерживающую типы от dpt1 до dpt18. Устанавливаем значение: bobaos-cli можно использовать для быстрого тестирования, установки, чтения данных с шины. Устанавливаем npm пакет: Добавляем в наш скрипт: Вывод должен выглядить примерно так: Теперь мы вправе экспериментировать как нам угодно, создавать любые скрипты, использовать возможности nodejs, npm пакетов. Впереди еще много работы, но начало положено хорошее, что радует и мотивирует продолжать дальше.