Обновление для KNX <=> MQTT Сервиса

Добавили в Wiren Board поддержку работы с отдельными групповыми адресами KNX.

Теперь для группового адреса KNX создаётся индивидуально настраиваемый MQTT контрол. Это означает, что можно работать с групповым адресом как с MQTT контролом: отправлять в него и принимать из него значения, например: битов, целых знаковых и беззнаковых чисел, чисел с плавающей точкой.

Тип контрола связан типом данных для группового адреса. Тип данных для конкретного группового адреса можно настроить в веб редакторе конфигурационных файлов.

Несколько групповых адресов группируются в одно или несколько произвольных логических MQTT устройств.

На данный момент поддерживаются пять типов данных групповых адресов и один с возможностью обработки сырых данных:

  • Raw_Value - обработка сырых данных: массив данных в виде строки (APDU payload);
  • 1.xxx_B1 - 1-битовое значение;
  • 2.xxx_B2 - 2-битовое значение;
  • 5.xxx_8-Bit_Unsigned_Value - 8-битовое целое без знака;
  • 6.xxx_V8 - 8-битовое целое со знаком;
  • 9.xxx_2-Octet_Float_Value - 2-байтовое значение с плавающей точкой.

Количество поддерживаемых типов данных со временем будет увеличено.

Проект в ETS:
Screenshot_20211202_150451

Редактор файла конфигурации для wb-mqtt-knx.conf:

Пример создаваемых логических устройств и контролов:

Планируется добавление консольной утилиты экспорта конфигурации KNX устройств из инструментов ETS6 и ETS5 в конфигурационный файл Wiren Board для работы с групповыми адресами.

О проблемах с новым wb-mqtt-knx и с обновлением на него можно писать в ответах к этой теме.

Интересно. так а как и что нужно обновить, где искать?

Доступно в Тестинг-релизе.

Я правильно понимаю, что данный контрол может работать без WBE2-I-KNX ? Если да, то подскажите, как его нужно настраивать? Есть демо чемодан, обновил его на тестинг релиз, увидел данные в топике /devices/knx/controls/data
Попытался создать устройства, данные перестали приходить, устройство не создалось.
Очень странно… Выключил “Enable the KNX Gateway Device: knx/data” и управление устройством заработало! Буду дальше тестировать.

Пожалуйста, ознакомьтесь с документацией на обновлённый сервис:
https://wirenboard.com/wiki/MQTT_KNX_V2

Ознакомился. Но все равно не получил ответа, почему при включенном чекбоксе “Enable the KNX Gateway Device: knx/data” управление не работает, а при выключенном - работает.
KNX-OFF-log.txt (2.4 КБ)
KNX-ON-log.txt (8.9 КБ)

Попробуйте удалить в веб интерфейсе на вкладке “Устройства”, устройство с названием “knx” и перезапустите wb-mqtt-knx сервис.

Если при включенном чекбоксе “Enable the KNX Gateway Device: knx/data” управление не заработало, то отправьте лог, пожалуйста.

ага, понял. нельзя было называть устройство “knx”. Оно конфликтовало с топиком devices/knx/controls/data. Переименовал созданное устройство - появилась дата…
Другой вопрос. запускаю wb-knx-ets-tool butler-office.xml wb-mqtt-knx.conf получаю ответ:
vector::_M_range_check: __n (which is 2) >= this->size() (which is 2)
эту утилита еще не работает?

Если это возможно, пришлите, пожалуйста конфиг.
Это сильно нам облегчит поиск проблемы.

1 Like

Возможно ли средствами WB без использования скриптов сделать связь Группового адреса с релейным выходом( аналоговым 0-10В, диммером )? Если нет, планируется ли такой функционал?

Теоретически - возможно, конечсно, но работать будет тот же скрипт, просто располагаться в системном каталоге.
Это в основном бессмыссленно, так как вараантов комбинаций взаимодействий может быть бесконечное количество, жесткую и в тоже время универсальную логику не придумаьть.
А простой скрипт в пять строчек “(параметр X стал истиной?) - (Установить параметр Y в 20) - (иначе параметр Y обнулить)” гибок и прост.

Центральная идея - разделить устройства и управление ими. Есть универсальная “шина” - Mqtt
которая отражается в интерфейс и с работает “мостом” между устройствами. А вы предлагаете “обойти” ее и управлять одним устройством с помощью другого.

А что не получается сделать?

Все получается. Я в контексте простых ситуаций, когда групповой адрес меняет конкретный параметр. Таким образом из веба можно все настроить на уровне кликов и прохождение телеграмм будет прозрачным из разных типов шин. А вот если что-то более сложное, тогда через скрипты.

Сейчас можно задать тип данных получаемый по групповому адресу, почему бы его по аналогии с KNX не связать сразу с устройством( устройствами ).

Опять же, это будет большой плюшкой в удобстве настройки WB и относится к категории было бы удобно.

Помогите с написанием подобного скрипта. Т.е. сейчас “дерево” объектов выглядит примерно так:

/devices/knx_main1_middle0/controls/control1_0_1
/devices/knx_main1_middle0/controls/control1_0_2
/devices/knx_main1_middle1/controls/control1_1_1
/devices/knx_main1_middle1/controls/control1_1_2

и так далее. Сложность в том, что нужно создать виртуальные устройства, которые будут УПРАВЛЯТЬ через один адрес (/devices/knx_main1_middle0/controls/control1_0_1), а считывать СТАТУС с другого (/devices/knx_main2_middle0/controls/control2_0_1). Можете показать пример, в котором реализовано такое “устройство”, и как быть, если таких устройств больше 100, и они разного типа (свичи, диммеры, термостаты, шторы)?
Как все это привести в более понятный для WB, а в дальнейшем и для SprutHub вид? Пробовал сделать через шаблон в SH, но там проблема в том, что topicSearch может быть только один, а у меня одно “устройство” находится в разных топиках.

В следующей итерации “статус” , точнее групповой адрес статуса можно будет указать в как опцию группового адреса.
Сейчас - да, делать отдельное (виртуальное) устройство.

А когда ожидается “следующая” итерация?
Можете подсказать примеры скриптов по созданию виртуального устройства?

Планируете ли добавить поддержку данных?
10.001 - время и 11.001 - дата
17.001 - номер сцены и 18.001 - контроль сцены

Запрос создал, скорей всего добавим. Существующие - описаны в wb-mqtt-knx/datapointformat.md at master · wirenboard/wb-mqtt-knx · GitHub

Спасибо. Покрутил еще все внимательно, не хватает следующих типов данных:

  • 232 - цвет RGB
  • 250, 251, 252,253,254 - LED RGB+W
  • 21 - контрольные статусы ( опционально )
    Готов помочь с тестированием =)